Task 1 Introduction
ここは、Nmapシリーズ(ネットワークセキュリティ入門モジュールの一部)の3つ目です。
- Null Scan
- FIN Scan
- Xmas Scan
- Maimon Scan
- ACK Scan
- Window Scan
- Custom Scan
さらに、以下を取り上げます。
- Spoofing IP
- Spoofing MAC
- Decoy Scan
- Fragmented Packets
- Idle/Zombie Scan
ファイアウォールやIDSシステムを回避するためのオプションやテクニックについて説明します。また、Nmapからより詳細な情報を取得するためのオプションについても説明します。
■question
※無し
Task 2 TCP Null Scan, FIN Scan, and Xmas Scan
まずは、次の3種類のスキャンをご紹介します。
- Null Scan
- FIN Scan
- Xmas Scan
Null Scan
Nullスキャンでは、フラグは設定されず、6 つのフラグビットはすべて 0 に設定されます。このスキャンは、-sN オプションを使用して選択することができます。フラグが設定されていないTCPパケットは、下図に示すように、オープンポートに到達しても何の応答も引き起こしません。したがって、Nmapの観点では、nullスキャンで応答がないのは、ポートが開いているか、ファイアウォールがパケットをブロックしているかのどちらかであることを示しています。
しかし、ポートが閉じている場合、ターゲットサーバーはRSTパケットで応答することが想定されます。その結果、RSTの応答がないことを利用して、閉じていないポートすなわちopenまたはfilteredを把握することができます。
以下は、Linuxサーバーに対するnullスキャンの例です。実施したnullスキャンでは、ターゲットシステム上の6つのオープンポートを正常に識別しています。null スキャンは、これらのポートが開いていることを確実に示すことはできず、ポートがファイアウォール ルールに起因して応答しない可能性もあります。
pentester@TryHackMe$ sudo nmap -sN MACHINE_IP
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:30 BST
Nmap scan report for MACHINE_IP
Host is up (0.00066s latency).
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open|filtered ssh
25/tcp open|filtered smtp
80/tcp open|filtered http
110/tcp open|filtered pop3
111/tcp open|filtered rpcbind
143/tcp open|filtered imap
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 96.50 seconds
多くのNmapオプションはroot権限を必要とすることに注意してください。Nmapをrootで実行しているのでなければ、上の例のように-sNオプションを使用してsudoを使用する必要があります。
FIN Scan
FINスキャンは、FINフラグが設定されたTCPパケットを送信します。このスキャンタイプは、-sF オプションを使用して選択できます。同様に、TCPポートが開いている場合、応答は送信されません。ここでも、Nmapは、ポートが開いているか、ファイアウォールがこのTCPポートに関連するトラフィックをブロックしているかどうかを確認することはできません。
しかし、ポートが閉じられている場合、ターゲットシステムはRSTで応答します。その結果、どのポートが閉じられているかを知ることができ、この知識を使って開いているポートやフィルタリングされているポートを推測することができるようになります。ファイアウォールの中には、RSTを送信せずにトラフィックを「静かに」ドロップするものがあることは注目に値します。
以下は、Linuxサーバーに対するFINスキャンの例である。この結果は、先にnullスキャンを使用して得た結果とよく似ています。
pentester@TryHackMe$ sudo nmap -sF MACHINE_IP
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:32 BST
Nmap scan report for MACHINE_IP
Host is up (0.0018s latency).
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open|filtered ssh
25/tcp open|filtered smtp
80/tcp open|filtered http
110/tcp open|filtered pop3
111/tcp open|filtered rpcbind
143/tcp open|filtered imap
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 96.52 seconds
Xmas Scan
Xmasスキャンは、クリスマスツリーのイルミネーションにちなんで名づけられました。Xmasスキャンは、FIN、PSH、URGフラグを同時に設定します。Xmasスキャンは、オプション-sXで選択することができます。
NullスキャンやFINスキャンと同様に、RSTパケットを受信した場合、そのポートはクローズされていることを意味します。それ以外の場合は、open|filteredと報告されます。
次の2つの図は、TCPポートが開いている場合と閉じている場合を示しています。
以下のコンソール出力は、Linuxサーバーに対するXmasスキャンの例を示しています。得られた結果は、nullスキャンやFINスキャンの結果とよく似ています。
pentester@TryHackMe$ sudo nmap -sX MACHINE_IP
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:34 BST
Nmap scan report for MACHINE_IP
Host is up (0.00087s latency).
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open|filtered ssh
25/tcp open|filtered smtp
80/tcp open|filtered http
110/tcp open|filtered pop3
111/tcp open|filtered rpcbind
143/tcp open|filtered imap
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 84.85 seconds
これら3つのスキャンタイプを効率的に使用できるシナリオの1つは、ステートレス(非ステートフル)ファイアウォールの背後にあるターゲットをスキャンする場合です。ステートレスファイアウォールは、着信パケットにSYNフラグが設定されているかどうかをチェックし、接続の試行を検出します。SYNパケットと一致しないフラグの組み合わせを使用すると、ファイアウォールを欺き、その背後にあるシステムに到達することが可能になります。しかし、ステートフルファイアウォールは、このような細工を施したパケットをすべて実質的にブロックし、この種のスキャンを無意味なものにしてしまいます。
■question
In a null scan, how many flags are set to 1?
⇒0
⇒1
In a Xmas scan, how many flags are set to 1?
⇒3
Start the VM and load the AttackBox. Once both are ready, open the terminal on the AttackBox and use nmap to launch a FIN scan against the target VM. How many ports appear as open|filtered?
⇒7
Repeat your scan launching a null scan against the target VM. How many ports appear as open|filtered?
⇒7
Task 3 TCP Maimon Scan
Uriel Maimonは1996年にこのスキャンを初めて説明しました。このスキャンでは、FINビットとACKビットが設定さ れます。ターゲットは、応答としてRSTパケットを送信する必要があります。しかし、ある種のBSD由来のシステムでは、オープンポートを公開している場合、パケットをドロップします。このスキャンは、現代のネットワークで遭遇するほとんどのターゲットでは機能しません。しかし、ここではポートスキャンの仕組みとハッキングの考え方をより理解するために、取り入れています。このスキャンタイプを選択するには、-sM オプションを使用します。
ほとんどのターゲット・システムは、TCPポートが開いているかどうかに関係なく、RSTパケットで応答します。このような場合、開いているポートを発見することはできません。下図は、TCPポートが開いている場合と閉じている場合の両方で期待される動作を示しています。
以下のコンソール出力は、Linuxサーバーに対するTCP Maimonスキャンの一例です。前述の通り、オープンポートとクローズドポートは同じ動作をするため、Maimonスキャンではターゲットシステム上のオープンポートを発見することができませんでした。
pentester@TryHackMe$ sudo nmap -sM 10.10.252.27
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:36 BST
Nmap scan report for ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27)
Host is up (0.00095s latency).
All 1000 scanned ports on ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27) are closed
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 1.61 seconds
このタイプのスキャンは、システムを発見するために最初に選ぶスキャンではありませんが、いつ役に立つかわからないため、知っておくことは重要です。
■question
In the Maimon scan, how many flags are set?
⇒2
Task 4 TCP ACK, Window, and Custom Scan
このタスクでは、TCP ACKスキャン、TCPウィンドウスキャンの実行方法、およびカスタムフラッグスキャンの作成方法について説明します。
TCP ACK Scan
まず、TCP ACKスキャンから説明します。その名の通り、ACKスキャンはACKフラグがセットされたTCPパケットを送信します。このスキャンを選択するには、-sAオプションを使用します。下の図に示すように、ターゲットはポートの状態に関係なく、ACKに対してRSTで応答することになります。この挙動は、ACKフラグが設定されたTCPパケットは、今回のケースとは異なり、何らかのデータの受信を確認するために、受信したTCPパケットに応答してのみ送信されるはずであるために起こります。したがって、このスキャンでは、単純なセットアップでは、ターゲット・ポートが開いているかどうかはわかりません。
次の例では、ファイアウォールをインストールする前にターゲットVMをスキャンしています。予想通り、どのポートが開いているのかを知ることはできませんでした。
pentester@TryHackMe$ sudo nmap -sA 10.10.86.220
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:37 BST
Nmap scan report for 10.10.86.220
Host is up (0.0013s latency).
All 1000 scanned ports on MACHINE_IP are unfiltered
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 1.68 seconds
このようなスキャンは、ターゲットの前にファイアウォールがある場合に有効でしょう。その結果、どのACKパケットがレスポンスになったかに基づいて、どのポートがファイアウォールによってブロックされなかったかを知ることができます。つまり、このタイプのスキャンは、ファイアウォールのルールセットと構成を発見するのに適しています。
ターゲットVM 10.10.86.220にファイアウォールを設定した後、ACKスキャンを繰り返しました。今回、興味深い結果が得られました。下のコンソール出力に見られるように、ファイアウォールによってブロックされていないポートが3つあります。この結果は、ファイアウォールがこの3つのポート以外のすべてのポートをブロックしていることを示しています。
pentester@TryHackMe$ sudo nmap -sA 10.10.86.220
Starting Nmap 7.60 ( https://nmap.org ) at 2021-09-07 11:34 BST
Nmap scan report for 10.10.86.220
Host is up (0.00046s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp unfiltered ssh
25/tcp unfiltered smtp
80/tcp unfiltered http
MAC Address: 02:78:C0:D0:4E:E9 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 15.45 seconds
Window Scan
もう1つの類似のスキャンは、TCPウィンドウ・スキャンです。TCPウィンドウ・スキャンは、ACKスキャンとほぼ同じですが、返されたRSTパケットのTCPウィンドウ・フィールドを検査するものです。特定のシステムでは、これによってポートが開いていることが判明することがあります。このスキャン・タイプは、オプション -sW で選択することができます。下図に示すように、ポートが開いているか閉じているかにかかわらず、「招かれざる」ACKパケットに対する返信としてRSTパケットを受け取ることが予想されます。
同様に、ファイアウォールのないLinuxシステムに対してTCPウィンドウ・スキャンを起動しても、あまり情報は得られません。以下のコンソール出力でわかるように、ファイアウォールのないLinuxサーバーに対するウィンドウスキャンの結果は、先に実行したACKスキャンと比較して、余分な情報を与えていないことがわかります。
pentester@TryHackMe$ sudo nmap -sW 10.10.86.220
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:38 BST
Nmap scan report for 10.10.86.220
Host is up (0.0011s latency).
All 1000 scanned ports on ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27) are closed
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 1.60 seconds
しかし、ファイアウォールの背後にあるサーバーに対してTCPウィンドウスキャンを繰り返すと、より満足のいく結果が得られると思われます。以下のコンソール出力では、TCPウィンドウスキャンによって3つのポートがクローズドとして検出されたことが指摘されています。(これは、同じ3つのポートがフィルタリングされていないとラベル付けされたACKスキャンとは対照的です)。これらの3つのポートが閉じられていないことは分かっていますが、ファイアウォールがそれらをブロックしていないことを示す、異なる反応を示していることに気付かされます。
pentester@TryHackMe$ sudo nmap -sW 10.10.86.220
Starting Nmap 7.60 ( https://nmap.org ) at 2021-09-07 11:39 BST
Nmap scan report for 10.10.86.220
Host is up (0.00040s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp closed ssh
25/tcp closed smtp
80/tcp closed http
MAC Address: 02:78:C0:D0:4E:E9 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 14.84 seconds
Custom Scan
- 攻撃者は、送信元IPアドレスを詐称したパケットを対象マシンに送信する。
- ターゲットマシンは、偽装されたIPアドレスを宛先として返信する。
- 攻撃者は返信をキャプチャしてオープンポートを把握する。
- アイドルホストの現在のIP IDを記録できるように、アイドルホストが応答するようにトリガーをかける。
- ターゲットのTCPポートにSYNパケットを送信する。このパケットは、アイドルホスト(ゾンビ)のIPアドレスから送信されているように見えるように偽装する必要があります。
- アイドルマシンを再度トリガーして応答させ、新しいIP IDと先に受信したIP IDを比較できるようにする。
⇒-sI 10.10.5.5
pentester@TryHackMe$ sudo nmap -sS 10.10.252.27
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:39 BST
Nmap scan report for ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27)
Host is up (0.0020s latency).
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
110/tcp open pop3
111/tcp open rpcbind
143/tcp open imap
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 1.60 seconds
pentester@TryHackMe$ sudo nmap -sS --reason 10.10.252.27
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:40 BST
Nmap scan report for ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27)
Host is up, received arp-response (0.0020s latency).
Not shown: 994 closed ports
Reason: 994 resets
PORT STATE SERVICE REASON
22/tcp open ssh syn-ack ttl 64
25/tcp open smtp syn-ack ttl 64
80/tcp open http syn-ack ttl 64
110/tcp open pop3 syn-ack ttl 64
111/tcp open rpcbind syn-ack ttl 64
143/tcp open imap syn-ack ttl 64
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 1.59 seconds
pentester@TryHackMe$ sudo nmap -sS -vv 10.10.252.27
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:41 BST
Initiating ARP Ping Scan at 10:41
Scanning 10.10.252.27 [1 port]
Completed ARP Ping Scan at 10:41, 0.22s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 10:41
Completed Parallel DNS resolution of 1 host. at 10:41, 0.00s elapsed
Initiating SYN Stealth Scan at 10:41
Scanning ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27) [1000 ports]
Discovered open port 22/tcp on 10.10.252.27
Discovered open port 25/tcp on 10.10.252.27
Discovered open port 80/tcp on 10.10.252.27
Discovered open port 110/tcp on 10.10.252.27
Discovered open port 111/tcp on 10.10.252.27
Discovered open port 143/tcp on 10.10.252.27
Completed SYN Stealth Scan at 10:41, 1.25s elapsed (1000 total ports)
Nmap scan report for ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27)
Host is up, received arp-response (0.0019s latency).
Scanned at 2021-08-30 10:41:02 BST for 1s
Not shown: 994 closed ports
Reason: 994 resets
PORT STATE SERVICE REASON
22/tcp open ssh syn-ack ttl 64
25/tcp open smtp syn-ack ttl 64
80/tcp open http syn-ack ttl 64
110/tcp open pop3 syn-ack ttl 64
111/tcp open rpcbind syn-ack ttl 64
143/tcp open imap syn-ack ttl 64
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 1.59 seconds
Raw packets sent: 1002 (44.072KB) | Rcvd: 1002 (40.092KB)
Port Scan Type | Example Command |
---|---|
TCP Null Scan | sudo nmap -sN MACHINE_IP |
TCP FIN Scan | sudo nmap -sF MACHINE_IP |
TCP Xmas Scan | sudo nmap -sX MACHINE_IP |
TCP Maimon Scan | sudo nmap -sM MACHINE_IP |
TCP ACK Scan | sudo nmap -sA MACHINE_IP |
TCP Window Scan | sudo nmap -sW MACHINE_IP |
Custom TCP Scan | sudo nmap --scanflags URGACKPSHRSTSYNFIN MACHINE_IP |
Spoofed Source IP | sudo nmap -S SPOOFED_IP MACHINE_IP |
Spoofed MAC Address | --spoof-mac SPOOFED_MAC |
Decoy Scan | nmap -D DECOY_IP,ME MACHINE_IP |
Idle (Zombie) Scan | sudo nmap -sI ZOMBIE_IP MACHINE_IP |
Fragment IP data into 8 bytes | -f |
Fragment IP data into 16 bytes | -ff |
オプション | 目的 |
---|---|
| specify source port number |
| append random data to reach given length |
オプション | 目的 |
---|---|
--reason | explains how Nmap made its conclusion |
-v | verbose |
-vv | very verbose |
-d | debugging |
-dd | more details for debugging |