龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

Code Red 蠕虫攻击方式分析

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
具体:CODE RED 利用 IIS WEB 服务器 .IDA 缓冲区溢出漏洞传播。 假如它感染了一个主机,将会在受影响机器上作如下活动: 1、建立起初始蠕虫环境 2、建立起100个蠕虫线程 3、前99个线程会

  具体:CODE RED 利用 IIS WEB 服务器 .IDA 缓冲区溢出漏洞传播。 假如它感染了一个主机,将会在受影响机器上作如下活动:

  

1、建立起初始蠕虫环境

  

2、建立起100个蠕虫线程

  

3、前99个线程会传播感染其它主机

  

4、第100个线程会检查自身是否运行于一个英文版本的 Windows NT/2000

  

假如是,它将会替换该主机页面

  

Welcome tohttp://www.worm.com/ !, Hacked By Chinese!

  

该信息会在10小时后自动消失,除非再次受到感染。

  

假如不是英文版本,它也会被用作感染其它主机。

  

5、每个线程会检查当地时间

  

假如时间位于 20:00 UTC 和 23:59 UTC 间,该线程会往

  

www.whitehouse.gov 发送 100K 字节数据。

  

假如小于 20:00 UTC,它会继续传播感染其它主机

  

在下面的具体分析中,将要用到

  

IDA(Interactive Disassembler) ,它来自www.datarescue.com。

  

MS VC++ 调试环境

  

我将该蠕虫分为三个部分以便研究:核心功能模块,hack web 页面模块,攻击

  

www.whitehouse.gov 模块。

  

一、核心功能模块

  

1、起始感染容器(已被感染并将传播蠕虫的主机)

  

当被感染时,系统内存将会呈现如下信息:

  

  

4E 00 4E 00 4E 00 4E 00

  

4E 00 4E 00 4E 00 4E 00

  

4E 00 4E 00 4E 00 4E 00

  

92 90 58 68 4E 00 4E 00

  

4E 00 4E 00 4E 00 4E 00

  

FA 00 00 00 90 90 58 68

  

D3 CB 01 78 90 90 58 68

  

D3 CB 01 78 90 90 58 68

  

D3 CB 01 78 90 90 90 90

  

90 81 C3 00 03 00 00 8B

  

1B 53 FF 53 78

  

EIP 会被 0x7801CBD3 重写。在 0x7801CBD3 处的代码将会被分解成 call ebx ,当 EIP 被 call ebx 重写时,它会导致程序流重定向回堆栈。堆

  

栈上的代码将会跳到蠕虫代码,该蠕虫代码在起始 HTTP 请求体中。

  

2、建立起始堆栈变量

  

CODEREF: seg000:000001D6 WORM

  

首先,蠕虫建立一个布满 CCh 的 218h 字节堆栈,然后它将转而激活跳转函数。

  

所有的变量会被引用为 EBP-X 值。

  

3、装载函数(建立跳转表"jump table")

  

CODEREF: seg000:00000203 DataSetup

  

首先,蠕虫会引用 eXPloit 代码在 EBP-198h 中的数据部分。然后,它需要创建自己内部函数跳转表。

  

该蠕虫用到了一项 RVA (Relative Virtual Addresses) 查询技术,在一个 nutshell 中,RAV 被用来得到 GetProcAddress 的地址。

  

GetProcAddress 然后被用来得到 LoadLibraryA 地址。它会用到这两个函数装载下面的函数:

  

>From kernel32.dll:

  

GetSystemTime

  

CreateThread

  

CreateFileA

  

Sleep

  

GetSystemDefaultLangID

  

VirtualProtect

  

>From infocomm.dll:

  

TcpSockSend

>From WS2_32.dll:

  

socket

  

connect

  

send

  

recv

  

closesocket

  

最后,蠕虫会存储 w3svc.dll 的基地址,该地址将被用来更改页面。

  

4、检查已经创建的线程:

  

CODEREF: seg000:00000512 FUNC_LOAD_DONE

  

它会运行 WriteClient (ISAPI Extension API 的一部分),发送"GET" 回进攻机。这应该是告诉告诉攻击机它已成功感染该机。

  

然后,它会计算活动的蠕虫线程

  

假如线程等于100,控制会转向 hack web 页面功能项。

  

假如线程小于100,它会创建新的线程。每一个新线程都是蠕虫的简单复制。

  

5、检查已存在的 c:

otworm

  

它有一个"lysine deficiency" 功能,用来保持恶意代码进一步传播。

  

假如该文件存在,它不会作其它动作;假如不存在,它会进行下一步。

  

  

6、检查受影响系统时间:

  

CODEREF: seg000:00000803 NOTWORM_NO

  

CODEREF: seg000:0000079D DO_THE_WORK

  

假如时间位于 20:00 UTC 和 23:59 UTC 间,该线程会往

  

www.whitehouse.gov 发送 100K 字节数据。

  

假如小于 20:00 UTC,它会继续传播感染其它主机

  

7、感染一个新的主机

  

假如能建立一个80端口连接,它将会发送自己的一个复制到那个 IP,假如发送成功,它会关闭 socket 并转到第5步,从而开始一个新的循环。

  

二、hack webpage 模块

  

假如100个线程产生,该模块会被调用

  

1、检查系统语言是否为英文,然后转到核心模块第5步

  

CODEREF: seg000:000005FE TOO_MANY_THREADS

  

2、休眠2小时

  

CODEREF: seg000:00000636 IS_AMERICAN

  

这应该是在更改页面之前作尽可能的传播。

  

3、试图改变受影响系统的 WEB 页面

  

CODEREF: seg000:0000064F HACK_PAGE

  

三、攻击www.whitehouse.gov 模块

  

创建 socket 连接到

  

www.whitehouse.gov 80 端口发送 100K 字节数据:

  

CODEREF: seg000:000008AD WH99vEHOUSE_SOCKET_SETUP

  

首先,它会创建一个 socket 并连接到 198.137.240.91 (www.whitehouse.gov/www1.whitehouse.gov) 80 端口,

  

CODEREF: seg000:0000092F WH99vEHOUSE_SOCKET_SEND

  

假如连接成功,它会创建一个循环:发送18000h 单字节send()'s 到该站点

  

CODEREF: seg000:00000972 WH99vEHOUSE_SLEEP_LOOP

  

在 18000h send()'s 后,它会休眠4个半小时,然后重复此攻击。

  

精彩图集

赞助商链接