スキャン知識の拡充
TCP Connect スキャンの基本を理解したので、次のレベルに知識を深めましょう。このセクションでは、複数のポートをスキャンする方法と、その結果を解釈する方法を学びます。これにより、ターゲットシステムで実行されているネットワークサービスについて、より包括的な理解を得ることができます。
一般的なポートのスキャン
まず、ローカルマシン(localhost)上の最も一般的なポートをスキャンしましょう。これらの一般的なポートは、よく知られたネットワークサービスによってよく使用されます。
nmap -sT localhost --top-ports 10 > /home/labex/project/common_ports_scan.txt
このコマンドでは、-sT
オプションは Nmap に TCP Connect スキャンを実行するよう指示します。localhost
はターゲットを指定しており、これは自分自身のマシンです。--top-ports 10
オプションは、Nmap に最も一般的に使用される 10 個のポートをスキャンするよう指示します。>
記号は、スキャンの出力を /home/labex/project
ディレクトリ内の common_ports_scan.txt
という名前のファイルにリダイレクトします。
では、このスキャンの結果を見てみましょう。
cat /home/labex/project/common_ports_scan.txt
cat
コマンドは、ファイルの内容を表示するために使用されます。このコマンドを実行すると、ポートのリストが表示されます。たとえば、ポート 21 は FTP(File Transfer Protocol)、ポート 22 は SSH(Secure Shell)、ポート 23 は Telnet、ポート 25 は SMTP(Simple Mail Transfer Protocol)、ポート 80 は HTTP(Hypertext Transfer Protocol)に使用されます。あなたのシステムでは、特定のサービスが実行されていない限り、これらのポートのほとんどは閉じているでしょう。たとえば、ポート 8080 の HTTP サーバが上位 10 のポートに含まれている場合、そのポートは開放されていると表示されます。
ポート範囲のスキャン
一般的なポートのスキャンに加えて、特定のポート範囲をスキャンすることもできます。localhost 上の 8000 から 8100 までのポートをスキャンしましょう。
nmap -sT localhost -p 8000-8100 > /home/labex/project/port_range_scan.txt
ここで、-p 8000 - 8100
オプションは、Nmap に 8000 から 8100 までの範囲のポートをスキャンするよう指示します。このスキャンの出力は、/home/labex/project
ディレクトリ内の port_range_scan.txt
という名前のファイルにリダイレクトされます。
このスキャンの結果を表示するには、次のコマンドを実行します。
cat /home/labex/project/port_range_scan.txt
出力では、ポート 8080(スキャン範囲内にある場合)が開放されていることがわかり、その他のポートは閉じている可能性が高いです。
手法の組み合わせ
これまで学んだ手法を組み合わせましょう。TCP Connect スキャンを実行し、8000 から 8100 までの範囲のポートで実行されているサービスを検出しようとします。
nmap -sT -sV localhost -p 8000-8100 > /home/labex/project/combined_scan.txt
-sV
オプションは、サービス検出を有効にするために使用されます。これは、Nmap がポートが開放されているか閉じているかだけでなく、開放されたポートで実行されているサービスを特定しようとすることを意味します。この組み合わせスキャンの出力は、/home/labex/project
ディレクトリ内の combined_scan.txt
ファイルに保存されます。
結果を確認するには、次のコマンドを実行します。
cat /home/labex/project/combined_scan.txt
このスキャンは、これまでで最も詳細な情報を提供します。指定された範囲内の各ポートの状態を示し、開放されたポートで実行されているサービスを特定しようとします。
クリーンアップ
この実験を終える前に、使用していた Python HTTP サーバを停止してクリーンアップする必要があります。まず、サーバのプロセス ID(PID)を見つける必要があります。
ps aux | grep "python3 -m http.server 8080"
ps aux
コマンドは、システム上で実行されているすべてのプロセスをリスト表示します。|
記号はパイプで、ps aux
コマンドの出力を grep
コマンドに渡します。grep
コマンドは、"python3 -m http.server 8080"
というテキストを含む行を検索します。これは、Python HTTP サーバを起動するために使用されるコマンドです。
Python HTTP サーバのプロセスを示す行を探します。この行の 2 列目にはプロセス ID(PID)が含まれています。PID をメモしたら、kill
コマンドを使用してプロセスを停止できます。
kill <PID>
<PID>
を実際に見つけたプロセス ID に置き換えます。たとえば、PID が 1234 の場合、次のコマンドを実行します。
kill 1234