1.实践内容
本次实验围绕恶意代码分析、逆向工程与僵尸网络溯源展开,将理论知识与实操实践深度结合,逐步掌握了恶意代码分析与网络攻击溯源的核心技巧。理论层面,系统学习了恶意代码的基本分类、文件结构与加壳脱壳原理,了解了常见的恶意代码隐藏技术与抗逆向手段;掌握了 IDA Pro 静态、动态分析工具的基本使用方法,学会了通过逆向分析破解简单的 Crackme 程序;同时深入学习了 IRC 协议的工作机制、僵尸网络的组成与攻击原理,以及 Snort 日志分析、流量溯源的核心思路,理解了蜜罐在网络攻击捕获与分析中的重要作用。
实操层面,从基础的文件类型识别入手,逐步练习了恶意代码脱壳、字符串提取的操作流程,熟悉了 Exeinfo PE、超级巡警脱壳机、strings 等工具的使用;通过 IDA Pro 对 Crackme 程序进行逆向分析,尝试寻找正确输入以获得成功提示;同时练习了使用 Wireshark 结合 Snort 日志,分析僵尸网络相关的流量数据,提取攻击信息,为本次实验的顺利完成奠定了坚实的基础,也深刻体会到恶意代码分析与网络溯源的严谨性和专业性。
(一)动手实践任务一:rada 恶意代码样本分析(文件识别、脱壳与字符串提取)
1.恶意代码文件类型识别
2.恶意代码脱壳处理
3.字符串提取与作者识别
(二)动手实践任务二:IDA Pro 分析 Crackme 程序
1.分析 crackme1.exe
2.分析 crackme2.exe
(三)分析实践任务一:rada 恶意代码样本分析报告
(四)分析实践任务二:Windows 2000 蜜罐僵尸网络分析
2.实践过程
动手实践任务一
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
- 实验环境: WinXPattacker
- 将下载好的RaDa.exe程序放到WinXPattacker虚拟机当中,用file Rada.exe命令查看一下文件类型

- 继续在当前界面操作,用strings RaDa.exe命令查看一下字符串,发现乱码,说明文件被加壳。再使用PEiD工具查看RaDa.exe的基本信息

在WinXPattacker中使用PEiD软件详细查看(在开始->所有程序->PE里可以找到,后面所有的工具也都这么找):

- 下一步是我们要进行脱壳。(超级巡警工具对文件进行脱壳,该工具有这个壳的样本库,可以自动脱壳,省去了手工脱壳的麻烦,并在恶意程序同目录下生成了一个脱壳以后的程序)

- 再用strings RaDa_unpacked.exe查看脱壳后的RaDa.exe,可以看到产生大量函数调用名以及其他有用字符串,但是并未查找到作者信息

- 再用 IDA PRO Free 打开一下脱壳后的程序,可以看到作者信息和发布时间,还有邮箱

动手实践任务二
在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息
- 对 crackme1.exe 进行执行,猜测参数执行,可以发现一个参数输入与其他的参数输入得到的输出明显不一样,所以可以猜测这个程序的输入是一个参数。

利用IDA Pro打开程序分析,通过Strings窗口可以查看该程序中出现的字符串,发现 I think you are missing something. 和 Pardon? What did you say? 前面见过了,猜测第一个是参数不对的返回情况,第二个是给的参数数量对了,但是具体的内容不对。还有两个不知道意思,所以继续进行分析。

- 验证一下猜想
![image]()
Crackme2.exe:

- 回到IDA,发现I have ...越过了第一层判断,回到第一层判断,猜测“crackmeplease.exe”是密码。

- 验证:把程序名改为crackmeplease.exe试验一下,通过了第二个判断,最终出现了字符串明文中没有的信息,猜测成功。
![image]()
分析实践任务一:
分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
2、找出并解释这个二进制文件的目的;
3、识别并说明这个二进制文件所具有的不同特性;
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
6、给出过去已有的具有相似功能的其他工具;
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
- 首先查看摘要和文件类型,执行md5sum RaDa.exe指令得到其md5摘要值如下,再利用file RaDa.exe识别出这是32位PE文件,并且还是个GUI文件

