目次
問題文
脆弱性検査で,対象ホストに対してポートスキャンを行った。対象ポートの状態を判定する方法のうち,適切なものはどれか。
ア 対象ポートにSYNパケットを送信し,対象ホストからRST/ACKパケットを受信するとき,接続要求が許可されたと判定する。
イ 対象ポートにSYNパケットを送信し,対象ホストからSYN/ACKパケットを受信するとき,接続要求が中断又は拒否されたと判定する。
ウ 対象ポートにUDPパケットを送信し,対象ホストからメッセージICMP port unreachableを受信するとき,対象ポートが閉じていると判定する。
エ 対象ポートにUDPパケットを送信し,対象ホストからメッセージICMP port unreachableを受信するとき,対象ポートが開いていると判定する。
解説
解答
ウ
この問題は ポートスキャンによる対象ポートの状態判定 を理解しているかを問うものです。
TCPとUDPで判定方法が異なるので、それぞれ整理しましょう。
TCPポートスキャンの場合
- SYNスキャン(半開スキャン)が代表例です。
- ポートに SYNパケット を送信
- 相手が SYN/ACK を返してきたら「ポートが開いている」と判断(接続許可)
- 相手が RST/ACK を返してきたら「ポートが閉じている」と判断(接続拒否)
→よって、選択肢ア・イの説明は逆になっており、不適切です。
UDPポートスキャンの場合
UDPはコネクションレスなので、TCPのようにSYN/ACKで状態を判定できません。そのため ICMPエラーメッセージ が重要な手掛かりとなります。
- UDPパケット送信 → ICMP Port Unreachableが返ってきた場合
→ そのポートは「閉じている」と判定できる。 - UDPパケット送信 → 応答なし or UDPアプリケーション応答あり
→ ポートが「開いている」可能性あり。
→この仕組みが、まさに選択肢 ウ の説明です。
各選択肢の整理
- ア:RST/ACKを受信 → 実際は「閉じている」ことを示すので誤り
- イ:SYN/ACKを受信 → 実際は「開いている」ことを示すので誤り
- ウ:UDP+ICMP Port Unreachable → 「閉じている」と判定 → 正解
- エ:UDP+ICMP Port Unreachable → 「開いている」と判定 → 誤り
スキャン種別 | 送信するパケット | 応答 | 判定結果 |
---|---|---|---|
TCPスキャン | SYN | SYN/ACK | ポートが 開いている |
TCPスキャン | SYN | RST/ACK | ポートが 閉じている |
TCPスキャン | SYN | 応答なし | フィルタリングされている可能性あり(FWなど) |
UDPスキャン | UDP | ICMP Port Unreachable | ポートが 閉じている |
UDPスキャン | UDP | UDPアプリケーションから応答あり | ポートが 開いている |
UDPスキャン | UDP | 応答なし | 開いている可能性あり(FWでドロップのケースも) |