IPフラグメントIDポートスキャン

 TCPパケットのフラグビットを操作するポートスキャン・テクニックを紹介したが,このほかにもIPフラグメントIDポートスキャンと呼ぶ少々変わったポートスキャン・テクニックがある。

 IPフラグメントIDポートスキャンとは,パケットの送受信がIPフラグメントIDの生成に与える影響を利用したものである。IPフラグメントIDとは,IP(Version 4)ヘッダーに含まれる識別子(ID)で,各パケットを識別するためにパケットの送信元が割り当てる値である。受信側が,断片化されたパケットを再構成する際に用いる。多くのネットワーク・ドライバは,パケットが作成された順番に,このIDの値を規則的に増やすように実装されており,IPフラグメントIDポートスキャンではこの増分を調べることでポートの開閉を判断する。

図10●IPフラグメントIDポートスキャンの仕組み

 具体的には,図10[拡大表示]のように調べる。まず,攻撃者は第三者にTCPパケットを送信する((1))。この第三者は,標的の返信するパケットを受信させるホストとして利用する。攻撃者は,この返信パケットからIPフラグメントIDの生成について規則性を調べる((2))。攻撃者は,自身のIPアドレスを第三者のIPアドレスに偽装して,調査したいポート番号を指定したTCP(SYN)パケットを標的のホストに送る((3))。標的のホストはこのパケットを受け取り,第三者(偽造されたIPアドレス)に対してTCP(SYN+ACK)パケットを返信する((4))。

 この際,標的ホストのサービスが開いていると,第三者ホストはTCP(SYN+ACK)パケットに対してTCP(RST)を返信する。これにより,IPフラグメントIDが増える。攻撃者は再度,第三者にTCPパケットを送信し,その返信パケットのIPフラグメントIDが通常よりも増加していることで,目的のポートが開いていると判断する。逆に,IPフラグメントIDが通常よりも増えていなければ,ポートは閉じていると判断する。

 なお,NmapではIPフラグメントIDポートスキャンに「IdleScan(アイドル・スキャン)」という名称が付けられている。図10の(3)で使用するパケットもTCP(SYN)ではなく,TCP(SYN+ACK)を使う。

多様化するスキャン・テクニック

 以上,代表的なポートスキャン・テクニックについて紹介した。ほかにも,デコイ・ポートスキャンやIPフラグメント・ポートスキャンなどの手法がある。すべてのポートスキャン・テクニックについて紹介するのは困難と言えるほど多い。

 侵入者はこのようなポートスキャン・テクニックを駆使して,パケット・フィルタリングや侵入検知システムの回避を試み,標的とするホストを調査してくる。

 この実態を知っても,「ポートの開閉を侵入者に知られる程度」と思うかもしれない。しかし,ポートスキャンの結果から,ポートの開閉だけではなく,パケット・フィルタリングの性能や設定も推測することができる。このため,実際には「ポートの開閉を侵入者に知られる程度」では済まない。

 侵入者は,ポートスキャンの結果から得られた情報を基に,ポートの開閉やパケット・フィルタリングの性能や設定を知り,的確な侵入方法を探し出して侵入を試みてくるのだ。ポートスキャン・テクニックは今後もさらに進化し多様化していくと思われる。「たかがポートスキャン」とは考えず,十分に注意していただきたい。

Eiji James Yoshida

筆者はpenetration technique research site(http://www.geocities.co.jp/SiliconValley/1667/index.htm)を運営し,そこでセキュリティ関連の情報を提供している。Internet Explorer,Mozilla,OperaのFTP Viewが抱えていたクロスサイト・スクリプティングぜい弱性を発見したことで有名。監査技術に詳しい。