-
打开之前用过的监视工具 process explorer 和 wireshark 开启监听,并运行恶意程序RaDa.exe,分析其程序运行详细信息。通过HTTP协议请求 10.10.10.10RaDaRaDa_commands.html ,连接到目标为10.10.10.10的主机下的一个名为RaDa_commands的网页,之后又下载和上传文件到 C:/RaDa/tmp 。将文件 RaDa.exe 复制到了 C:RaDain 目录下,可以看出该恶意代码将其自我复制到主机系统盘,并激活了自启动,还试图从一个HTML页面获取并解析命令,故猜测这应该是一个后门程序。往下看可以发现该恶意程序对主机实行了DDos拒绝服务攻击。
![image]()
-
再往下看可以发现该恶意程序对主机的注册表进行了读写和删除操作。

- 再往下看可以看到一些指令,exe 在宿主主机中执行指定的命令,get下载,put上传,screenshot截屏,sleep休眠。

-
使用wireshark进行分析,可以看到受害主机向目标主机 10.10.10.10 发送了大量的数据包
![image]()
-
再打开 IDA Pro 进行简单分析,首先查看字符串 string ,string里把unicode选中查看字符串。这时可以查看到很多的字符串,点击这些字符串就可以找到调用的函数。看一下VMware tools的意思,双击选中的字符串进行定位:
![image]()
答案:
①提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息。
摘要为caaa6985a43225a0b3add54f44a0d4c7;
使用了UPX加壳工具进行了加壳处理,加壳方式: UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
②找出并解释这个二进制文件的目的。
这个二进制文件通过网络获取指令,连接互联网时,该恶意程序就会通过http请求连接到指定主机,进行接受攻击者指令操作,并且攻击者可以完全控制该系统,所以这应该是一个后门程序。
③识别并说明这个二进制文件所具有的不同特性。
该程序启动之后将自己复制到c盘之中,并且每过一段时间就会尝试与10.10.10.10建立tcp连接。
④识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术。
UPX加壳
⑤对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由。
不具有自主传播模块,不具有传播和感染的性质,所以它不属于病毒和蠕虫;也没有将自己伪装成有用的程序以欺骗用户运行,不是木马。并且该程序执行需攻击者远程发送指令,故猜测是一个后门程序。
⑥给出过去已有的具有相似功能的其他工具。
Bobax——2004也是使用HTTP协议从指定的服务器下载命令文件,然后解析并执行其中的指令。
⑦可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以,作者Raul siles和David Perze,他们在2004年编写完成。
分析实践任务二:
分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。回答下列问题:
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用哪些TCP端口?
- 定义:IRC是Internet Relay Chat的英文缩写,中文一般称为“互联网中继聊天" 。
- 工作原理:您只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。
IRC是一种公开的协议,采用TCP和SSL协议。一个IRC服务器可以连接其他的IRC服务器以扩展为一个IRC网络。 - 连接方式:IRC用户通过客户端软件和服务器相连。大多数的IRC服务器不需要客户注册登录,但在连接前必须设定好昵称(nickname)。IRC是一个分布式的客户端/服务器结构。通过连接到一个IRC服务器,我们可以访问这个服务器以及它所连接的其他服务器上的频道。IRC频道存在于一个IRC服务器上。一个频道类似于一个聊天室,频道名称必须以#符号开始,例如#irchelp。IRC机器人是一些运行在后台或者服务器上的程序,通过登陆某一个频道,分析接受到的内容并做出相应的动作。
- 当IRC客户端申请加入一个IRC网络时,发送nickname。
- 一般使用6667(6660~6669)端口。
(2)僵尸网络是什么?僵尸网络通常用于干什么?
- 定义:IRC语境下的僵尸网络是指IRC机器人连接成的IRC网络;采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络 。
- 用处:通常用于DDos攻击、分布式扫描、暴力密码破解等。
(3)蜜罐主机(IP:172.16.134.191)与哪些IRC服务器进行了通信?
-
由于IRC协议使用TCP连接,要找出与蜜罐主机通讯的IRC主机,可以利用建立TCP连接的三次握手过程进行分析。
-
只需要找出蜜罐主机向哪些机器的IRC端口发送过SYN包,即可找出蜜罐主机试图通讯的IRC服务器。
-
IRC协议最常用的端口为6667,在WireShark中对日志文件进行分析,可以看到除了6667外其他端口上没有数据包,因此这里所有的IRC数据都使用的是6667端口。利用如下命令过滤出蜜罐主机向6667端口发送的SYN包,过滤条件为:ip.src == 172.16.134.191 && tcp.dstport == 6667

