Webサイト改ざん 新型CookieBombの解析
CookieBombと言えば、2013年6月頃に相次いだWebサイト改ざんでインジェクションされたものです。
当時書いた記事はこちら =» 「相次ぐWebサイト改ざん被害 遅れる対応 -CookieBomb-」
今回は再び、CookieBomb新型なるWebサイト改ざんが広まってきているようです。
0day.jp: 新型「CookieBomb」マルウェア転送クッションのdecoding方法(日本語版)
Malware Must Die!: ..And another “detonating” method of CookieBomb 2.0 - Part 1
..And another “detonating” method of CookieBomb 2.0 - Part 2
ということで、今回も日本国内サイトをざっと調査してみました。
とはいっても0day.jpさんで日本語の記事もあり、二番煎じではありますが、もうちょい詳しく解説してみようと思います。
改ざんが確認できたサイト
hxxp://www.tt-j.co.jp hxxp://www.kk-kawasaki.co.jp hxxp://www.ultrabloggers.jp hxxp://www.wakayama-masui.jp hxxp://cvsli.org hxxp://www.nagatoro.gr.jp hxxp://www.italiangelato-kyokai.com/ hxxp://barbar.jp hxxp://www.marushige-cha.jp hxxp://marunouchi-mc.com hxxp://edbus.net hxxp://hair-pocket.com hxxp://renai.trendtop.net/
※既に修正されているものも含まれているかもしれません。
インジェクションされたものの、エスケープされかろうじて実行されないものも含みます。
いずれも脆弱な古いWordPressで運用されているサイトが非常に多いです。
改ざん内容
まず、インジェクションされる難読化されたJavaScriptは以下の様なもの。
escapeしているだけで、以前よりやる気が無くなったようにも見えます(笑)
そして、こいつをデコードしてやると、以下のようになります。(整形済み)
前回と違うのは、DOCTYPE宣言を含めて完全なHTML文書が出力されてることですね。
あとは前回と同様にCookieがセットされていないかどうかをチェックして、「hxxp://91.239.15.61/google.js」をロードするscript要素を生成します。(今のところこのURLしか確認されていない。)
今回Cookieは「doRedirect=true」というのがセットされます。
0day.jpには「初回アクセスで転送されず、その次で転送される」と書いてありますが、たぶん間違いです。(追記参照)
初回アクセスだけ転送(script埋め込み)とCookieのセットが行われ、次回以降アクセス(Cookieが存在する)では何も行われません。
発動条件はif(!thecookie)なので。
そして、お次は「hxxp://91.239.15.61/google.js」を見てみましょう。
--2014-01-31 01:02:42-- http://91.239.15.61/google.js 91.239.15.61:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... ---response begin--- HTTP/1.1 200 OK Date: Thu, 30 Jan 2014 16:02:49 GMT Server: Apache/2.2.22 (Ubuntu) Last-Modified: Sat, 04 Jan 2014 20:39:44 GMT ETag: "60ffc-8da-4ef2b06d38400" Accept-Ranges: bytes Content-Length: 2266 Vary: Accept-Encoding Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: application/javascript ---response end--- 200 OK 長さ: 2266 (2.2K) [application/javascript] `google.js' に保存中 2014-01-31 01:02:43 (37.4 MB/s) - `google.js' へ保存完了 [2266/2266]
コードは以下の通りです。(整形済み)
一見複雑そうな難読化に見えますが、大したことはありません。
まず、_0xe2b8にそれ以下のコード内で使いそうな文字列が16進表記でぶち込まれています。
seはReferrerチェック用の文字列が格納されている感じですね。
配列内容を文字列で書き出しておくと以下の様な感じです。
例えば、2行目だったら、「var from = document[“referrer”]」と等価ということです。単純に置換すると思えば。
結局何をしているかというと、
まず5行目のfor文はse.length回ループさせ、6行目のif文でReferrerがseに含まれているものかチェックしています。
含まれていたら、7行目でCookieのチェックになります。
初回アクセス(Cookieが存在しない)場合に、8行目のwindow[“location”] = “hxxp://91.239.15.61/g.php“が実行され、リダイレクトされます。
なお、ここで判定されるCookieは改ざんページにインジェクションされたCookieBombとは異なります。
44行目でsetCookieを呼び、「referrerRedirectCookie=“do not redirect”」がセットされます。
以上のことをまとめると、
Cookie「doRedirect=true」がセットされていない。(つまり初回アクセス時)
↓
外部サーバーからJavaScriptをロードするscript要素を生成・挿入。(google.js)
↓
特定Referrerかつ、Cookie「referrerRedirectCookie=“do not redirect”」がセットされていない(つまり初回アクセス時)
↓
リダイレクト実行!!
ということになります。2段階のCookieチェックになっていますね。
そして、”hxxp://91.239.15.61/g.php“ですが、(VirusTotal)
http://91.239.15.61/g.php ==[302]==>> http://goo.gl/Yun4bN ==[301]==> http://pagerank.net.au/css/js/ ==[HTTP-EQUIV="REFRESH"]==> http://fa02e4011kwko1h3u0relhtgvd.hop.clickbank.net/?tid=LOVE ==[301]==> (あと3回ぐらいどっか飛ぶ。省略。) ==[302]==> http://www.fatlossfactor.com/new/
で、こんな感じのサイトに飛ばされた。
なんか動画が再生されて、ページ移動するときにうざいアラートが出る。内容はダイエット的な?
気分の良いサイトではないことは確か。マルウェアが仕込まれてるとかそういうことはないと思う。
https://www.virustotal.com/ja/url/abb22bd715e97cf3e21c6bb647b2bd05eed04119f509159b8a6160c1531f17c8/analysis/
いくつか悪性判定でてますね。
今回私がアクセスした時点では上記のようなリダイレクトでしたが、条件によって、あるいは攻撃者の操作等によって変化する可能性は十分にあります。
前回のCookieBombの時もそうでした。
まだ、新型CookieBombが広がる可能性はあるので、しばらく注意しておきたいですね。
[追記]
Hendrik ADRIANさんに聞いてみると、攻撃者はツールの設定次第で条件が変えられるそうです。
@0x5A4D CookieBomb感染条件は犯罪者がツールでcookieチェックの設定が出来る。その設定による、犯罪者の設定次第でアクセスが1回目で転送される条件を作れる。海外の感染では1回目は殆ど転送されない、国内感染が殆ど転送されます。それぞれの国TDLで設定も出来るね。
— Hendrik ADRIAN (@unixfreaxjp) 2014, 1月 31
@0x5A4D そのツールの画像(添付) ものすごい沢山Cookieの条件を作れます。さらにパスワードBruteの機能も一つのツールの機能です。DYI(do it yourself)としてこのツールを開発されたそう。 pic.twitter.com/LYlVr4RyLv
— Hendrik ADRIAN (@unixfreaxjp) 2014, 1月 31
[追記] 2/22
再度、改ざんサイトを調査してみたところ、前回のとは異なった改ざんがありました。
前回の二段階目のCookieBomb(google.js)にあたるJavaScriptが、直接インジェクションされていました。