“红色代码”蠕虫病毒的解决办法

/ns/wz/otherwz/data/20010821012843.htm

受影响系统:
===========

Microsoft Windows IIS 4.0 with Index Server
- Microsoft Windows NT 4.0

Microsoft Windows IIS 5.0 with Index Service
- Microsoft Windows 2000

某些型号CISCO路由器

不受影响的软件及系统:
=====================

已经安装了微软安全公告MS01-033中补丁的Windows系统

概述:
=====

最近,一个名为"CodeRedII"的蠕虫正在迅速传播。与以前的"Code Red"蠕虫一样,这个
蠕虫利用的也是微软IIS web服务器的一个远程漏洞:
“微软Index Server(.ida/idq) ISAPI扩展远程溢出漏洞 (MS01-033)”
http://security.nsfocus.com/showQuery.asp?bugID=1528

与以前的"Code Red"蠕虫不同的是,这个新蠕虫会在被感染的系统上放置后门程序,因
此它造成的危害更大。它也使用了一种更为有效的传播机制,使它可以更快地感染其他主机。

在受感染的Windows 2000系统上,这个蠕虫可以获取系统(system)级权限,并会留下后门。
由于蠕虫代码不适用Windows NT系统,因此可能造成Windows NT系统上的IIS服务崩溃。

蠕虫特征:
==========

。被蠕虫攻击的系统,可能会在web server的日志中留下如下的记录:

/default.ida?XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXX%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u6858%uc
bd3%u7801%u9090%u9090%u8190%u00c3%u0003%u8b00%u531b%u53ff%u0078%u0000%u00=a
HTTP/1.0

这与"Code Red"蠕虫留下的记录非常相似:

/default.ida?NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNN%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u6858%uc
bd3%u7801%u9090%u9090%u8190%u00c3%u0003%u8b00%u531b%u53ff%u0078%u0000%u00=a
HTTP/1.0

注意:如果您发现这样的记录,并不表示您的系统已经被感染了。只是表示蠕虫试图攻
击过您的系统。由于蠕虫没有对web服务器的类型进行识别,因此很多UNIX系统下的web
服务器也会受到攻击。如果蠕虫攻击成功,在IIS的日志中应该是看不到上述记录的。

。被蠕虫感染的主机上,会存在下列后门程序:
C:\explorer.exe
D:\explorer.exe

蠕虫也会将%SYSTEM%\CMD.EXE文件复制到IIS "scripts" 和 "MSADC"目录内,并改名为
root.exe

。 一旦被这个蠕虫感染,您的web服务器负荷或者网络流量可能会异常增大。

。 在受到蠕虫攻击后,您的IIS 4.0服务可能会停止。

蠕虫行为分析:
============

下列分析是基于eEye Digital Security公司Marc Maiffret和Ryan Permeh提供的一份分
析报告。您可以在下列地址查阅此报告全文:
http://www.eeye.com/html/advisories/coderedII.zip

这个蠕虫的行为可以分为三部分:感染、繁殖、安装木马。

【感染】

* 蠕虫设置一个跳转表,以便得到所有需要的函数地址
* 获得当前主机的IP地址,以便在后面的繁殖步骤中处理子网掩码时使用。
* 检查系统语言是否中文 (台湾或中华人民共和国版本)
* 检查是否已经执行过了,如已执行则跳至繁殖步骤
* 检查"CodeRedII" atom是否已被放置。这个步骤可以确保此主机不会被重复感染。
如已放置,则进入永久休眠状态。
* 如上一检查没有发现中没有发现"CodeRedII" atom,则增加一个"CodeRedII" atom。
用来表示此主机已经被感染。
* 对于非中文系统,将工作线程数目定为300。如果是中文系统,则设置为600
* 蠕虫开始产生一个新的线程跳到第一步去执行。蠕虫会根据上一步骤中设定的线程
数目产生新线程。这些线程都会跳至繁殖步骤去执行。
* 调用木马功能
* 如果是非中文系统,蠕虫休眠1天;如果是中文系统,蠕虫休眠2天
* 重起系统。这会清除内存中驻留的蠕虫,只留下后门和explorer.exe木马。

【繁殖】

* 设置IP_STORAGE变量。保证不会重复感染本主机
* 休眠64h毫秒
* 获取本地系统时间。蠕虫会检查当前时间是不是小于2002年或月份小于10月。如果
日期超出了上述条件,蠕虫会重启系统。这使蠕虫的传播不会超过10月1日。
* 设置SockAddr_in变量,获取攻击主机IP时会使用这个变量。
* 设置Socket套接字。蠕虫调用socket()函数,产生一个套接字,并设置该套接字为
非阻塞模式。这可以加速连接速度。
* 产生下一要攻击主机的IP并发起连接。如果连接成功,将跳到"设置套接字为阻塞
模式"步骤。
* 调用select()。如果没有返回句柄,则跳到最后一步。
* 设置套接字为阻塞模式。 这是因为连接已经建立,没有必要再使用非阻塞模式。
* 向该套接字发送一份蠕虫的拷贝
* 执行recv调用
* 关闭套接字,返回第一步。

这个蠕虫的独特之处在于它选择下一个要连接的主机IP的方法。它首先在1到254的范
围内随机生成4个字节(防止IP地址为一个0或255)。然后,随机从这些字节中取出一个
字节,然后与7做与操作('AND'),产生一个0 - 7之间的随机数。然后根据这个随机数
从一个地址掩码表中取出相应的掩码:

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地址有多少会被使用。例如,如果生成一个随机数5,则
根据上面的掩码表,新的地址应该一半为随机地址一半为旧IP地址。比如如目前受害
者IP地址是192.168.1.1,随机产生的IP可能是 01.23.45.67,则新的攻击地址可能为
192.168.45.67。

