ポートスキャンの技法
SYN、connect、UDP
「ポートスキャンの技法」はCoddyKit上の無料Ethical Hacking Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはEthical Hacking Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ethical Hacking Academyコースには全4レッスンが含まれています。
なぜポートをスキャンするのか
開いているポートから、そのホストで実行されているサービスが分かります。これは攻撃対象領域の地図となります。ポートスキャンでは、TCPおよびUDPポートがopen、closed、filteredのいずれであるかを判定します。
Nmapには複数のスキャン手法があり、それぞれ速度、ステルス性、必要な権限に関してトレードオフがあります。
ポートの状態
Nmapは各ポートを次のいずれかの状態として報告します。
- open:サービスが接続を受け付けています。
- closed:到達可能ですが、待ち受けているサービスはありません。
- filtered:ファイアウォールがプローブをブロックしているため、Nmapでは判定できません。
- open|filteredおよびclosed|filtered:結果が不明確です。
TCPの3ウェイハンドシェイク
スキャンを理解するには、TCPハンドシェイクを知っておく必要があります。
- クライアントがSYNを送信します。
- ポートが開いている場合、サーバーはSYN-ACKを返します。
- クライアントがACKを送信して接続を完了します。
閉じたポートはRSTを返します。スキャンタイプによって、このハンドシェイクをどこまで進めるかが異なります。
SYNスキャン
SYNスキャン(-sS)は、rootとして実行した場合のデフォルトです。SYNを送信し、SYN-ACK(open)またはRST(closed)を確認した後、RSTを送信してハンドシェイクを決して完了させません。
この「ハーフオープン」スキャンは、完全な接続を確立しないため高速で、比較的ステルス性にも優れています。raw socketの権限が必要です。
sudo nmap -sS 192.168.1.10コネクトスキャン
コネクトスキャン(-sT)は、OSのネットワークAPIを使用して3ウェイハンドシェイクを完全に完了します。特別な権限が不要なため、権限のないユーザーが使用するフォールバックとなります。
完全に接続するため通信量が多く、ターゲットのサービスに記録される可能性も高くなります。
nmap -sT 192.168.1.10UDPスキャン
UDPスキャン(-sU)は、DNS、SNMP、DHCPなどUDPを使用するサービスを見つけます。UDPはコネクションレスであるため、スキャンは遅く、判定も難しくなります。
- 応答がない場合は、open|filteredを意味することが多くなります。
- ICMPのポート到達不能応答は、closedを意味します。
UDPサービスは見落とされることが多いため、重要な発見が隠れている可能性があります。
sudo nmap -sU --top-ports 50 192.168.1.10ステルススキャン
複数のスキャンでは、単純なファイアウォールをすり抜け、SYNの記録を避けるために、通常とは異なるフラグの組み合わせを送信します。
- FIN(
-sF):FINフラグだけを設定します。 - NULL(
-sN):フラグを設定しません。 - Xmas(
-sX):FIN、PSH、URGを設定し、「クリスマスツリーのように点灯」させます。
これらはRFCの仕様に依存しており、特定のプロトコルスタックでしか機能しないことがよくあります。
sudo nmap -sX 192.168.1.10ポートの選択
速度と網羅性のバランスを取るため、スキャンするポートを制御します。
-p 80,443:特定のポート。-p 1-1000:範囲。-p-:全65535ポート。--top-ports 100:最もよく使われるポート。-F:上位100ポートの高速スキャン。
nmap -p- 192.168.1.10
nmap --top-ports 100 192.168.1.10タイミングテンプレート
-Tフラグは、0(paranoid)から5(insane)までのタイミングを設定します。
- -T0/-T1:非常に低速で、IDSの回避に適しています。
- -T3:バランスの取れたデフォルトです。
- -T4:より高速で、信頼性の高いネットワークでよく使われます。
- -T5:積極的ですが、結果を見落とす可能性があります。
高速なスキャンほど通信量が増え、精度が下がるリスクがあります。
nmap -sS -T4 -p- 192.168.1.10ファイアウォール回避の基礎
Nmapには、ファイアウォールやIDSの耐性をテストするためのオプションがあります。
-f:パケットをフラグメント化します。-D:おとりの送信元アドレスを使用します。--source-port:53など、信頼されている送信元ポートになりすまします。
これらは、検知能力を評価する許可済みのテストでのみ使用してください。
実用的なスキャンへの組み合わせ
実際のスキャンでは、これらのオプションを組み合わせます。一般的な詳細TCPスキャンでは、スキャンタイプ、全ポート、高速なタイミングを指定し、出力を保存します。
まず広範囲にスキャンして開いているポートを見つけ、その後、実際に開いているポートだけを対象に、バージョン検出やスクリプトなどの集中的な追加スキャンを実行します。この2段階の方法は、最初からすべてを一度に実行するより高速で、通信も抑えられます。
sudo nmap -sS -p- -T4 -oA tcp_all 192.168.1.10
# Then deep-scan only the open ports found確認問題
スキャンをその動作に対応付けてください。
まとめ
ポートスキャンの手法について学びました。
- ポートの状態には、open、closed、filteredと不明確な派生状態があります。
- SYNスキャン(-sS)はステルス性に優れたデフォルトです。connect(-sT)は権限不要ですが、通信量が多くなります。
- UDP(-sU)は低速ですが、見落とされがちなサービスを見つけられます。
- FIN/NULL/Xmasスキャンは、単純なファイアウォールを回避します。
-pでポートを、-Tで速度を制御し、-f/-Dで回避手法をテストします。
次は、サービスとOSの検出です。
よくある質問
「ポートスキャンの技法」レッスンは無料ですか?
はい。「ポートスキャンの技法」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ethical Hacking Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ethical Hacking Academyコースには全4レッスンが含まれています。
「ポートスキャンの技法」で何を学びますか?
SYN、connect、UDP ブラウザで直接実行するハンズオンコードでEthical Hacking Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ethical Hacking Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのEthical Hacking Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「ポートスキャンの技法」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このEthical Hacking Academyレッスンでコードを書いて実行できますか?
はい。すべてのEthical Hacking Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ホストの探索
- ポートスキャンの技法
- サービスとOSの検出
- Nmap Scripting Engine