「ポートスキャン」とは
「ポートスキャン」とは、攻撃者がスキャン対象の稼働サービス、あるいは、そのサービスのバージョンやOSなどを特定する目的で行う調査手法のことである。一方でシステム管理者も、不要なサービスが外部からスキャン可能になってしまっていないか確認するためにポートスキャンを行う。
「ポートスキャン」とは、攻撃者がスキャン対象の稼働サービス、あるいは、そのサービスのバージョンやOSなどを特定する目的で行う調査手法のことである。一方でシステム管理者も、不要なサービスが外部からスキャン可能になってしまっていないか確認するためにポートスキャンを行う。
ポートスキャンでは、特徴のあるパケットをスキャン対象に送信し、それに対する応答の振る舞いを調べることにより、稼働サービスやサービスのバージョン、OSなどを特定する。例えば、TCPヘッダに含まれる「TCP Flags」の組み合わせを特徴あるものにしてパケットを送信したり、UDPやICMPなど他のプロトコルのパケットを送信したりする。これに対して「正常な応答が返ってくるか」「エラーが生じるか」「応答が返ってこないか」などの反応を見る。
ポートスキャンを行うツールとしては、CUIの「nmap」やGUIの「Zenmap」のようなポートスキャナーが有名である。Zenmapは、nmapをGUIで扱えるようにしたものであり、nmapの利用方法が詳細に分からずとも扱うことが可能である。
ポートスキャンによって、以下のような情報を得ることができる。
- 開いているポート番号
- 閉じているポート番号
- ファイアウォールによってフィルタリングされているポートの情報
- ポートが開いているのであれば、そのポートで稼働しているサービス(HTTPやFTPなど)に関する情報
- OSに関する情報
- 開いているポートのサービスに関する情報(バージョンやフィンガープリントなど)
nmapでは以下のように多くのスキャン手法を扱うことができる。
- SYNスキャン
これは最もよく使われる手法の一つであり、こちらからRSTパケットを送信して、3-way Handshakeを強制的に中断する。コネクションを確立しないため、「ハーフコネクトスキャン」「ステルススキャン」とも呼ばれる。
このスキャン手法では、コネクションが確立されないため、リモートサーバにログが残らない。その上、「ポートが開いているか」(open)、「ポートが閉じているか」(close)、「ファイアウォールなどによって弾かれているのか」(filtered)が明確に結果として得られる。
- TCPフルコネクトスキャン
実際にコネクションを確立することでスキャンを行う手法。パケットの生成が自由に行えないことでコネクションを張らざるを得ない状況において役に立つスキャン手法である。
コネクションを確立してしまうため、「ログに残る」「処理効率が悪くなる」(複数のポートをスキャンするために、毎回コネクションを確立していると無駄が多い)といったデメリットがある。
- ACKスキャン
ACKフラグのみ立てて、どのポートがフィルタリングされているか調べる手法。ポートが開いているか否かではなく、フィルタリングされているかどうかを調べるという点において、特殊な手法である。
この他にも以下のようなスキャン手法がある
- TCPウィンドウスキャン
- TCP Null、FIN、Xmasスキャン
- FINスキャン
- Xmasスキャン
- UDPスキャン
- ICMP echoスキャン
- TCP Maimonスキャン
これらのスキャン手法にはそれぞれ利点および欠点があり、「あらゆる状況において有効な、ただ一つのスキャン手法」というものはない。上記の他にもカスタマイズ性のあるスキャン手法があり、特性に応じて使い分けることで、あらゆる状況に柔軟に対処することが可能である。
関連用語
■更新履歴
【2004/1/1】初版公開。
【2018/12/17】最新情報に合わせて内容を書き直しました(セキュリティ・キャンプ実施協議会 著)。
Copyright © ITmedia, Inc. All Rights Reserved.