红色代码分析及清除

2008-04-09 03:59:47来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折



红色代码分析及清除


邱腾··yesky

序 言

  CodeRed 蠕虫病毒未对中文视窗系统造成多大影响,不过近来的CodeRed II型可是专门针对中文系统的病毒,最新的 CodeRed.v3 蠕虫病毒继承了CodeRed II的大部分功能。

  同样是有意针对中文Windosws操作系统的攻击性病毒,它与CodeRed II都将对简体中文/繁体中文Windows系统进行双倍的攻击。

  别名:CodeRed.v3, CodeRed III, W32.Bady.C

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

研究了一下其程序代码,现在已成功清除,分析结果及手动清除方法如下:


分 析

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

1.初始化

  当一个 WEB 服务器感染此病毒后,它首先将初始化:

  (1) 确定 Kernel32.dll 动态链接库中 ISS 服务器的服务进程地址。
  (2) 查找调用 API 函数 GetProcAddress 以使用以下 API 函数:
    LoadLibraryA
    CreateThread
    ..
    ..
    GetSystemTime
  (3) 加载 WS2_32.dll 库使用socket closesocket SAGetLastError 等函数。
  (4) 从 USER32.DLL 中调用 ExitWindowsEx 以重新启动系统。

2.感染

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

3.繁殖

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

  繁殖中的 IP 地址分析:

  这个蠕虫的独特之处在于它选择下一个要连接的主机IP的方法。它首先在1到254的范围内随机生成4个字节(防止IP地址为一个0或255)。然后,随机从这些字节中取出一个字节,然后与7做与操作('AND'),产生一个0 - 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.

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

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

  安装木马的详细分析:

  蠕虫创建的"explorer.exe"是一个木马,它的主要工作方式与 CodeRed II 基本相同:

  获取本地windows目录
  执行真正的"explorer.exe"
  进入下面的死循环:

while(1)
{
设置"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SFCDisable"
为 0FFFFFF9Dh, 禁止系统文件保护检查
设置"SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\Scripts"

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:关于trinoo源代码的分析

下一篇:攻击微软SQL服务器的病毒技术分析