(4)在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络。
-
发现蜜罐主机与5台IRC服务器进行了连接,分别是:209.126.161.29、66.33.65.58、63.241.174.144、217.199.175.10、209.196.44.172。
-
用tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"tcpflow分流筛选指定host与端口6667,产生了三个文件,分别是:209.196.044.172.06667-172.016.134.191.01152、172.016.134.191.01152-209.196.044.172.06667、report.xml。根据题目要求重点查看第一个文件。
![image]()
-
使用管道命令进行筛选,得到3462个。grep搜索获取昵称输出行;sed:去除前缀;tr:将空格转换为换行;tr -d删除\r;grep -v:去除空行;sort -u排序并去除重复;wc -l:输出行数
cat 209.196.044.172.06667-172.016.134.191.01152 | grep -a "^:irc5.aol.com 353" | sed "s/^:irc5.aol.com 353 rgdiuggac @ #x[^x]*x 😕/g" | tr ' ' '\n' | tr -d "\15" | grep -v "^$" | sort -u | wc -l

(5)哪些IP地址被用于攻击蜜罐主机?
- 使用tcpdump查找可能连接主机ip的地址,uniq命令用于检查及删除文本文件中重复出现的行列,输出到1.txt中,查看ip.txt,可以看到很多地址
tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq | more > ip.txt;wc -l ip.txt

-
查看ip.txt,其中的ip地址可能被用于攻击蜜罐主机
![image]()
-
然后使用tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and tcp[tcpflags]== 0x12 | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq筛选有响应的TCP端口,即SYN/ACK标志为1
-
再用tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and udp | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq筛选有响应的UDP端口

(6)攻击者尝试了哪些安全漏洞?哪些攻击成功了?是如何成功的
- 打开wireshark对各个端口进行分析,过滤http请求,发现攻击者尝试了溢出、目录穿越等攻击,但均未成功

- 过滤445端口,发现执行了\System32\PSEXESVC.EXE,其他端口也未发现攻击成功

3.学习中遇到的问题及解决
- 问题1:在使用tcpflow命令时,执行失败
- 问题1解决方案:执行sudo apt-get install tcpflow 命令安装即可
4.实践总结
本次实验圆满完成了所有预设的动手实践与分析任务,涵盖了恶意代码分析、逆向工程、僵尸网络溯源三个核心模块,既巩固了理论知识,又提升了实操能力,同时也暴露了自身的不足,具体总结如下:
成功完成了 rada 恶意代码样本的文件识别、脱壳与字符串提取,识别出恶意代码的编写作者;通过 IDA Pro 静态分析,成功找到两个 Crackme 程序的正确输入,实现输出成功信息;完成了 rada 恶意代码的全面分析报告,准确回答了所有分析问题;基于 Snort 网络日志,完成了僵尸网络相关的流量分析,提取了攻击 IP、漏洞类型、成功攻击原因等关键信息,圆满完成了所有实验任务。熟练掌握了 Exeinfo PE、超级巡警脱壳机、strings 等恶意代码分析工具的使用方法,理解了加壳脱壳的核心原理;学会了使用 IDA Pro 进行静态逆向分析,能够梳理程序的逻辑的流程,寻找关键验证语句;深入理解了 IRC 协议、僵尸网络的工作机制,掌握了使用 Wireshark 结合 Snort 日志进行流量分析、攻击溯源的技巧;同时,提升了问题排查和逻辑分析能力,能够结合理论知识解决实操中遇到的问题(如脱壳失败、逆向分析逻辑混乱等)。
存在不足:在恶意代码分析中,对 UPX 加壳之外的其他加壳技术(如 ASPack、Themida)了解不足,若遇到复杂加壳样本,可能无法顺利脱壳;使用 IDA Pro 进行动态分析的能力较弱,本次仅采用静态分析,对程序运行时的动态行为理解不够深入;在僵尸网络流量分析中,对 IRC 协议的高级指令理解不足,分析效率较低,且对部分复杂攻击流量的识别能力有待提升;此外,对恶意代码的抗逆向技术、僵尸网络的防御策略掌握不够全面,后续需要针对性补充学习。







