相手ホストにダメージを与える、若しくは侵入するといったとき、
事前の準備としポートスキャンと呼ばれることを行う場合が多くあります。
ポートスキャンは、泥棒が家屋に侵入する、どこに鍵がかかっているか、
そして鍵がかかっていないところを探す行為に近いと考えることができます。
ポートスキャンが違法行為かどうかは意見の分かれるところですが、
悪意を持った場合もあります。
ポートスキャンを受ける側としては、穴を見せないということが必要です。
攻撃する側からは、ポートスキャンを行い、穴を発見するとそこから攻撃を行います。
つまり、弱い部分を見せると確実に狙われるということです。
攻撃を受けないためには、弱い部分を発見するポートスキャンを受けた段階で、
弱味を見せないということが大前提なのです。
ポートの状態を確認した後は、攻撃するためにOSを絞り込む作業を行います。
これによって、より的確な攻撃を行うことができます。
ポートスキャンは攻撃のときばかり使用するわけではありません。
管理者が、どのポートが空いているのか等を確認するときにも使用します。
これは、ポートスキャンに限らず、スキャナ全般において言えることです。
まずは、不要なポートが空いていないかポートスキャンを行う必要があります。
もし、ポートスキャンの結果が問題無いようであっても安心はできません。
安全性を確認するものではなく、少しでも安全な環境に近づくためのものに過ぎないのです。
では実際にポートスキャンはどのようにして行われるのでしょうか。
まず、ポートスキャンを行うには、相手を絞る必要があります。
この相手を絞るためのものはいくつかありますが、たとえば次のようなものです。
このように、ある程度対象を絞ります。次に対象となるサイトがどのIPアドレスを使用しているかを調べます。これは、ドメイン情報から簡単に確認することができます。
スキャン対象となるサイトのIPアドレスの範囲が割り出せると、実際にどのIPアドレスにホストが接続されているかを調べる作業に入ります。
このように、スキャン対象のサイトには192.168.0.1というIPアドレスが実際に使用されていることがわかります。
それでは、このIPアドレス(192.168.0.1)に対してどのポートが開いているかをポートスキャンによって確認してみます。
ここまでで対象となるホストはポート 21,22,23,25,111
が空いていることが分かりました。
このポートに対して攻撃を行うことになります。攻撃する側からは、
闇雲に攻撃を仕掛けるのでは時間と労力の無駄になります。
たとえば、存在しないホストに対して攻撃するほど無駄なことはないでしょう。
同様に、空いてもいないポートに対して攻撃を行っても大きな意味はありません。
ただし、ポートスキャンで空いていないポートにも攻撃を行うことは可能です。
空いていないポートが安全なのではなく、空いているより良いという程度に考えておくようにしてください。
なお、ポートスキャンで使用するツールは元々管理用として作成されたものです。
ポートスキャンにはいくつかの方法があります。
どれもTCP/IPの特性を利用したものです。
これを表にまとめました。
| 方法 | TCP/UDP | 概要 |
|---|---|---|
| TCPスキャン | TCP |
標的ポートに接続し、3wayハンドシェークと呼ばれるSYN-SYN/ACK-ACKのシーケンスを実行します。 被攻撃サイトにおいてスキャン行為の検出は容易。 |
| SYNスキャン | TCP |
完全なTCP接続を行わないスキャン手法です。
ハーフオープンスキャンまたはステルススキャンと呼ばれています。
代わりに、SYNパケットを標的のポートに送信する。
|
| 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の性質上、ネットワーク越しにスキャンを行う場合の信頼性は非常に低くなります。 |
スタックフィンガープリンティングとは、ホストのOSを特定するものです。
OSが特定されるとその攻撃方法の範囲が決まります。
以下で紹介するnmap
は元々管理用として作成されたものであり、自組織内部で利用するものです。
管理用のツールによってポートがオープンされていなくてもOS特定が可能となります。
サーバ側でポートスキャンの状況をロギングしにくい方法があります。
この方法の一つがAnonymous FTPを使用したポートスキャンです。
FTPは、コマンドとデータの通信では異なるポートを利用します。
これによって、ロギング上ではFTPの利用として見える訳なのです。
しかし、下記のように500番代のエラーを返すFTPサーバのソフトウェアを使用するか、
設定を加えることでFTPによるポートスキャンは回避することができます。
このようにあらゆる手法によってポートスキャンが行われています。
注意してログ等を確認しないと気づかないこともあります。
そして、ポートスキャンを受け発見された弱点から攻撃や踏み台として利用されるのです。
Copyright(C) 2001 Information-technology Promotion Agency, Japan. All rights reserved.