高度なステルススキャン技術
このステップでは、さらに高度なステルス性を備えたスキャン技術を探ります。これらの技術は、サイバーセキュリティにおいて、ターゲットネットワークに関する情報を容易に検出されることなく収集できるため、非常に重要です。その強力な技術の 1 つがアイドルスキャン(ゾンビースキャンとも呼ばれます)。この方法は、別のホストの背後に身分を隠すことで、ターゲットをスキャンできます。
始める前に、作業スペースにいることを確認してください。これは、プロジェクト関連のファイルやコマンドが実行される場所です。作業スペースに移動するには、ターミナルで次のコマンドを実行します。
cd /home/labex/project
アイドルスキャンについて
アイドルスキャンは、Nmap で利用可能な最もステルス性の高いスキャン技術の 1 つです。では、どのように機能するのでしょうか?それは、第三者のホスト(「ゾンビ」と呼びます)を使用してスキャンを実行します。これにより、スキャンはあなたからのものではなく、ゾンビホストからのもののように見えます。
アイドルスキャンプロセスを段階的に見てみましょう。
- まず、スキャナーはゾンビホストにプローブを送信します。このプローブは、スキャナーがゾンビの現在の IP ID シーケンスを特定するのに役立ちます。IP ID シーケンスは、ホストが送信する各 IP パケットに割り当てる一意の番号です。
- 次に、スキャナーはターゲットに SYN パケットを送信します。ただし、このパケットの送信元 IP アドレスをゾンビの IP アドレスに設定します。SYN パケットは TCP 接続を開始するために使用されます。
- ターゲットのポートが開いている場合、ターゲットは SYN-ACK パケットで応答します。このパケットはゾンビに送信されます。なぜなら、それが SYN パケットで見た送信元 IP アドレスだからです。
- この SYN-ACK パケットを予想していなかったゾンビは、ターゲットに RST パケットを返します。RST パケットは TCP 接続をリセットするために使用されます。
- スキャナーはその後、再びゾンビにプローブを送信します。ゾンビの IP ID シーケンスが増加したかどうかを確認します。
- IP ID シーケンスが増加している場合、ターゲットのポートが開いていることを示します。これは、ゾンビがターゲットからの SYN-ACK に応答して RST パケットを送信したためです。
この技術の優れた点は、ステルス性です。ターゲットは、実際のスキャナーからの通信ではなく、ゾンビからの通信しか見ません。したがって、ターゲットがスキャンされていることを検出することは非常に困難です。
アイドルスキャンの実行
それでは、Nmap を使用してアイドルスキャンを実行してみましょう。実際の状況では、外部のゾンビホストを使用します。しかし、この実験では、ローカルマシンを使用してプロセスをシミュレートします。
ターミナルで次のコマンドを実行します。
sudo nmap -sI 127.0.0.1 localhost -p 8080 > /home/labex/project/idle_scan.txt
このコマンドの各部分を理解しましょう。
sudo は、Nmap がアイドルスキャンを実行するために生のソケットアクセスが必要であるため使用されます。生のソケットアクセスにより、Nmap はこのタイプのスキャンに必要なカスタム IP パケットを作成および送信できます。
nmap は、このタスクに使用している有名なスキャンツールです。
-sI 127.0.0.1 は、アイドルスキャンを実行し、127.0.0.1(localhost)をゾンビホストとして使用することを指定します。
localhost はスキャン対象のターゲットです。
-p 8080 は、ターゲットのポート 8080 だけをスキャンするように Nmap に指示します。
> /home/labex/project/idle_scan.txt は、スキャン結果の出力をテキストファイルにリダイレクトします。これにより、後で結果を簡単に確認できます。
スキャンを実行したら、結果を確認しましょう。出力ファイルの内容を表示するには、次のコマンドを使用します。
cat /home/labex/project/idle_scan.txt
次の様な出力が表示される場合があります。
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-25 12:10 UTC
Idle scan using zombie 127.0.0.1 (127.0.0.1:80); Class: Incremental
Skipping Idle Scan against localhost (127.0.0.1) -- you can't idle scan your own machine (localhost).
Nmap scan report for localhost (127.0.0.1)
Host is up.
PORT STATE SERVICE
8080/tcp unknown http-proxy
Nmap done: 1 IP address (1 host up) scanned in 2.03 seconds
Nmap がアイドルスキャンをスキップすると報告されていることに注目してください。これは、自分のマシンをゾンビとターゲットの両方として使用しようとしているためです。実際の状況では、別のホストをゾンビとして選択すると、この警告メッセージなしでスキャンが実行されます。
この実験環境ではこの制限がありますが、この演習はアイドルスキャンコマンドの使い方を示しています。実際には、別のホストをゾンビとして選択し、スキャンは警告メッセージなしで実行されます。
この高度な技術は、最大限のステルスが必要な場合に非常に価値があります。ターゲットがスキャンを実際のスキャナーに追跡することは非常に困難になります。
スキャン結果の比較
両方のスキャンタイプの出力の違いを確認するために、比較してみましょう。
echo "=== Stealth Scan Results ===" && cat /home/labex/project/stealth_scan.txt
echo "=== Idle Scan Results ===" && cat /home/labex/project/idle_scan.txt
両方のスキャンでポート 8080 が開いていることが検出されましたが、アイドルスキャンでは使用されているスキャン技術に関する追加情報が表示されます。
クリーンアップ
終了する前に、ウェブサーバーを停止して環境をクリーンアップしましょう。
pkill -f "nc -lvp 8080"
これにより、ポート 8080 で動作しているウェブサーバーを実行している netcat プロセスが終了します。