Ping スキャンの通信の流れは?Wiresharkで解析してみる

ネットワーク

nmap を用いて Ping スキャンを行い、Wireshark でパケットキャプチャを解析していきます。

nmap における Ping スキャン について

Ping スキャンは、Ping を送信し応答があればそのホストが稼働していると判断する手法です。

nmap では、実行端末とターゲット端末が同一ネットワークの場合と、異なるネットワークにある場合で挙動が変わります。

実行端末とターゲット端末が同一ネットワークの場合は、ARPによりアドレス解決ができると、ホストが稼働していると判断します。

実行端末とターゲット端末が異なるネットワークにある場合は Ping 及び TCP パケットを送信し、どちらかの応答があればホストが稼働していると判断します。
これは、Ping がファイアウォールで遮断されている場合にも稼働状況を判断するためです。

同一ネットワークのホストに Ping スキャンを行う

稼働しているホストへの Ping スキャン

稼働しているホストへ実際に通信を発生させて、パケットキャプチャを解析していきます。
Wireshark によるパケットキャプチャの取得方法や解析については以下記事で説明しているので併せてご参照ください。

以下コマンドを Kali で実行することで Ping スキャンを行うことができます。

nmap -sP 10.0.0.5

「-sP」オプションを付与することで Ping スキャンを行います。
「10.0.0.5 」は Metasploitable の IP アドレスです。

root@kali:~# nmap -sP 10.0.0.5
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-31 10:44 EDT
Nmap scan report for 10.0.0.5
Host is up (0.0011s latency).
MAC Address: 08:00:27:59:5C:61 (Oracle VirtualBox virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 0.22 seconds
root@kali:~#

「Host is up」となっており、ホストが稼働していることがわかりました。Wireshark でパケットを確認します。

Kali からブロードキャスト宛へ ARP 要求を送信し、Metasploitable から ARP 応答があったことがわかります。これによりホストが稼働していると判断しています。

存在しないホストへの Ping スキャン

存在しないホストへ Ping スキャンを行うとどうなるか見ていきます。
今回は、10.0.0.4 を宛先とします。

root@kali:~# nmap -sP 10.0.0.4
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-31 10:52 EDT
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 0.58 seconds
root@kali:~#

結果は「Host seems down.」となっており、ホストは稼働していないと判断しています。

Wireshark でパケットを見てみます。

Kali からブロードキャスト宛のARP要求を送り、その後応答がないため再度 ARP 要求を送信しています。それでも応答がなく、ホストが稼働していないと判断しています。

異なるネットワークのホストに Ping スキャンを行う

「–send-ip」オプションを指定することで、同一ネットワーク内であっても、異なるネットワークのホストに対するスキャンと同じ挙動を再現できます。

稼働しているホストへの Ping スキャン

まずは稼働している Metasploitable に対してスキャンを行います。

root@kali:~# nmap -sP 10.0.0.5 --send-ip
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-31 11:01 EDT
Nmap scan report for 10.0.0.5
Host is up (0.00079s latency).
MAC Address: 08:00:27:59:5C:61 (Oracle VirtualBox virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 0.70 seconds
root@kali:~#

「Host is up」となっており、ホストが稼働していることがわかりました。Wireshark でパケットを確認します。

PingTCP 443 への SYN パケットTCP 80 への ACKを送信していることがわかります。
そして、Ping については応答が返ってきていて、TCP パケットは RST されています。Ping の応答が返ってきていることから、ホストが稼働していると判断しています。

存在しないホストへの Ping スキャン

存在しないホストである 10.0.0.4 に対してスキャンを行ってみます。

root@kali:~# nmap -sP 10.0.0.4 --send-ip
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-31 11:08 EDT
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 3.07 seconds
root@kali:~#

結果は同一ネットワーク内の場合と同じく「Host seems down.」となり、ホストが稼働していないと判断していました。

それでは Wireshark でパケットを確認します。

ブロードキャストへの ARP 要求を3回行い、返答がないことからホストが稼働していないと判断しています。
同一ネットワークの場合は ARP 要求は2回だったため、1回多いようです。

まとめ

同一ネットワークと異なるネットワークへの Ping スキャン結果をそれぞれ確認しました。
Ping スキャンと言っても、単なる Ping の疎通確認とは方法が異なり TCP パケットによる確認も行うため、比較的信頼性は高いと言えるかと思います。

今回は以上です。

くどり

この記事は「ハッキング・ラボのつくりかた 第7章 」をベースに作成しています。購入リンクは以下です。
※Amazonアソシエイトを使用しています。

コメント

タイトルとURLをコピーしました