软件工程

本类阅读TOP10

·PHP4 + MYSQL + APACHE 在 WIN 系统下的安装、配置
·Linux 入门常用命令(1)
·Linux 入门常用命令(2)
·使用 DCPROMO/FORCEREMOVAL 命令强制将 Active Directory 域控制器降级
·DirectShow学习(八): CBaseRender类及相应Pin类的源代码分析
·基于ICE方式SIP信令穿透Symmetric NAT技术研究
·Windows 2003网络负载均衡的实现
·一网打尽Win十四种系统故障解决方法
·数百种 Windows 软件的免费替代品列表
·收藏---行百里半九十

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
"红色病毒II"蠕虫分析与解决方案

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

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


相关文章

相关软件