最近,一个名为\"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