Webサイト改ざん 新型CookieBombの解析

6 分で読める

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しているだけで、以前よりやる気が無くなったようにも見えます(笑)
CookieBomb2_obfuscated_code

そして、こいつをデコードしてやると、以下のようになります。(整形済み)
前回と違うのは、DOCTYPE宣言を含めて完全なHTML文書が出力されてることですね。
あとは前回と同様にCookieがセットされていないかどうかをチェックして、「hxxp://91.239.15.61/google.js」をロードするscript要素を生成します。(今のところこのURLしか確認されていない。)
今回Cookieは「doRedirect=true」というのがセットされます。

0day.jpには「初回アクセスで転送されず、その次で転送される」と書いてありますが、たぶん間違いです。(追記参照)
初回アクセスだけ転送(script埋め込み)とCookieのセットが行われ、次回以降アクセス(Cookieが存在する)では何も行われません。
発動条件はif(!thecookie)なので。

CookieBomb2_obdecoded_code

そして、お次は「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]

 コードは以下の通りです。(整形済み)
一見複雑そうな難読化に見えますが、大したことはありません。
google.js

まず、_0xe2b8にそれ以下のコード内で使いそうな文字列が16進表記でぶち込まれています。
seはReferrerチェック用の文字列が格納されている感じですね。
配列内容を文字列で書き出しておくと以下の様な感じです。
例えば、2行目だったら、「var from = document[“referrer”]」と等価ということです。単純に置換すると思えば。
_0xe2b8se

結局何をしているかというと、
まず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/
いくつか悪性判定でてますね。
fatlossfactor.com

今回私がアクセスした時点では上記のようなリダイレクトでしたが、条件によって、あるいは攻撃者の操作等によって変化する可能性は十分にあります。
前回のCookieBombの時もそうでした。

まだ、新型CookieBombが広がる可能性はあるので、しばらく注意しておきたいですね。

[追記]

Hendrik ADRIANさんに聞いてみると、攻撃者はツールの設定次第で条件が変えられるそうです。

[追記] 2/22

再度、改ざんサイトを調査してみたところ、前回のとは異なった改ざんがありました。
前回の二段階目のCookieBomb(google.js)にあたるJavaScriptが、直接インジェクションされていました。

CookieBomb2_0222
comments powered by Disqus