1.5 ポートスキャン

相手ホストにダメージを与える、もしくは侵入するといったとき、事前の準備として、ポートスキャンと呼ばれる調査を行います。これは「外部から対象サーバへアクセスが可能か?」「脆弱性のあるサービスが動いていないか?」を調べる作業です。

サーバにはいくつものサービス(メールのやり取りやホームページデータの送信等)がありますが、中には脆弱性を含むサービスがあり、これらを不用意に稼動すると、それらを突かれて侵入を許す場合があります。

攻撃を目論むクラッカは、まず対象サーバでどのサービスが稼動しているかを調べます。サービスはポートと呼ばれる接続口(実際にサーバに穴があるわけではないのですが、概念として1番から65535番までの接続口が開いていると考えてください)を通して提供されおり、基本的にどのサービスが何番のポートで提供されているかが決まっているため、アクティブになっている(開いている)ポートを見つければ、稼動中のサービスが何であるかの判断がつきます。たとえば、80番が開いていれば、そのサーバはhttpサービスが稼動しているとか、110番ならばPOP3のメール受信サービスが稼動していることが分かります。

そして、アクティブなポートを見つけるために、通例ポートスキャンと呼ばれる調査を行います。

ポートスキャンを実施して、アクティブになっているポートが見つかり、それが既知の脆弱性を持つサービスであれば、侵入や破壊行為へクラッキング行為は移行します。逆に言えば不要なサービスを全部停止してしまえば(不必要なポートを塞いでしまえば)、ポートスキャン対策になります。

元来ネットワーク管理者がポートの状態確認のために行う調査ですが、クラッカは侵入前調査のためにこれを悪用しているのです。

1.5.1 ポートスキャンの実際

では実際にポートスキャンはどのようにして行われるのでしょうか。

ポートスキャンツールがアンダーグラウンドで出回っており、多くのクラッカ及びクラッカ予備軍はこれらのツールを使っています。こうしたツールはインターネットに公開されているサーバ群をIPアドレス番号順に「ポートスキャン」し、脆弱性を抱えたサーバを見つけるとアラートを出します。

例:
201.1xx.4xx.xx1
201.1xx.4xx.xx2
201.1xx.4xx.xx3 ・ ・ ←グローバルIPアドレスの順番にスキャンする

産業スパイや怨恨によるクラッキングのような、攻撃対象を決めて攻撃を行うクラッキングだけでなく、以前から「クラックできそうなサーバをクラックする」傾向もあり、あまりサイトの質や企業名を気にして攻撃はしていません。こうした考えのクラッカは、IPの数字の列を狙ってポートスキャナを自動モードで作動させ、セキュリティの甘いサーバが引っかかるのを待ちます。

ポートスキャンツールは、IPアドレスを無差別スキャンするので、サイトの規模や有名性、公共性とは無関係に攻撃を受けるのです。

1.5.2 ポートスキャンの各種方法

ポートスキャンにはいくつかの方法があります。どれもTCP/IPの特性を利用したものです。

「TCPスキャン」は対象サーバのポートに接続するためにアクセスログが残ってしまいます。スキャンツールの多くがこのタイプになります。これを避ける手法に「スティルススキャン」があります。

「スティルススキャン」はスキャニングをした際のサーバの応答を見てポートの状態を確認します。接続を行わない手法のため、アクセスログが残らず発見されにくいという特徴があります。SYNスキャン、FINスキャンと呼ばれる手法等がこれにあたります。

ポートスキャンの主な方法

方法

TCP/UDP

概要

TCPスキャン

TCP

標的ポートに接続し、3wayハンドシェークと呼ばれるSYN-SYN/ACK-ACKのシーケンスを実行します。
被攻撃サイトにおいてスキャン行為の検出は容易。

SYNスキャン

TCP

