今週のSecurity Check(第187回)

 稼働しているシステムのぜい弱性を調べる場合,基本的な作業としてポート・スキャンを実施するケースは少なくない。ポート・スキャンはぜい弱性検出のための常とう手段であり,ポート・スキャンによって発見される問題点はまだまだ多い。ただ,利用時にはいくつか注意点がある。そこで今回は,基本的なポート・スキャンの実践方法を紹介しよう。当然のことが、ポート・スキャンは自分で管理している機器およびネットワーク環境においてのみ実施すること、そうでない場合は不正アクセスとみなされてしまう可能性もあるので特記しておきたい。

 ポート・スキャンとは、簡単に言うとネットワーク越し(内部からの場合もある)にサーバーやネットワーク機器といったTCP/IPが稼働する機器が動作しているかどうかの確認や、機器上で稼働しているポートの特定、稼働しているアプリケーション情報を入手できる。例えばポート25番が開いていればメール送信用のサービス(SMTP)が稼働しているし、ポート80番が開いていればWebサーバーが稼働していると推測される。

 手順としては、一般にぜい弱性診断ツールで診断する前段階でポート・スキャンを実施することが多い。裏を返せば、実際の攻撃者はポート・スキャンで探りをいれる場合がある。不要なポート、想定外のポートが開いていると攻撃の対象になりやすいだけでなく,パッチ・プログラムの適用漏れが発生する可能性も大きくなる。特にインターネットに接続されている機器、個人情報や重要なデータの格納されている機器に関しては,稼働しているポートは正確に把握しておきたい。

 ポート・スキャンを実施する場合には、いくつかのツールを使用する。代表的なものに,フリーで利用できるnmap(http://insecure.org/),superscan(http://www.foundstone.com/)などがある。インストール方法は各ツールのページに記載されているで参照していただきたい。

 ただ,安易にポート・スキャンを実行すると,実行マシンや,対象システムに多大な負荷がかかることがある。実行マシンや対象システムのリソース状況,実行する時間帯,完了するまでにかかる時間などを考慮したうえで取り組む必要がある。

 実際にnmap(ver4.20,Windows版)を使ってポート・スキャンした結果を見てみよう。ここでは,通常TCPのフルレンジ(1-66535)について,稼働しているTCPポートとアプリケーションのバナー情報を確認するものとする。使用した機器のスペックは下記の通り。

  • CPU:Pentimu4 2.6GHz(Hyper-Threading対応)
  • メモリー:512Mバイト
  • ディスク:80Gバイト
  • OS:Windows XP Professional Edition

     まず,コンソールから

    nmap -sS -sV -p ポート・レンジ 対象サーバー

    を実行する。それぞれのオプションの内容は,-sS:TCPのSYN scanを実施,-sV:バージョンス・キャン,-p:対象範囲のポートである。

     結果サンプルを下に示す。結果のサンプルでは、TCPの7,80,443,5432,6000,32770の各ポートが開いていることが示されている。通常インターネットに公開するWebサーバーであれば80番と443番だけを開放すればよいので、その他のポートはサービスを停止するかファイアウォールでブロックすることが望ましい。またバージョン情報からWebサーバー・ソフトがApache httpd 2.2.0であることがわかる。バージョン情報を入手できたら,この情報を基にCERT(http://www.cert.org/)やX-Force(http://xforce.iss.net/)のデータベースから脆弱性情報を入手できる。例えばX-Forceのデータベースを検索するとApache httpd 2.2.0には下記のような脆弱性が報告されている。対策はバージョンアップなのでApacheのサイトや開発ベンダーの情報を基にアップグレードを検討することになる。その他のバージョン情報に対しても同様に調べていくことになる。

    VID 危険度 脆弱性名称
    28063 high Apache mod_rewrite off-by-one buffer overflow
    24008 Low Apache mod_ssl custom error message denial of service
    注)VIDはX-Forceで脆弱性に付与されている一意の番号。

     ただ,実施にかかる時間は、前記サンプルのように1分程度で済むものもがある一方で、長いもので6時間以上かかるものもある。特にUDPのスキャンは時間がかかることが多い。そこでポート・スキャン実行時にやっておきたいのが,推定処理時間の表示である。現行のnmapでは,ポート・スキャンを実施している画面でEnterキーを2回押すと終了までにかかる推定時間が示される。この時間を目安に,継続するかどうかを判断する必要があるだろう。

     次に,ポート・スキャン実施中のシステム・リソースの状況を確認しておきたい。ポート・スキャンは、複数のターゲットに対して同時に実施することが多く,CPUの使用率が100%に近い状態で推移したりページ・ファイルが増加していく状態では,精度の点や実施時間の問題が出てくる場合がある。どの程度まで並行実施できるかを把握し,バランスをとることが重要である。

     同時並行を実施する場合には、シェルスクリプトやWSHを用意しておくと便利である。以下にWSHのサンプル(test.js)を示す。

    var WShell = WScript.CreateObject("WScript.Shell");
    WShell.Run("nmap -sS -sV -p 1-65535 ターゲットIP -oN ログファイル名");

     ポート・スキャンを実施する前の状態は、以下の図の状態となる。CPUの使用率は0~4%程度を推移しており。利用可能な物理メモリーは209Mバイト程度である。一つのIPアドレスに対して実施した場合のCPU使用率は12%~15%の間を推移しており,利用可能な物理メモリーの減少は17Mバイト程度(利用可能な物理メモリーは190Mバイト程度)である。5IPに対して同時に実行すると,CPUの使用率は65%~75%の間を推移、利用可能な物理メモリーは134Mバイト以下まで減少している。さらに10IPになると,CPUの使用率は95%~99%の間を推移、利用可能な物理メモリーは70Mバイト以下まで減少した。同時に,ページ・ファイル使用量が徐々に増加しているのが分かるだろう。


    ポート・スキャンを実行する前のCPU使用率

    一つのIPアドレスに対してポート・スキャンを実行した場合のCPU使用率

    5IPに対してポート・スキャンを実行した場合のCPU使用率

    10IPに対してポート・スキャンを実行した場合のCPU使用率


    高橋 宗昭
    インターネットセキュリティシステムズ
    プロフェッショナルサービス本部 第一コンサルティング課 マネージャ

     ITpro Securityが提供する「今週のSecurity Check」は,セキュリティに関する技術コラムです。セキュリティ・ベンダーである「インターネット セキュリティ システムズ株式会社」のスタッフの方々を執筆陣に迎え,同社のセキュリティ・オペレーション・センター(SOC)で観測した攻撃の傾向や,セキュリティ・コンサルタントが現場で得たエッセンスなどを織り交ぜながら,セキュリティに関する技術や最新動向などを分かりやすく解説していただきます。(編集部より)