20242307 2025-2026-1 《网络与系统攻防技术》实验四实验报告
1.基础知识
本次实验围绕恶意代码分析与网络取证展开,涉及以下核心基础知识:
- PE文件结构与加壳脱壳:Windows下的可执行文件格式(PE)。恶意软件常使用UPX等加壳工具压缩代码并混淆特征,分析前需要使用专用工具进行脱壳,恢复其原始代码。
- 逆向工程与汇编语言:通过反汇编工具(如IDA Pro)将机器码转换为汇编代码,分析程序的执行流、函数调用(如
strcmp)和条件跳转(如jz),从而推断程序的验证逻辑。 - IRC协议与僵尸网络:IRC(Internet Relay Chat)是一种应用层实时聊天协议。黑客常利用其建立C2(命令与控制)通道,控制被感染的“肉鸡”主机组成僵尸网络。
- Wireshark流量分析:通过设置显示过滤器(Display Filter)和追踪TCP流(Follow TCP Stream),从海量网络抓包数据中提取特定协议、IP地址和敏感传输内容(如木马文件)。
2.实验内容
- 使用PEiD对Rada样本查壳,使用超级巡警脱壳机脱壳,并使用Strings工具提取字符串寻找作者。
- 使用IDA Pro逆向分析crackme1.exe与crackme2.exe,寻找触发成功的特定输入。
- 分析Rada恶意代码样本,回答关于其摘要、目的、特性、反分析技术等8个问题。
- 使用Wireshark对botnet_pcap流量包进行取证分析,还原僵尸网络攻击与感染过程。
3.实验过程
3.1 任务一:Rada恶意代码查壳、脱壳与提取
- 查壳:将
RaDa.exe拖入PEiD,识别出该文件为Win32 GUI程序,加壳工具为UPX (0.89.6 - 2.90)。
3.实验过程
3.1 任务一:Rada恶意代码查壳、脱壳与提取
- 查壳:将
RaDa.exe拖入PEiD,识别出该文件为Win32 GUI程序,加壳工具为UPX (0.89.6 - 2.90)。
RaDa.exe拖入PEiD,识别出该文件为Win32 GUI程序,加壳工具为UPX (0.89.6 - 2.90)。- 脱壳:使用“超级巡警脱壳机”,将文件拖入并点击脱壳,提示“脱壳成功”,生成
RaDa_unpacked.exe。
- 提取字符串:使用
strings64.exe提取脱壳后文件的字符串,用记事本打开搜索,发现作者信息:Author: Raul Siles & David Perez, 2004。
- 计算摘要(任务三使用):在CMD中执行
certutil -hashfile "C:\网络攻防实验四软件\RaDa_unpacked.exe" SHA256,获取到脱壳文件的哈希值。
3.2 任务二:IDA Pro 逆向 CrackMe
- crackme1.exe:载入IDA,通过
Ctrl+X交叉引用定位到 strcmp 函数,发现程序会比对参数。
Ctrl+X交叉引用定位到 strcmp 函数,发现程序会比对参数。然后在CMD中运行"C:\...\crackme1.exe""I know the secret",成功弹出You know how to speak to programs, Mr. Reverse-Engineer
。
- crackme2.exe:逻辑更复杂,包含双重验证。在测试中意外触发隐藏彩蛋,输入
crackmeplease.exe "I know the secret",返回We have a little secret: Chocolate。
3.3 任务三:Rada恶意代码样本分析
- 摘要:Win32 PE文件,VB6编写,UPX加壳,作者Raul Siles等。SHA256:
7ac212...87c6。
7ac212...87c6。- 目的:窃取主机信息的间谍软件(查询网卡MAC地址)。
- 特性:隐蔽性(加壳)、底层信息收集(WMI)、反分析(拒绝访问)。
- 反分析技术:UPX加壳,压缩代码,隐藏导入表。
- 分类:木马(Trojan)下的间谍软件。
- 相似工具:Mimikatz、njRAT、DarkComet。
- 作者溯源:通过提取未抹除的字符串元数据(Author字段)可确认。
- 检测方法:特征码扫描、YARA规则、沙箱行为分析、内存查杀、IDS流量分析。
3.4 任务四:取证分析实践
1.IRC通信:通过过滤 请求。 2.僵尸网络感染主机数:通过 通信。 3.攻击者 IP:过滤SYN包,发现大量外部IP(如 )向蜜罐发起了1461次攻击尝试。 4.漏洞与成功证据:追踪TCP流,发现攻击者利用SMB协议(445端口)漏洞。在流中明文出现了 开头的PE文件头,证明木马成功上传并执行。 这次实验是一次对红/蓝队攻防的演练。从面对一堆乱码不知所措,到最后能清晰地复盘黑客的整个攻击链路的过程。 首先,在逆向工程方面,Rada样本和CrackMe让我深刻体会到了“代码不会说谎”。在分析CrackMe时,我一开始陷入了“寻找输入框”的思维定势,直到被 IDA里的汇编指令打脸,才恍然大悟:真正的密码是作为命令行参数传递的,甚至程序还在校验自身的文件名!后来阴差阳错解锁了Chocolate的隐藏彩蛋,更是让我觉得逆向就像是在拆解一个设计精巧的盲盒,你需要不断跳出常规思维,去揣摩开发者的意图。 其次,在动态分析环节,Rada样本在Windows 10里的“水土不服”(Permission Denied报错),让我对现代操作系统底层的UAC机制和内存保护有了直观的认知。以前总觉得杀毒软件关了系统就会放任我操作,但现在才明白,windows仍有系统内核级的权限隔离,且十分坚固。 最后是网络取证部分,通过Wireshark过滤。亲眼看着蜜罐主机被SMB漏洞打穿,追踪到黑客通过明文流量传输MZ文件头,再看到它乖乖地向IRC服务器发送NICK请求变成“肉鸡”……这一连串的证据链,让我彻底明白了网络流量分析在应急响应和溯源中的决定性作用。 总之,安全不是靠几款工具就能一劳永逸的,它需要扎实的底层知识(汇编、协议、系统机制)作为支撑。这次实验虽然折腾,但极大地激发了我对二进制安全和流量分析的兴趣,也让我对网络攻防的不对称性有了更深的理解。tcp.port == 6667,发现蜜罐向 63.241.174.144等IRC服务器发送了NICK和USERStatistics -> Endpoints,发现仅有 1 台主机与209.196.44.172219.118.31.42、213.23.49.158MZ4.问题及解决方案
LoadFile failed,无法加载文件。C:\test\)下,再次拖入PEiD即可成功识别出UPX壳。Run-time error '70': Permission denied报错,且使用Process Explorer无法读取其内存字符串(显示)。I think you are missing something.。strcmp函数,并追踪到了[ebp+arg_4]。意识到程序并不接受运行时输入,而是强制要求通过命令行参数传入。在CMD中使用"crackme1.exe""I know the secret"成功通关。argc==2),还强制校验程序名。在逆向推演时,意外输入了参数"I know the secret",触发了程序隐藏的彩蛋分支,吐出We have a little secret: Chocolate。这不仅证明了程序作者内置了多套验证逻辑,也展示了逆向工程中“大胆猜测、小心求证”的乐趣。ip.dst == 172.16.134.191 && tcp.flags.syn == 1过滤出主动攻击包,再使用Follow TCP Stream追踪具体的攻击数据流。最终在冗杂的乱码中,敏锐捕捉到了以MZ开头的PE文件头,实锤了黑客利用SMB漏洞成功植入木马的过程。5.学习感悟、思考等
6.参考资料