完全なTCP接続を行わないスキャン手法です。ハーフオープンスキャンまたはスティルススキャンと呼ばれています。接続するかわりに、SYNパケットを標的のポートに送信します。

  • 標的ポートからSYN/ACKを受信した場合のポートはリスン状態
  • 標的ポートからRST/ACKを受信した場合のポートは非リスン状態

FINスキャン

TCP

標的にFINパケットを送信するスキャン手法です。 標的ホストは、RFC793に基づき、 クローズした全てのポートにRSTを送り返さなければなりません。
この手法は、UNIXのBSDソケットにしか通用しません。

クリスマスツリースキャン

TCP

標的ポートに、FIN、URG、PUSHパケットを送信するスキャン手法です。FINスキャン同様、標的ホストはクローズした全てのポートについてRSTを送り返さなければなりません。

NULLスキャン

TCP

全てのフラグを"0"にするスキャン手法。
FINスキャン同様、標的ホストはクローズした全てのポートについてRSTを送り返さなければなりません。

UDPスキャン

UDP

標的ポートにUDPパケットを送信。標的ポートが "ICMP port unreachable" というメッセージで応答したポートはクローズされているとみなします。
パケットフィルタリングを施したディバイスに対するUDPスキャンは、 比較的時間がかかります。また、UDPの性質上、ネットワーク越しにスキャンを行う場合の信頼性は非常に低くなります。

1.5.3 スタックフィンガープリンティングとは?

スタックフィンガープリンティングとは、ホストのOSを特定する行為です。

OSが特定されるとその攻撃方法の範囲が決まります。以下で紹介するnmap は元々管理用として作成されたものであり、自組織内部で利用するものです。管理用のツールによってポートがオープンされていなくてもOS特定が可能となります。

1.5.4 Anonymous FTPによるポートスキャン

サーバ側でポートスキャンの状況をロギングしにくい方法があります。この方法の一つがAnonymous FTPを使用したポートスキャンです。

FTPは、コマンドとデータの通信では異なるポートを利用します。これによって、ロギング上ではFTPの利用として見える訳なのです。

しかし、下記のように500番代のエラーを返すFTPサーバのソフトウェアを使用するか、 設定を加えることでFTPによるポートスキャンは回避することができます。

  1. Anonymous FTPにtelnet(ポート21)で接続する。
  2. ユーザ名anonymousでログイン。user anonymous
  3. パスワードとしてメールアドレスを入力します。
    pass mymail@attack.co.jp
  4. PORTコマンドでIPアドレスとポート番号を送ります。
    port IPアドレス,ポート
    1,ポート2ここで、500番台の数字が返された場合、 このAnonymous FTPサーバではポートスキャンを行うことができません。
  5. もしPORTコマンドが利用可能であればLISTコマンドで
    ファイルリストを取得list
  6. PORTコマンドの結果を確認
    指定されたポートが開いているならば150が返され、 ポートが開いていないならば425が返されます。
    425 Can't build data connection:Connection refused.

このようにあらゆる手法によってポートスキャンが行われています。

注意してログ等を確認しないと気づかないこともあります。そして、ポートスキャンを受け発見された弱点から攻撃や踏み台として利用されるのです。

1.5.5 ポート管理のOS別注意点

(1)UNIX、Linux、MacOS X Server

MacOS XもBSD系のOSであるため、UNIXやLinuxと同様の注意が必要です。これらUNIX系のOSの場合、不要なポートは当然すべて閉じなくてはなりませんが、特に111番ポートのrpcサービスは管理者権限を奪われる危険性があります。また79番ポートのfingerもサーバのユーザ情報を抜き取られる脆弱性を持っています。

(2)Windows 2000 Server、XP Server

Windows OSで留意すべきポートは、やはり137番と139番のNetBIOSでしょう。このポートが開いていると、サーバ名やIIS情報、稼動中サービス、ドメイン等、ほとんどのサーバ情報を閲覧される危険性があります。


前へ ホームへ 次へ


    © 2002 Information-technology Promotion Agency, Japan. All rights reserved.