木马
当前位置:主页>病毒木马>列 表
“红色代码II”分析报告
2007-07-25 来源: 作者:

描述 :


事实上这是一种全新的蠕虫。它使用了第一代红色代码蠕虫所利用的同类系统缺陷(.ida漏洞),然而,第二代蠕虫和第一代蠕虫的具体行为完全不同。因此,这种第二代蠕虫并不是第一代红色代码蠕虫的变体,而是一种全新的蠕虫。


这种新版本蠕虫就象原来的红色代码蠕虫一样,仅仅利用了Windows 2000 Web服务器的缺陷,它重写了Windows2000、NT4.0等系统的EIP,最终获得了某些系统函数的代码偏移地址,而这些被控制的地址和第1类蠕虫所控制的并不一样,所以新蠕虫的功能只是摧毁系统而不是感染系统和扩散自身。


本文就是对红色代码II(即红色代码版本2.0)的分析。分析报告分成3个部分:1、感染,2、繁殖,3、特洛伊木马。您可以在IDA中装载蠕虫的二进制代码,然后根据本文的介绍逐段阅读代码对其进行分析。


为了检查您的系统是否已经被感染,您可以查找系统中是否存在文件c:explorer.exe或d:explorer.exe。您还可以检查您的IIS脚本文件夹和msadc文件夹查看文件root.exe是否存在。如果这些文件确实存在,那么您的系统很可能被这种蠕虫感染了。注意:以前的sadminunicode蠕虫也会把cmd.exe重命名为root.exe,对此您要稍加留意。


请在此处下载分析报告和全部反汇编代码文件。
用于防范红色代码蠕虫的补丁同样适用于新蠕虫。您可以从此处获得微软的安全补丁程序。


感染


A.蠕虫首先设置一个函数表以便它能得到需要的函数。  


seg000:000001D0


B.然后蠕虫继续得到它的本地IP地址。这个地址以后用来处理子网掩码(复制)并且保证蠕虫不再重新感染本地系统。


seg000:000001D5


C.接着,蠕虫获得本地系统的语言信息,查看本地系统是否配置为中文。  


seg000:000001F9


D.现在蠕虫检查它在以前是否被执行过,如果曾被执行,蠕虫就继续进行自我复制(参看复制部分)。
seg000:0000021A


E.接下来,蠕虫会查看红色代码II原子是否已经填写(GlobalFindAtomA)。这一功能可以让蠕虫保证不再重新感染本地系统。如果原子存在,蠕虫就会进入永久休眠状态。


seg000:00000240


F.蠕虫增加一个红色代码II原子。这一功能让蠕虫检查系统是否已经被蠕虫感染了。  


seg000:0000027D


G.现在蠕虫针对非中文系统将它的线程数设置为300。如果系统默认语言是中文则把线程数设为600。
seg000:00000286


H.蠕虫产生一个线程,该线程的执行从A步骤重新开始。蠕虫将根据在G步骤被设置的数字产生线程。每个新线程都是复制线程。
seg000:000002BA
I.蠕虫启用特洛伊木马功能。您可以在以下的特洛伊木马部分找到对特洛伊木马机制的分析。


seg000:000002C4
K.如果本地系统不是中文系统则蠕虫休眠1天,否则休眠2天。
seg000:000002DA
L.重新启动 Windows。


seg000:000002E1


复制


该功能负责扩散蠕虫。
seg000:000002EB
A.设置本地IP_STORAGE变量。该变量用于蠕虫复制功能同时保证不会重新感染本地系统。
seg000:000002EB
B.休眠64h毫秒。
seg000:000002F1
C.得到本地的系统时间。蠕虫会检查系统年份是否不到2002或者月份不到10。如果日期不在上述范围之内,蠕虫就重新启动本地系统。这样蠕虫的传播就基本上限制在了10月1日。
seg000:000002FD
D.设置SockAddr_in。引用GET_IP。
seg000:0000031A
E.设置socket:执行socket()函数,保存句柄,然后把它设置为非阻塞socket(这对connect()函数的调用速度来说非常重要)
seg000:00000337


F.连接到与远程主机,如果连接成功就转到H。
seg000:00000357
以下就是蠕虫产生IP地址供其建立连接的过程:


GET_IP: CODE XREF: sub_1C4+168p


call GET_OCTET load 4th octet (由于字节顺序的缘故这里执行一个反序操作)
mov bh,al
call GET_OCTET get 3rd octet
mov bl,al
shl ebx,10h shift bx to the top of ebx
call GET_OCTET get 2nd octet
mov bh,al
call GET_OCTET 1st
mov bl,al
call GEN_OCTET get first octet
and eax,7 and it by 7
call CHECK_ADDR_MASK ecx has eip



对每个八位组,程序在1和254之间产生一个伪随机字节,接下来就会得到一个范围在1和254之间的随机八位组,其掩码是7,蠕虫用这个最后的字节产生第1个八位组。最重要的位是CHECK_ADDR_MASK。


 


详细数据记录如下:
dd 0FFFFFFFFh 0 - 地址掩码
dd 0FFFFFF00h 1
dd 0FFFFFF00h 2
dd 0FFFFFF00h 3
dd 0FFFFFF00h 4
dd 0FFFF0000h 5
dd 0FFFF0000h 6
dd 0FFFF0000h 7



