Nmap SYN スキャンの理解と実行
これで対象サービスが起動して動作しているので、SYN スキャンに取り組みましょう。SYN スキャンはネットワークセキュリティテストの重要な部分であり、対象システム上の開いているポートを発見することができます。このセクションでは、SYN スキャンの仕組みについて学び、次に強力なネットワークスキャンツールである Nmap を使用して、HTTP サーバに対して SYN スキャンを実行します。
SYN スキャンとは何か?
実際のスキャンを開始する前に、SYN スキャンの基本的な仕組みを理解することが重要です。そのために、まず通常の TCP 接続が確立される方法を見てみましょう。
通常の TCP 接続
通常の TCP 接続では、3 ウェイハンドシェイクが行われます。これは、クライアントとサーバの間で信頼性の高い接続を確立するための基本的なプロセスです。
- ステップ 1: クライアントからの SYN パケット
クライアントは、SYN(同期)パケットをサーバに送信することで接続を開始します。このパケットは、会話を開始するリクエストのようなもので、サーバに通信の準備ができているかを尋ねます。
- ステップ 2: サーバからの SYN - ACK パケット
SYN パケットを受信すると、サーバが利用可能で通信を許可する場合、SYN - ACK(同期 - 確認)パケットで応答します。このパケットは、クライアントのリクエストを確認し、サーバが接続を開始する準備ができていることを示します。
- ステップ 3: クライアントからの ACK パケット
最後に、クライアントは ACK(確認)パケットを送信して 3 ウェイハンドシェイクを完了します。このステップの後、TCP 接続が完全に確立され、クライアントとサーバの間でデータを交換できるようになります。
SYN スキャンのプロセス
一方、SYN スキャンは異なるアプローチを取ります。
- ステップ 1: Nmap からの SYN パケット
スキャンツールである Nmap が、最初の SYN パケットを対象ポートに送信します。これは通常の TCP 接続の最初のステップと似ています。
- ステップ 2: 対象からの SYN - ACK 応答
対象ポートが開いている場合、通常の TCP 接続と同じように SYN - ACK パケットで応答します。
- ステップ 3: Nmap による接続の終了
ハンドシェイクを完了するための最後の ACK パケットを送信する代わりに、Nmap は接続を終了します。これにより、完全な接続が確立されないため、スキャンが検知されにくくなります。さらに、スキャン対象の各ポートに対して完全な 3 ウェイハンドシェイクを完了する完全コネクトスキャンよりも高速です。
SYN スキャンの実行
ステップ 1: プロジェクトディレクトリに移動する
まず、正しいプロジェクトディレクトリにいることを確認する必要があります。これは、スキャン結果をこのディレクトリ内のファイルに保存するため重要です。プロジェクトディレクトリに移動するには、ターミナルで次のコマンドを実行します。
cd /home/labex/project
ステップ 2: SYN スキャンを実行する
これで、Nmap を使用して SYN スキャンを実行する準備ができました。ターミナルで次のコマンドを実行します。
sudo nmap -sS localhost -p 8080 > /home/labex/project/nmap-syn-scan-results.txt
このコマンドを分解して、各部分が何をするかを理解しましょう。
sudo
: このコマンドは、後続のコマンドを管理者権限で実行するために使用されます。SYN スキャンは生のネットワークパケットを送信するため、root 権限が必要です。したがって、nmap
コマンドを実行するには sudo
を使用する必要があります。
nmap
: これは使用しているネットワークスキャンツールです。Nmap は、ネットワーク探索やセキュリティ監査に広く使用されています。
-sS
: このオプションは、SYN スキャンを実行することを指定します。
localhost
: これはスキャンの対象です。この場合、自分自身のマシンをスキャンしています。
-p 8080
: このオプションは、Nmap にポート 8080 のみをスキャンするよう指示します。ローカルマシン上のこの特定のポートが開いているかどうかを確認することに興味があります。
> /home/labex/project/nmap-syn-scan-results.txt
: このコマンドの部分は、nmap
スキャンの出力をプロジェクトディレクトリ内の nmap - syn - scan - results.txt
という名前のファイルにリダイレクトします。これにより、後で結果を確認することができます。
ステップ 3: スキャン結果を表示する
スキャンが完了した後、結果を表示することができます。ターミナルで次のコマンドを実行します。
cat /home/labex/project/nmap-syn-scan-results.txt
次のような出力が表示されるはずです。
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-18 12:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000097s latency).
PORT STATE SERVICE
8080/tcp open http-proxy
Nmap done: 1 IP address (1 host up) scanned in 0.03 seconds
この出力は貴重な情報を提供します。ローカルマシン上のポート 8080 が開いており、HTTP サービスが実行されていることが確認されます。この情報は、さらなるセキュリティ分析やネットワークのトラブルシューティングに使用できます。