20242319 2026-2027-1 《网络与系统攻防技术》实验四实验报告
说明:
根据要求,本次实验所有操作截图的主机名均已设置为本人姓名拼音首字母(主要是做完实验后才发现有些截图里面没体现学号姓名T—T 😦 )。
Kali虚拟机主机名:
Wxy-kali-attacker
Windows虚拟机主机名:
Wxy-win10
图0-1 Kali主机名与whoami命令截图
图0-2 Win10主机名与whoami命令截图
1. 基础知识
本次实验主要涉及以下基础知识:
- PE文件与加壳技术:PE(Portable Executable)是Windows下的可执行文件格式。恶意代码常通过加壳(如UPX)压缩或加密自身,改变入口点(EP),以逃避杀毒软件的特征码查杀和逆向分析。脱壳是逆向的第一步。
- 逆向工程基础:利用IDA Pro等工具,将二进制机器码转换为汇编代码或流程图(Graph View),通过分析字符串(Strings)和关键API函数(如
strcmp比较函数、URLDownloadToFile网络下载函数),推断程序逻辑。 - 恶意代码特征与分类:了解后门程序(Backdoor)、僵尸网络客户端(Bot)的区别。僵尸网络通常通过IRC协议或HTTP协议与C2(命令与控制)服务器通信。
- 取证分析基础:IRC协议(Internet Relay Chat)是早期的即时通讯协议,常用TCP 6667端口,僵尸网络常利用其进行指令下发。掌握Wireshark过滤语法(如
tcp.port == 6667)、tcpdump及tcpflow等流量提取工具的使用。
2. 实验内容
本次实验包含四个主要任务:
- 对rada恶意代码样本进行文件类型识别、脱壳与字符串提取,寻找编写作者。
- 使用IDA Pro静态分析crackme1.exe与crackme2.exe,寻找正确的特定输入以输出成功信息。
- 分析rada恶意代码样本,回答关于其基本信息、目的、特性、反分析技术、分类及检测方法等8个问题。
- 对Snort收集的蜜罐主机(172.16.134.191)网络数据源进行取证分析,找出IRC通信地址、僵尸网络主机数量、攻击IP及利用的安全漏洞。
3. 实验过程
3.1 任务一:rada文件类型标识、脱壳与字符串提取
(1)文件格式与加壳识别
3.1 任务一:rada文件类型标识、脱壳与字符串提取
(1)文件格式与加壳识别
在Kali中执行 file RaDa.exe 命令,识别出该文件为 PE32 executable for MS Windows 4.00 (GUI), Intel i386, 3 sections。
在Windows虚拟机中使用PEiD工具打开原文件,识别出加壳工具为 UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo。
图1-1 file命令识别结果
图1-2 PEiD识别加壳结果
(2)脱壳处理 在Windows虚拟机中使用“超级巡警之虚拟机自动脱壳器 V1.3”对 RaDa.exe 进行脱壳,成功输出脱壳文件。再次使用PEiD检查脱壳后的文件,显示无壳。
图1-3 超级巡警脱壳成功
图1-3(补充)PEiD检查脱壳后的文件,识别为Microsoft Visual Basic 5.0 / 6.0
(3)字符串提取与作者定位 在Kali中先用 strings 提取原始 RaDa.exe,发现大量乱码,证明加壳状态下关键字符串被隐藏。随后对脱壳文件执行 strings RaDa_unpacked.exe | grep -i -E "author|siles|perez|raul|david" 命令,成功提取出作者信息:(c) Raul Siles && David Perez。
图1-4 strings提取加壳文件(乱码)
图1-5 strings提取脱壳文件得到作者信息
3.2 任务二:crackme逆向分析
(1)crackme1.exe分析
(1)crackme1.exe分析
首先进行黑盒测试: 无参数或两个参数运行时提示 I think you are missing something.;带一个参数运行时提示 Pardon? What did you say?。说明程序需要1个参数。 在IDA中查看函数调用图,进入核心函数 sub_401280,查看流程图发现代码先比较参数个数,随后调用 strcmp 与字符串 I know the secret 进行比较。相等则输出成功提示。 图2-1 crackme1黑盒测试结果 图2-2 IDA函数调用图 图2-3 IDA流程图显示strcmp逻辑 图2-4 crackme1验证输入成功截图 (2)crackme2.exe分析 在IDA的Strings窗口中发现了 crackmeplease.exe 和 I know the secret。查看流程图发现程序有两次 strcmp:第一次比较 argv[0](程序名)是否为 crackmeplease.exe,第二次比较输入参数是否为 I know the secret。因此,将程序重命名为 crackmeplease_你的学号.exe(注:为匹配程序内部判断,实际复制时命名为 crackmeplease.exe 放在桌面临时测试),并执行验证,成功输出隐藏信息。 图2-5 crackme2的Strings窗口 图2-6 crackme2的IDA双重判断逻辑 图2-7 crackme2验证成功截图 (1)基本信息摘要 图3-1 md5sum与sha256sum计算截图 (2)目的与行为特性 通过IDA逆向脱壳后的文件,在代码中发现大量VB6特有函数(如vbaStrCopy)及相关字符串。程序试图访问 http://10.10.10.10/RaDa 以及 download.cgi、upload.cgi 等路径,说明其具备网络通信、下载更新指令、上传文件的功能。同时,代码中对 HKLM\Software\Microsoft\Windows\CurrentVersion\Run 注册表项进行写入操作,指向 C:\RaDa\bin 目录下的 RaDa.exe,目的是实现开机自启动。 图3-2 IDA发现网络请求与路径 图3-3 IDA发现注册表修改与自启动 该样本采用了UPX加壳以对抗静态分析,增加初步研判难度;并且部分字符串可能进行了混淆或加密。 属于后门木马 / 僵尸网络客户端(Bot)。理由:主要行为是驻留系统、通过HTTP协议接收C2服务器指令实现远程控制,并非自我复制传播的病毒。 可以调查出。在未去除元数据且静态字符串未强加密的情况下,通过脱壳提取硬编码信息(如 Raul Siles && David Perez)是最直接的条件。 具有类似后门与远控功能的工具包括: Back Orifice (BO2K)、NetBus、Sub7、灰鸽子等。 IRC(Internet Relay Chat)是一种应用层协议。客户端申请加入网络时发送 NICK 消息设定昵称。一般使用 6667 等TCP端口。 僵尸网络是由攻击者通过恶意软件控制的一群联网计算机,常用于发起DDoS攻击、发送垃圾邮件、窃取信息等。 在Wireshark中过滤 ip.src == 172.16.134.191 && tcp.dstport == 6667 && tcp.flags.syn == 1,可看到蜜罐与 209.126.161.29、66.33.65.58、63.241.174.144、217.199.175.10、209.196.44.172 等服务器进行了通信。 图4-1 Wireshark过滤IRC服务器 (4)访问特定僵尸网络的主机数 使用 tcpflow 提取出与 209.196.44.172 通信的数据流,通过 grep 提取 353 消息(用户列表),结合 sed、sort、wc -l 统计,最终得到 3461 个不同的主机。 图4-2 tcpflow与统计命令结果3461 (5)攻击蜜罐的IP数量 使用 tcpdump 读取pcap包,过滤目的地址为 172.16.134.191 的流量,使用 awk 和 cut 提取源IP并去重统计,发现共有 165 个不同的主机访问了蜜罐。 图4-3 tcpdump统计攻击IP结果165 通过 tcpdump 抓取蜜罐的响应包(SYN+ACK)及UDP响应,发现开放了 135、139、25、445、4899、80、137 等端口。 其中,445端口(SMB)的攻击很可能成功了。在Wireshark中过滤 tcp.port == 445,可以看到攻击者(195.36.247.77)与蜜罐进行了深度的SMB交互,包括 Negotiate Protocol、Session Setup 以及 NT Create AndX Request 等,这通常意味着攻击者通过445端口(可能是利用MS08-067漏洞或弱口令爆破)成功建立了会话,甚至可能上传了木马文件。 图4-4 Wireshark分析445端口深度交互 图4-5 tcpdump统计开放端口 问题:在IDA中尝试按空格键切换流程图失败, 问题截图:当前处于Hex View-A,View -> Graphs菜单中的流程图选项呈灰色 通过本次实验,我将理论知识落地到了实际攻防对抗中。 首先,在恶意代码分析部分,我深刻体会到了“加壳”对于逆向分析的阻碍作用。面对原文件跑出来的满屏乱码,一旦通过超级巡警成功脱壳,关键信息(如作者、网络请求地址)就无处遁形。这让我明白,防守方在分析样本时,脱壳是必不可少的破局点。 其次,在crackme的逆向中,一开始我非常依赖动态调试,后来发现IDA的流程图功能极其强大。只要静下心来看懂 cmp 和 strcmp 前面的参数来源,逻辑其实很清晰。另外,像crackme2这种不仅校验参数还校验文件名的小把戏,非常考验逆向时的细心程度。 最后,僵尸网络的取证分析让我直观感受到海量数据中隐藏的安全威胁。仅仅5天的流量,就暴露了165个攻击IP和上千个被感染的肉鸡。使用 tcpdump、tcpflow 配合 awk、grep 这种命令行管道处理二进制流量包的方法,极大地提升了我的数据分析效率。网络安全不仅仅是写代码,更是海量日志下的抽丝剥茧。3.3 任务三:rada恶意代码深度分析
caaa6985a43225a0b3add54f44a04c7E(可能因计算工具不同有细微差异,以实际为准)13c2379e9d9f679396e21a3391804cc834892f25691381b6d078d07b56d38f90(3)反分析技术
(4)分类
(5)作者调查
(6)相似工具
(7)检测方法(至少5种)
download.cgi)或Hash值,加入杀软特征库。...CurrentVersion\Run 的异常写入。10.10.10.10/RaDa 特征请求。C:\RaDa目录、发起HTTP请求的行为。3.4 任务四:取证分析实践
(1)IRC基础知识
(2)僵尸网络基础
(3)蜜罐通信的IRC服务器
(6)与(7)攻击的安全漏洞及成功情况
4. 问题及解决方案
View -> Graphs菜单呈灰色不可用状态。Hex View-A(十六进制视图)中。在该视图下无法呼出流程图。切换到 IDA View-A 标签页,光标点击反汇编代码区域后,再按空格键,成功打开流程图。5. 学习感悟、思考等
😃
参考资料