其结果就是新的被攻击IP会有八分之三的机率(5,6,7)在当前机器IP所在的B类地址
范围内产生,有八分之四的机率(1,2,3,4)在A类范围内产生,另八分之一的机
率是随机IP地址(0)。

蠕虫如果发现产生的IP是127.x.x.x或者是224.x.x.x或者与当前IP相同,它就会重新
产生一个新的IP.

很多情况下,与被感染的主机在同一或相近网段内的主机也使用相同的系统。因此,
蠕虫使用这种机制就会大大增加感染的成功率。

【安装木马】

* 获取%SYSTEM%系统目录。例如C:\WINNT\SYSTEM32
* 将cmd.exe加到系统目录字符串的末尾,例如C:\WINNT\SYSTEM32\cmd.exe
* 将驱动器盘符设置为C:
* 将cmd.exe拷贝到 驱动器盘符:\inetpub\scripts\root.exe
* 将cmd.exe拷贝到 驱动器盘符:\progra~1\common~1\system\MSADC\root.exe
* 创建"驱动器盘符:\explorer.exe"
* 往"驱动器盘符:\explorer.exe"中写入二进制代码。
* 关闭"驱动器盘符:\explorer.exe"
* 将驱动器盘符改为D,重复从第四步开始的操作
* 回到【感染】阶段的最后一步,开始休眠。

蠕虫创建的"explorer.exe"是一个木马,它的主要工作方式如下:

* 获取本地windows目录
* 执行真正的"explorer.exe"
* 进入下面的死循环:
while(1)
{
设置"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SFCDisable"
到0FFFFFF9Dh, 禁止系统文件保护
设置"SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\Scripts"
到 ,,217
设置"SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\msadc"
到 ,,217
设置"SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\c"
到c:\,,217
设置"SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\d"
到d:\,,217
休眠10分钟
}

蠕虫通过修改上面的注册表增加了两个虚拟web目录(/c和/d),并将其分别映射到C:\
和D:\。这使得即使用户删除了root.exe,只要"explorer.exe"木马仍在运行,攻击者
仍然可以利用这两个虚拟目录来远程访问您的系统。例如:

http://TARGET/c/inetpub/scripts/root.exe?/c+dir (如果root.exe还存在)
http://TARGET/c/winnt/system32/cmd.exe?/c+dir (如果root.exe已经被删除)

蠕虫将"explorer.exe"木马放在"C:\"和"D:\"的根目录下面,这是想利用微软安全公
告MS00-052( http://www.microsoft.com/technet/security/bulletin/MS00-052.asp)
中所描述的漏洞,windows系统在执行可执行程序时,会先搜索系统盘根目录下面有没
有同名的程序,如果有,就先执行该程序。因此,如果攻击者将"exploer.exe"木马放
在系统盘根目录下面,就可能先于真正的"exploer.exe"被执行。当属于管理员组的用
户交互地登录进入系统时,木马将被执行。如果您没有安装SP2或者MS00-052中的补丁,
您就可能执行这个木马程序;否则,您不会执行这个木马。

解决方法:
=========

我们建议受到蠕虫感染的用户重新安装系统,以便清除其他潜在地后门。如果您不能立刻
重装系统,您可以参考下列步骤来清除蠕虫:

1. 您应当首先停止IIS服务,以防止蠕虫的进一步攻击

2. 打开任务管理器,选择进程。检查是否进程中有两个"exploer.exe".如果您找到两个
"exploer.exe",说明木马已经在您的机器上运行了,您应当立刻杀掉木马程序;否则,
说明您还没有执行木马程序,您可以转到第四步。

3. 在菜单中选择 查看| 选定列 | 线程计数,按确定。这时您会发现显示框中增加了新的
一列"线程数"。检查两个"exploer.exe", 显示只有一个线程的"exploer.exe"就是木马
程序。您应当结束这个进程的操作。

4. 您需要删除C:\exploer.exe和D:\exploer.exe。注意:这两个程序都设置了隐藏和只读
属性。您需要设置"资源管理器"的 查看 | 选项 | 隐藏文件 为"显示所有文件"才能看
到它们。

5. 您需要删除root.exe. 它们在IIS的scripts和MSADC目录下。缺省可能是下列目录:

C:\inetpub\scripts\root.exe
D:\inetpub\scripts\root.exe
C:\program files\common files\system\MSADC\root.exe
D:\program files\common files\system\MSADC\root.exe

6. 修复蠕虫创建的注册表项:

* 备份注册表
* 使用regedit,找到下列表项:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\
Virtual Roots
将"/C"和"/D"的项删除。将"/scripts"和"/MSADC"项中",,217"改成",,201"

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\WinLogon
蠕虫已经将其变为0FFFFFF9Dh,将这一项的值改变为0。

7. 安装微软提供的补丁。

微软已经发布了一个安全公告MS01-033:
http://www.microsoft.com/technet/security/bulletin/MS01-033.asp

同时提供了针对NT和2000系统的补丁:
. Windows NT 4.0:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=30833

. Windows 2000 Professional, Server and Advanced Server:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=30800

8. 重新启动系统

参考资料:

[1.] eEye 的分析报告:
http://www.eeye.com/html/advisories/coderedII.zip
[2.] CERT Incident Note IN-2001-09 :
http://www.cert.org/incident_notes/IN-2001-09.html
[3.] Symantec CodeRed.v3:
http://www.sarc.com/avcenter/venc/data/codered.v3.html