セキュリティスキャナーのIDS回避機能とは

 次に一部のセキュリティスキャナーにあるIDS回避機能について見てみよう。

HTTPアクセス時のIDSの回避ツール

 ルールセットなどの解説で、何度かWebサイトアクセス時のルールなどについて記したが、攻撃を行うものからすれば、このようなアクセスを行う際にIDSの検知を回避して、管理者に気づかれないようにスキャンを行いたいと考えるだろう。スキャンにより脆弱性が見つかれば、それを利用したアタックを行えばよいからだ。

【参考】以前にあったIDS回避の脆弱性に関するリンク(Unicode によるIDS回避の脆弱性)
%u encoding IDS bypass vulnerability
Microsoft IIS "%u encoding IDS bypass vulnerability"

 フリーソフトウェアのセキュリティスキャナーである「Nessus」「Whisker」といったツールには、HTTPアクセス時のIDS回避機能といった項目がある。ほかのIDS回避ツールとして、「MUTATE2」というAnti IDS Proxyなどがある。

画面
写真2■Nessusの実行画面
画面
写真3■MUTATE2の実行画面

 実際には、最新のIDSを利用していれば、HTTPアクセス回避機能を利用したところで、IDSの検知を逃れることは難しいが、どういった手法でHTTPアクセス時のIDS検知回避を試みているのか、古典的でわかりやすいものを例としてあげて見てみよう。

Method matching(リクエストメソッドをGETからHEADなどに変更する)

GET /cgi-bin/phf HTTP/1.0
HEAD /cgi-bin/phf HTTP/1.0

URL encoding(URLをエンコードする)

cgi-bin
%63%67%69%2d%62%69%6e

Double slashes(スラッシュをダブルスラッシュに変更する)

/cgi-bin/phf
//cgi-bin//phf

Reverse traversal(適当な名前のディレクトリなどを入れ../でリバースさせる)

/cgi-bin/phf
/hogehoge/../cgi-bin/phf

Self-reference directories(カレントディレクトリ./を加える)

/cgi-bin/phf
/./cgi-bin/./phf

 単純な例ではあるが、検出を逃れるために、アクセスの形態を変化させようとしていることは分かるだろう。当然ながら、こういったアクセスを行ったところで、現在ではIDSには検知されてしまう。

 前述したスキャナーには、この種の手法のほかにも、さまざまな形態に変化させてHTTPアクセスを試みる機能が備わっている。たとえば、Whisker v1.4には下記のようなオプションが、IDSの回避機能として用意されている。

-I 1 IDS-evasive mode 1 (URL encoding)
-I 2 IDS-evasive mode 2 (/./ directory insertion)
-I 3 IDS-evasive mode 3 (premature URL ending)
-I 4 IDS-evasive mode 4 (long URL)
-I 5 IDS-evasive mode 5 (fake parameter)
-I 6 IDS-evasive mode 6 (TAB separation) (not NT/IIS)
-I 7 IDS-evasive mode 7 (case sensitivity)
-I 8 IDS-evasive mode 8 (Windowsdelimiter)
-I 9 IDS-evasive mode 9 (session splicing) (slow)
-I 0 IDS-evasive mode 0 (NULL method)

 ちなみに、SnortのルールセットからWhiskerに関するルールを抜き出してみると、4つのルールを見つけることができる。

#------------------------------------
cd /etc/snort
# grep whisker *.rules
 
web-misc.rules:alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"WE
B-MISC whisker HEAD with large datagram"; content:"HEAD"; offset: 0; depth: 4; n
ocase; dsize:>512; flags:A+; classtype:attempted-recon; reference:url,www.wiretr
ip.net/rfp/pages/whitepapers/whiskerids.html; sid:1171;rev:6;)
web-misc.rules:alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"WE
B-MISC whisker HEAD/./"; flags:A+; content:"HEAD/./"; classtype:attempted-recon;
reference:url,www.wiretrip.net/rfp/pages/
whitepapers/whiskerids.html; sid:1139;
rev:6;)
web-misc.rules:alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"WE
B-MISC whisker space splice attack"; content:"|20|"; flags:A+; dsize:1; referenc
e:arachnids,296; classtype:attempted-recon; reference:url,www.wiretrip.net/rfp/p
ages/whitepapers/whiskerids.html; sid:1104;rev:6;)
web-misc.rules:alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"WE
B-MISC whisker tab splice attack"; dsize: <5; flags:A+; content: "|09|"; referen
ce:arachnids,415; classtype:attempted-recon; reference:url,www.wiretrip.net/rfp/
pages/whitepapers/whiskerids.html; sid:1087;rev:6;)

Whisker v1.4でオプションIDS-evasive mode 4(long URL)を利用しスキャンした際のログの一部を見れば、4つあるルールのいちばん上のルールから、検出されていることがわかるだろう。

[**] WEB-MISC whisker HEAD with large datagram [**]
08/12-14:05:26.889098 192.168.1.4:40414 -> 192.168.1.11:80
TCP TTL:64 TOS:0x0 ID:55335 IpLen:20 DgmLen:1500 DF
***A**** Seq: 0xD6A0DE2CAck: 0xD13FCA7BWin: 0x16D0TcpLen: 32
TCP Options (3) => NOP NOP TS: 5441038 4514390
48 45 41 44 20 2F 61 68 65 77 6F 6C 66 68 65 67HEAD /ahewolfheg
74 74 71 6B 67 6E 67 6E 76 6C 73 64 69 65 7A 6Dttqkgngnvlsdiezm
79 72 68 71 6D 69 69 79 74 64 7A 6B 6D 75 75 6Fyrhqmiiytdzkmuuo
72 67 68 6C 68 75 66 6B 74 7A 64 7A 61 77 69 74rghlhufktzdzawit
6D 65 66 69 77 72 64 6D 69 63 77 6D 78 75 6A 68mefiwrdmicwmxujh
71 6A 7A 62 71 76 75 7A 66 76 63 6F 6B 6E 66 73qjzbqvuzfvcoknfs
71 74 70 74 79 66 7A 61 72 70 70 73 79 75 71 68qtptyfzarppsyuqh
71 73 67 65 72 7A 79 73 6C 73 79 78 65 6A 76 76qsgerzyslsyxejvv
6D 73 73 72 68 64 68 6A 76 63 69 67 75 79 74 6Fmssrhdhjvciguyto
68 64 77 75 68 7A 72 74 76 79 6F 79 6B 67 77 64hdwuhzrtvyoykgwd

〜以下略〜

 Whiskerを利用した全てのIDS回避モードについては記述しないが、興味があるならばWhiskerやMUTATE2などを使い、ローカル環境でテストしてみるとよいだろう。ただし、実際にこれらのツールを使用してスキャンを行われたとしても、現状ではIDSを回避することは難しい。しかし、今後あらたな回避方法が発見される可能性もあるだろう。HTTPアクセスに関するIDS回避について詳しく知りたい場合は、少し古い英文ではあるが、「A look at whisker's anti-IDS tactics」あたりを参照してみよう。

 今回紹介したもの以外にも、いくつかIDSを回避するとされる手法がある。しかし、今後も攻撃する側と防御する側のイタチゴッゴが続くことだけは間違いない。最新の情報を入手して参考にしながら、自分のサーバを守る手段を確保してほしい。

[TTS,ITmedia]

PREV 5/5