攻撃を仕掛ける場合,攻撃者は必ず標的から攻撃に必要な情報を収集する。このときに使われるのがポートスキャンだ。直接の攻撃でないため,一見地味だが,システム管理者はポートスキャンに敏感でなければならない。そこで本記事では,ポートスキャンの基本的なテクニックを解説する。

 IPAセキュリティセンターの「ウイルス・不正アクセス届出状況(12月分及び2002年分)」(http://www.ipa.go.jp/security/txt/2003/01outline.html)を既に読まれた方も多いと思う。この報告によると,不正アクセス届出数は,2002年の1年間だけで619件にもなり,過去6年間で最多となった。企業だけではなく一般家庭にも常時接続が普及していることや,良くも悪くも多くの情報が誰にでも容易に手に入る環境が整いつつあることが,不正アクセスを増加させる要因の一つになっているのではないかと思われる。

 このような状況下で,不正アクセスの被害者にならないためには,侵入者と同じ視点から自分のパソコンを調べて,狙われやすいかどうかを見定める必要があるのではないだろうか。この「侵入者に狙われやすいかどうかを調べる技術」,言い換えれば「侵入者が獲物を見定める技術」の基礎ともいえるものが,ポートスキャン・テクニックである。

 ポートスキャン・テクニックは,今現在も侵入者やセキュリティ関係の技術者が研究し続けている。この結果,多くのポートスキャン・テクニックが生み出されている。

ポートスキャンとは

 まずは,ポートスキャンについて簡単に説明しよう。

 ポートスキャンとは,サービスを提供しているマシン(サーバー)のポートに対してパケットの送受信を行い,ポートの開閉を調べる行為である。ポートとは,サーバー上で稼働している複数のサービスを区別するために割り当てる識別子で,HTTPなら80番,Telnetなら23番と主要なネットワーク・サービスのポート番号は決まっている。ポートスキャンで得たポートの開閉情報から,サーバーがどのサービスを提供しているかはIANAにある「PORT NUMBERS」(http://www.iana.org/assignments/port-numbers)を参照すれば推測することができる。

基本的なテクニック

図1●Telnet コマンドやNetcat を用いてポートスキャンを行う場合のコマンド例
図2●TCP ポートスキャンによるパケットの送受信
図3●UDP ポートスキャンによるパケットの送受信

 次に,基本的なポートスキャン・テクニックについて説明する。ポートスキャンの種類を大きく区分けすると以下の2種類になる。

(1)TCPポートスキャン(TCPのポートを走査してポートの開閉を調査)
(2)UDPポートスキャン(UDPのポートを走査してポートの開閉を調査)

 TCPとUDPの2種類のポートに,TelnetコマンドやNetcatなどのツールを用いて接続を試み,接続できるかどうかでポートの開閉を調べるのが基本的なポートスキャン・テクニックと言える。実際にTelnetコマンドやNetcatを用いてポートスキャンを行う方法は図1[拡大表示]の通りである。

 図1を見ると分かると思うが,基本的なポートスキャン・テクニックとは,Telnetコマンドなど使って指定したポート番号に接続できるかどうかを調べるシンプルなものである。

 次に,TCPポートスキャンやUDPポートスキャンによるパケットの送受信のロジックを説明しよう。

パケット送受信の詳細

 TCPポートスキャンにおけるパケットの送受信は図2[拡大表示]の通りである。図2の上図を見ると分かると思うが,TCPは〔TCP(SYN)パケット〕 → 〔TCP(SYN+ACK)パケット〕 → 〔TCP(ACK)パケット〕という順番でパケットの送受信を行う。ここで示した(SYN)(SYN+ACK)(ACK)は,TCPパケットにあるそれぞれのフラグのビットが立っていることを示す。

 TCPでは,この手順を3ウェイ・ハンドシェイク(3Way Handshake)と呼び,これが完了することで接続確立となる。TCPポートスキャンでは,3ウェイ・ハンドシェイクがきちんと完了して,接続が確立できたかどうかでポートの開閉を判別している。

 一方のUDPポートスキャンにおけるパケットの送受信は図3[拡大表示]の通りである。UDPでは,ICMP不達通知パケットが届かなければ接続となる。UDPポートスキャンは,ICMP不達通知パケットを受信したかどうかでポートの開閉を判別している。

 UDPポートスキャンでは,ICMP不達通知を受信しなければポートが開いていると判断するため,UDPパケットが途中経路で消失もしくは消去された場合にもポートが開いていると判断してしまう。このため,UDPポートスキャンの結果は信頼性が低い。

Eiji James Yoshida

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