はじめに
この実験では、ネットワークセキュリティにおける重要なスキルである Nmap によるウィンドウスキャンの方法を学びます。この実験では、まずターゲット IP アドレスに対して基本的なウィンドウスキャンを実行し、次に特定のポート範囲をスキャンするように進めます。また、スキャンに詳細度を追加し、結果をファイルに保存し、Xfce 端末でスキャンを分析し、ACK スキャンと比較します。この実践的な経験により、Nmap のウィンドウスキャン機能の理解が深まります。
この実験では、ネットワークセキュリティにおける重要なスキルである Nmap によるウィンドウスキャンの方法を学びます。この実験では、まずターゲット IP アドレスに対して基本的なウィンドウスキャンを実行し、次に特定のポート範囲をスキャンするように進めます。また、スキャンに詳細度を追加し、結果をファイルに保存し、Xfce 端末でスキャンを分析し、ACK スキャンと比較します。この実践的な経験により、Nmap のウィンドウスキャン機能の理解が深まります。
このステップでは、Nmap を使ってウィンドウスキャンを行います。ウィンドウスキャンは、TCP スキャンの一種であり、他のスキャンタイプよりもオープンおよびフィルタリングされたポートに関する情報をより多く明らかにすることができます。ファイアウォールが他の種類のスキャンをブロックする可能性がある場合、これは特に役立ちます。
始める前に、ウィンドウスキャンが何を行うか簡単に説明しましょう。ウィンドウスキャンは、一部の TCP 実装にある不具合を利用しています。SYN フラグが設定された TCP パケットをターゲットホストに送信します。ポートがオープンの場合、ターゲットは SYN/ACK パケットで応答します。その後、Nmap は応答の TCP ウィンドウサイズを調べます。このウィンドウサイズに基づいて、Nmap はポートがオープンかフィルタリングされているかを判断することができます。
では、ウィンドウスキャンを実行しましょう。次のコマンドを使用します。
nmap -sW 192.168.1.1
192.168.1.1
を、スキャンしたいターゲットの実際の IP アドレスに置き換えます。使用する IP アドレスがわからない場合は、自分自身のマシンを指すループバックアドレス 127.0.0.1
を使用できます。
Xfce 端末を開きます。デスクトップやアプリケーションメニューにある端末アイコンを見つけることができます。
端末で、次のコマンドを入力して Enter キーを押します。
nmap -sW 127.0.0.1
このコマンドは、Nmap にループバックアドレス (127.0.0.1
) に対してウィンドウスキャン (-sW
) を実行するように指示します。
次のような出力が表示されるはずです。
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).
Other addresses for localhost (alias(es)): localhost
PORT STATE SERVICE
135/tcp closed msrpc
139/tcp closed netbios-ssn
445/tcp closed microsoft-ds
Nmap done: 1 IP address (1 host up) scanned in 2.50 seconds
出力は、ターゲットマシン上のオープン、クローズ、またはフィルタリングされたポートを示しています。この例では、ポート 135、139、および 445 はクローズされています。特定のポートとその状態は、ターゲットシステムによって異なります。
このステップでは、ポート範囲を指定することでウィンドウスキャンを拡張します。これにより、特定のポートのセットに対してスキャンを集中させることができ、ターゲットマシン上で実行されているサービスを特定する際に役立ちます。
デフォルトでは、Nmap は事前定義された一般的に使用されるポートのセットをスキャンします。ただし、-p
オプションを使用することで、特定のポートまたはポート範囲を対象とするようにスキャンをカスタマイズできます。特定のサービスが非標準ポートで実行されているかどうかを確認したい場合や、より小さなポートのセットに焦点を当てることでスキャン時間を制限したい場合には、これが特に役立ちます。
では、ポート範囲を指定したウィンドウスキャンを実行しましょう。次のコマンドを使用します。
nmap -sW -p 1-100 127.0.0.1
このコマンドは、Nmap にループバックアドレス (127.0.0.1
) の 1 から 100 番目のポート (-p 1-100
) に対してウィンドウスキャン (-sW
) を実行するよう指示します。
Xfce 端末を開きます。
端末で、次のコマンドを入力して Enter キーを押します。
nmap -sW -p 1-100 127.0.0.1
次のような出力が表示されるはずです。
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000070s latency).
Other addresses for localhost (alias(es)): localhost
PORT STATE SERVICE
22/tcp closed ssh
25/tcp closed smtp
80/tcp closed http
Nmap done: 1 IP address (1 host up) scanned in 2.35 seconds
出力は、ターゲットマシン上の指定された範囲 (1-100) 内のオープン、クローズ、またはフィルタリングされたポートを示しています。この例では、ポート 22、25、および 80 はクローズされています。特定のポートとその状態は、ターゲットシステムによって異なります。
このステップでは、ウィンドウスキャンに詳細表示を追加します。詳細表示は、スキャンプロセスに関するより詳細な情報を提供し、トラブルシューティングや結果の理解に役立ちます。
Nmap の詳細表示オプション (-v
) は、スキャン中に表示される情報量を増やします。これには、スキャンフェーズの詳細、送信および受信されるパケット、および Nmap が特定の決定を下す理由などが含まれます。ネットワーク問題を診断しようとしている場合や、Nmap がターゲットからの応答をどのように解釈しているかを理解したい場合には、詳細表示を使用することが特に役立ちます。
では、詳細表示付きでウィンドウスキャンを実行しましょう。次のコマンドを使用します。
nmap -v -sW 192.168.1.1
192.168.1.1
を、スキャンしたいターゲットの実際の IP アドレスに置き換えます。使用する IP アドレスがわからない場合は、自分自身のマシンを指すループバックアドレス 127.0.0.1
を使用できます。
Xfce 端末を開きます。
端末で、次のコマンドを入力して Enter キーを押します。
nmap -v -sW 127.0.0.1
このコマンドは、Nmap にループバックアドレス (127.0.0.1
) に対してウィンドウスキャン (-sW
) を実行し、詳細表示レベルを増やす (-v
) よう指示します。
次のような出力が表示されるはずです(正確な出力は異なります)。
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
NSE: Loaded 0 scripts for scanning.
Initiating Window Scan at 10:10
Scanning localhost (127.0.0.1) [1000 ports]
Discovered open port 22/tcp on 127.0.0.1
Discovered open port 80/tcp on 127.0.0.1
Completed Window Scan at 10:10, 0.12s elapsed (1000 total ports)
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000039s latency).
Other addresses for localhost (alias(es)): localhost
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.19 seconds
出力には、スキャンプロセスに関するより多くの情報が含まれています。たとえば、開始時刻と終了時刻、スキャンされたポート数、および読み込まれたスクリプトなどです。特定の詳細は、ターゲットシステムと Nmap の設定によって異なります。
このステップでは、ウィンドウスキャンの結果をファイルに保存します。これは、後で分析するためや他の人と結果を共有するために便利です。
Nmap は、さまざまな形式でスキャン結果を保存するためのいくつかのオプションを提供しています。-oN
オプションは、「通常の」人が読みやすい形式で結果を保存します。この形式は読みやすく理解しやすいですが、自動解析には適さない場合があります。他のオプションには、XML 形式用の -oX
やスクリプトキッディ形式用の -oS
があります。
では、ウィンドウスキャンを実行して、~/project
ディレクトリに window.txt
という名前のファイルに結果を保存しましょう。次のコマンドを使用します。
nmap -sW -oN window.txt 127.0.0.1
このコマンドは、Nmap にループバックアドレス (127.0.0.1
) に対してウィンドウスキャン (-sW
) を実行し、結果を通常の形式 (-oN
) で window.txt
ファイルに保存するよう指示します。
Xfce 端末を開きます。
端末で、次のコマンドを入力して Enter キーを押します。
nmap -sW -oN window.txt 127.0.0.1
次のような出力が表示されるはずです。
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000070s latency).
Other addresses for localhost (alias(es)): localhost
PORT STATE SERVICE
22/tcp closed ssh
25/tcp closed smtp
80/tcp closed http
Nmap done: 1 IP address (1 host up) scanned in 2.35 seconds
スキャン結果は、現在、~/project
ディレクトリの window.txt
ファイルに保存されています。
ファイルが作成され、スキャン結果が含まれていることを確認するには、cat
コマンドを使用してファイルの内容を表示できます。
cat window.txt
出力に Nmap のスキャンレポートが表示されるはずです。
## Nmap 7.80 scan initiated Fri Oct 27 10:15:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000070s latency).
Other addresses for localhost (alias(es)): localhost
PORT STATE SERVICE
22/tcp closed ssh
25/tcp closed smtp
80/tcp closed http
## Nmap done: 1 IP address (1 host up) scanned in 2.35 seconds
このステップでは、前のステップで window.txt
ファイルに保存したウィンドウスキャンの結果を分析します。Nmap スキャンの出力を理解することは、潜在的な脆弱性やセキュリティリスクを特定するために重要です。
window.txt
ファイルには、スキャン結果の人が読みやすいレポートが含まれています。レポートには、ターゲットホストに関する情報、スキャンされたポート、および各ポートの状態が含まれます。
Xfce 端末を開きます。
まず、cat
コマンドを使用して window.txt
ファイルの内容を表示しましょう。
cat window.txt
次のような出力が表示されるはずです(正確な出力は、ターゲットシステムと使用されたスキャンオプションによって異なります)。
## Nmap 7.80 scan initiated Fri Oct 27 10:15:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000070s latency).
Other addresses for localhost (alias(es)): localhost
PORT STATE SERVICE
22/tcp closed ssh
25/tcp closed smtp
80/tcp closed http
## Nmap done: 1 IP address (1 host up) scanned in 2.35 seconds
この出力の重要な部分を分解してみましょう。
Nmap scan report for localhost (127.0.0.1)
:この行は、ループバックアドレス 127.0.0.1
でスキャンが実行されたことを示しています。Host is up
:この行は、ターゲットホストに到達可能であることを確認しています。PORT STATE SERVICE
:このセクションは、スキャンされたポートとその対応する状態とサービスをリストしています。22/tcp closed ssh
:この行は、ポート 22(SSH)が閉じていることを示しています。25/tcp closed smtp
:この行は、ポート 25(SMTP)が閉じていることを示しています。80/tcp closed http
:この行は、ポート 80(HTTP)が閉じていることを示しています。STATE
列は特に重要です。ウィンドウスキャンでは、一般的な状態は open
、closed
、または filtered
です。
open
:ポートが接続を待ち受けていることを示します。closed
:ポートが接続を待ち受けていないが、ホストに到達可能であることを示します。filtered
:ネットワークフィルタリングが Nmap がポートに到達するのを防いでいるため、Nmap がポートが開いているか閉じているかを判断できないことを示します。この例では、すべてのスキャンされたポートは closed
と報告されています。これは、ターゲットホストに到達可能であるが、これらのポートで接続を受け付けていないことを意味します。
この情報を使用して、潜在的な脆弱性やセキュリティリスクを特定することができます。たとえば、予期せぬポートが open
である場合、そのポートで脆弱なサービスが実行されている可能性があります。
では、grep
コマンドを使用して window.txt
ファイルの開いているポートを検索しましょう。
grep "open" window.txt
開いているポートがない場合、コマンドは出力を返しません。この例では、出力は空です。
このステップでは、ACK スキャンを実行し、その結果を先ほど行ったウィンドウスキャンの結果と比較します。この比較により、これら 2 つのスキャンタイプの違いと、ターゲットシステムに関するさまざまな種類の情報を収集するためにどのように使用できるかを理解することができます。
ACK スキャン (-sA
) は、ターゲットホストに TCP ACK パケットを送信します。SYN スキャンとは異なり、ACK スキャンは接続を確立しようとしません。代わりに、ファイアウォールが存在するかどうかと、不請求の ACK パケットをどのように処理するかを判断するために使用されます。
ファイアウォールが存在し、不請求の ACK パケットをブロックするように構成されている場合、ACK スキャンはすべてのポートを filtered
と報告します。ファイアウォールが存在しないか、または不請求の ACK パケットを許可するように構成されている場合、ACK スキャンはポートを unfiltered
または closed
と報告します。
では、ループバックアドレス (127.0.0.1
) に対して ACK スキャンを実行し、結果を ack.txt
という名前のファイルに保存しましょう。
Xfce 端末を開きます。
端末で、次のコマンドを入力して Enter キーを押します。
nmap -sA -oN ack.txt 127.0.0.1
次のような出力が表示されるはずです。
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000070s latency).
Other addresses for localhost (alias(es)): localhost
PORT STATE SERVICE
22/tcp unfiltered ssh
25/tcp unfiltered smtp
80/tcp unfiltered http
Nmap done: 1 IP address (1 host up) scanned in 2.35 seconds
では、ACK スキャンの結果とウィンドウスキャンの結果を比較しましょう。
ウィンドウスキャンの出力(window.txt
から)を思い出してください。
## Nmap 7.80 scan initiated Fri Oct 27 10:15:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000070s latency).
Other addresses for localhost (alias(es)): localhost
PORT STATE SERVICE
22/tcp closed ssh
25/tcp closed smtp
80/tcp closed http
## Nmap done: 1 IP address (1 host up) scanned in 2.35 seconds
ウィンドウスキャンでは、ポートは closed
と報告されました。ACK スキャンでは、ポートは unfiltered
と報告されています。この違いは、これら 2 つのスキャンタイプの動作方法によるものです。ウィンドウスキャンは接続を確立しようとしますが、ACK スキャンは ACK パケットのみを送信します。
ACK スキャンにおける unfiltered
状態は、ACK パケットがフィルタリングされていないため、Nmap がポートが開いているか閉じているかを判断できないことを意味します。これは、ファイアウォールが存在しないこと、またはファイアウォールが不請求の ACK パケットを許可するように構成されていることを示す可能性があります。
また、cat
コマンドを使用して ack.txt
ファイルの内容を表示することもできます。
cat ack.txt
出力に Nmap のスキャンレポートが表示されるはずです。
## Nmap 7.80 scan initiated Fri Oct 27 10:20:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000070s latency).
Other addresses for localhost (alias(es)): localhost
PORT STATE SERVICE
22/tcp unfiltered ssh
25/tcp unfiltered smtp
80/tcp unfiltered http
## Nmap done: 1 IP address (1 host up) scanned in 2.35 seconds
この実験では、参加者は Nmap でウィンドウスキャンを実行する方法を学びます。まず、コマンド nmap -sW
に続けて IP アドレスを使用して基本的なウィンドウスキャンを実行し、TCP 実装の特徴をどのように利用してポート状態を明らかにするかを理解します。次に、nmap -sW -p 1-100
を使用して特定のポート範囲をスキャンし、-v
を使用してスキャンに詳細度を追加し、-oN
を使用してスキャン結果をファイルに保存します。最後に、ウィンドウスキャンを分析し、Xfce 端末で ACK スキャンと比較します。