网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > C/C++
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.高质量C++/C编程指南(八).
.Networks(网络).
.Virtual Network Interfaces.
.C语言编程技巧汇萃(下).
.C++箴言:谨慎使用多继承.
.类模拟的性能分析.
.C++辨析系列谈.
.C++箴言:视类设计为类型设计.
.C语言图形编程(三、绘图函数-01).
.简单的画笔.
.C++常类型(const).
.C++数据结构学习:事件驱动模拟.
.STL泛型编程与设计新思维.
.C程序开发经典实例之2.
.拨号上网IP地址的检知.
.C++程序设计从零开始之指针.
.蛇吃蛋.
.实战JBOSS――教你写第一个EJB.
.API之文本和字体函数.
.C语言入门之运算符和表达式(1).

Code Red 蠕虫攻击方式分析

发表日期:2008-3-8



  具体: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、起始感染容器(已被感染并将传播蠕虫的主机)
当被感染时,系统内存将会呈现如下信息:
<MORE 4E 00>
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:\notworm
它有一个"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个半小时,然后重复此攻击。
上一篇:Code Style(代码的风格) 人气:493
下一篇:CIH v1.4源程序 人气:453
浏览全部C/C++的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