首页 -> 安全研究

安全研究

安全公告
绿盟科技安全公告(Alert2001-zh-001)

NSFOCUS安全小组(security@nsfocus.com)
http://www.nsfocus.com

防范"CodeRedII"蠕虫!

发布日期:2001-08-07


受影响的软件及系统:
====================
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中的补丁,
    您就可能执行这个木马程序;否则,您不会执行这个木马。

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

※  微软已经提供了一个工具"Code Red II Cleaner"来消除CodeRedII蠕虫. 这个工具所进行的操作是:

     * 删除蠕虫安装的恶意文件(如果explorer.exe木马已经运行,您需要首先杀掉木马
       参考手工杀除木马步骤)
     * 删除蠕虫安装的映射(包括"/scirpts"和"/MSADC",如果您需要这两个映射,需要
       手工重设)
     * 恢复windows 2000文件保护功能
     * 重启动系统,消除内存中的蠕虫。
     * 提供了一个额外的参数"-disable"来永久停止IIS服务(如果您不需要IIS服务,
       可以使用此参数)

    使用方法:
    
     1. 您可以在下列地址下载此工具:
        http://www.microsoft.com/Downloads/Release.asp?ReleaseID=31878

     2. 在命令行窗口中运行:
        c:\> CodeRedCleanup.exe
        或者
        c:\> CodeRedCleanup.exe -disable (如果您不需要IIS服务)
     3. 重新启动系统
     4. 安装补丁或者采取其他解决措施
     5. 再次运行此清除程序,以防止重新启动后再次被蠕虫感染。
     6. 重新启动系统。
    
※  手工杀除"CodeRedII"蠕虫的方法:
  
   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\
        SFCDisable
        蠕虫已经将其变为0FFFFFF9Dh,您应当将这一项的值改变为0。
        
     7. 安装补丁或者采取其他措施来保护您不再继续受到蠕虫的威胁(见下面内容)
     8. 重新启动系统,以消除内存中的蠕虫
    
要完全消除这个漏洞的威胁,您需要安装补丁或者采取一些其他解决方法:

※ 如果您不需要使用Index Server/Service服务或者您暂时无法安装补丁程序的话,我们
   建议您删除.ida/.idq映射,并将%windir%\System32\idq.dll删除或者改名。(%windir%
   表示您的Windows系统所在目录,例如C:\WINNT)
  
   您可以按照如下步骤删除".ida"和".idq"的脚本映射:

    1. 打开Internet 服务管理器
    2. 右击你的服务器(例如 "* nsfocus"),在菜单中选择"属性"栏
    3. 选择"主属性"
    4. 选择 WWW 服务 | 编辑 | 主目录 | 配置
    5. 在扩展名列表中删除".ida"和".idq"两项。
    6. 保存设置,然后重启IIS服务。
    

※ 如果您仍然需要使用Index Server/Service的话,您需要立刻安装补丁程序。

   微软已经发布了一个安全公告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

   注意:
      。Windows NT 4.0补丁需要安装在Windows NT 4.0 Service Pack 6a系统中。
      
      。Windows 2000补丁需要安装在Windows 2000 Service Pack1或Service Pack2        系统中。
      
参考资料:

[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

声 明
==========

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

关于绿盟科技
============

绿盟科技(NSFOCUS Co., Ltd.)是中国网络安全领域的领导企业,致力于网络和系统安全问题的研究、高端网络安全产品的研发、销售与网络安全服务,在入侵检测/保护、远程评估、 DDoS攻击防护等方面提供具有国际竞争能力的先进产品,是国内最具安全服务经验的专业公司。有关绿盟科技的详情请参见: http://www.nsfocus.com

© 2024 绿盟科技