这个掩码用于本地系统的IP地址,并且匹配蠕虫所产生的IP地址。这样就产生了一个新的IP地址,其0、1或2字节数据原本是本地IP地址一部分。


例如,蠕虫会耗费1/8的时间来产生不在本地IP地址范围以内的随机IP地址。会用掉1/2的时间在本地IP地址的同一A类地址范围扩散,在其3/8的时间内,它将在本地IP地址的B类地址范围以内扩散。


我们还注意到,如果蠕虫产生的IP地址形如127.x.x.x、224.x.x.x或者和本地系统的IP地址一样,那么蠕虫将跳过这类IP地址并产生一个新的IP地址供其感染。


和以前出现的红色代码蠕虫相比,新型蠕虫产生IP地址的方式可以让它更快地发现更多的IIS Web服务器。这种新蠕虫还会在网络上产生大量的数据流量。


G.选择获得句柄,如果没有返回句柄就转到K。


 


seg000:000003B6



H.把socket设为阻塞。


 


seg000:000003C5



I.发送蠕虫的拷贝。


 


seg000:000003E4



J.执行recv函数。实际上并没有什么真正的用途。


 


seg000:000003FC



K.关闭socket循环到A。


特洛伊木马
在这部分蠕虫会把root.exe(root.exe就是cmd.exe)转储到msadc和脚本并在本地驱动器上创建一个特洛伊木马


 


seg000:00000804



A.获得系统目录(比如c:winntsystem32)


 


seg000:00000810



B.在系统目录之后附加cmd(c:winntsystem32cmd.exe)


 


seg000:00000828



C.设驱动器盘符为c:


 


seg000:0000082D



D.把cmd.exe拷贝到/scripts/root.exe(实际路径是:驱动器盘符:inetpubscripts oot.exe)


 


seg000:00000831



E.把cmd.exe拷贝到/msadc/root.exe(实际路径是:驱动器盘符:progra~1common~1systemMSADC oot.exe)


 


seg000:00000863



F.对explorer.exe初始化


 


seg000:000008A2



G.创建Drive/explorer.exe(drive指的是c和d)


 


seg000:00000E83



H.蠕虫现在写explorer.exe。蠕虫体内的部分二进制代码将写到explorer.exe。蠕虫有这么一个特性:如果嵌入字节是0xFC,它就会被20h0x00字节代替而不是由通常的字节替代。要了解这方面的更详细情况请参看Explorer.exe特洛伊部分。还有,NT的工作方式是:某一个用户登录到本地系统的时候就必须装载explorer.exe(桌面、任务条等等……),然而NT首先会在主驱动器路径c:下面寻找explorer.exe,这就意味着,当下一次用户登录的时候装载的实际上是被改写的explorer.exe……。


 


seg000:00000EC8



I.关闭explorer.exe。


 


seg000:00000ED5



J.把驱动器盘符改到D,然后蠕虫返回到D。之后回到感染过程的k步。


 


seg000:00000EDD



Explorer.exe特洛伊木马
explorer.exe木马过程概述:


1.获得本地系统目录。


2.在本地系统目录下执行explorer.exe。


3.蠕虫进入以下循环:


 


while(1)
{
set SOFTWAREMicrosoftWindows NTCurrentVersionWinlogonSFCDisableto
0FFFFFF9Dh, which basically disables system file protection.
set SYSTEMCurrentControlSetServicesW3SVCParametersVirtualRootsScripts
to ,,217
set SYSTEMCurrentControlSetServicesW3SVCParametersVirtualRootsmsadc
to ,,217
Set SYSTEMCurrentControlSetServicesW3SVCParametersVirtualRootsc to
c:,,217
Set SYSTEMCurrentControlSetServicesW3SVCParametersVirtualRootsd to
d:,,217
sleep for 10 minutes
}



以上的代码会创建一个虚拟web路径(/c和/d),路径把/c映射到c:,/d映射到d:。蠕虫的作者设计的这个功能等于在系统上开了一个后门,所以,即便您把root.exe(cmd.exe)从您的/scripts文件夹中删除了攻击者也使用/c和/d虚拟根目录威胁您的系统。其发起的攻击如下所示:


 


http://IpAddress/c/inetpub/scripts/root.exe?/c+dir(如果root.exe还在)



或者:


 


http://IpAddress/c/winnt/system32/cmd.exe?/c+dir,这里dir可能是攻击者打算执行的任意命令。



只要这个特洛伊木马在运行,攻击者就能够远程访问您的服务器


更多...
文章排行  
“VML漏洞利用代码”病毒
“USB间谍”变种a
病毒预报(2006.7.24-2006.7.30
windows缺陷代码发布滋生蠕虫
国内首例PPS木马病毒现身网络
警惕:病毒"礼物"(Wo
IP安全策略 VS 特洛伊木马
谨防“魔鬼波”蠕虫疫情爆发
“瑞波”病毒惊现18新变种
瑞星病毒及木马预警一周播报
病毒预报(2006.9.11-2006.9.17
冲击波(Worm.Blaster)病毒
“网游大盗”变种bu
Download.Trojan病毒清除方法
Trojan病毒及清除
版权 2005-2007 株洲电脑110 湘ICP备05008505号
关于本站 | 使用条款 | 联系我们 | 本站作品 | 留言反馈 | 站点地图