20251905 2025-2026-2 《网络攻防实践》实验八

20251905 2025-2026-2 《网络攻防实践》实践8报告

1.实践内容

学习内容

恶意代码静态分析与动态分析

本次实验主要围绕 Windows 平台恶意代码样本展开分析。静态分析部分通过 DIE、IDA 等工具识别样本的文件类型、编译语言、加壳情况、字符串信息和关键函数调用,从而初步判断样本的行为特征;动态分析部分则通过 Process Explorer、沙箱和流量分析工具观察程序运行后的文件、注册表、进程和网络行为。两种方法互相补充,可以在不完全执行或受控执行样本的情况下还原恶意代码的主要功能。

加壳与脱壳

恶意代码经常会通过加壳隐藏真实代码逻辑,常见壳会压缩或加密原始程序,使反汇编工具难以直接分析有效代码。本次 Rada 样本使用了 UPX 壳,因此需要先通过 DIE 识别壳类型,再使用脱壳工具还原程序主体。脱壳后的样本更容易在 IDA 中查看字符串、导入函数和程序逻辑,是后续逆向分析的重要前提。

IRC 僵尸网络流量分析

IRC 是早期僵尸网络常用的命令与控制通信方式。攻击者可以让大量受控主机加入指定 IRC 服务器和频道,再通过频道消息统一下发命令。本次实验通过 Wireshark、tcpdump、tcpflow 等工具分析蜜罐主机通信流量,识别 IRC 服务器、统计加入僵尸网络的主机数量,并进一步分析攻击者针对蜜罐主机尝试利用的端口和漏洞。

2.实践过程

动手实践任务一:Rada 恶意代码样本逆向分析

首先用DIE分析给定的样本文件,可以看到,该样本运行在windows平台上,32位,具有GUI

样本使用VB编译,加了一层UPX的壳

image-20260511140233347

分析出有UPX壳之后,使用超级巡警一键脱壳,得到脱壳后的RaDa_unpacked.exe文件。

image-20260511142410286

脱壳后,将样本文件拖入IDA进行分析,首先检索字符串,可以得到作者的信息

image-20260511145301997

分析实践任务一:Rada 恶意代码综合分析报告

在汇编窗口,可以看到而已程序的基础指纹信息,如MD5摘要等

image-20260511145313028

分析其汇编代码,发现可疑的ip地址,以及后续调用浏览器的行为。

image-20260511150808813

image-20260511150957316

将样本上传到微步云沙箱,可以看到更详细的恶意行为分析。

image-20260519124144263

继续分析其汇编代码,发现可以在命令行启动并且同时设置参数

image-20260511151528894

比如说,用--gui作为启动参数,就能看到该样本的gui界面

image-20260518142926712

使用process explorer监测该样本,可以发现:程序会在 C;\RaDa\bin等目录进行操作,同时会在10.10.10.10对应的服务器上下载一些东西。

image-20260518140515836

这里的RegWrite、RegRead 和RegDelete,说明该恶意软件通过Wscript.Shell完整控制了注册表操作,用于写入启动项,与上面微步云沙箱所分析的结果一致。

image-20260518140647046


动手实践任务二:分析Crackme程序

Crackme1

首先将样本拖入IDA,按F5查看反汇编。

可以看到样本代码逻辑很清晰,如果参数正好是2个且第二个参数是"I know the secret",就输出正确的结果(第一个参数默认为程序的名称。)

image-20260518141709615

如此即可。

image-20260519125517004

crackme2

这个稍微复杂了一点,既检测程序名是否为crackmeplease.exe,也检测后续的参数"I know the secret",最终的输出还被简易加密了一下。

image-20260518141831501

image-20260518141928195

最终也是得到正确的输出:We have a little secret: Chocolate

image-20260519130402971


分析实践任务二:

1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?

IRC(Internet Relay Chat)是一种基于文本的实时通信协议,最初主要用于多人聊天室。IRC 网络通常由多个服务器和频道组成,客户端连接服务器后可以加入指定频道,与同一频道中的其他用户通信。

当 IRC 客户端申请加入某个 IRC 网络时,一般会先向服务器发送 NICK 消息设置昵称,再发送 USER 消息提交用户名、主机名和真实姓名等用户信息;如果要加入某个频道,则会继续发送 JOIN #频道名 消息。

IRC 默认常用 TCP 端口是 6667,实际使用中也常见 66606669 这一组端口;如果使用 SSL/TLS 加密连接,则常见端口为 6697

2、僵尸网络是什么?僵尸网络通常用于什么?

僵尸网络是指大量被恶意代码感染并被攻击者远程控制的主机集合,这些受控主机通常被称为 Bot 或 Zombie。攻击者通过命令与控制服务器向这些主机下发指令,使它们在用户不知情的情况下执行统一行动。

僵尸网络通常用于发起 DDoS 攻击、发送垃圾邮件、传播恶意软件、窃取账号密码和敏感信息、进行点击欺诈、挖矿,或者作为跳板继续扫描和攻击其他主机。由于僵尸网络规模大、来源分散,攻击流量和控制链路往往更难追踪和阻断。

将样本文件拖入wireshark进行分析

image-20260519111844902

3.蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?

在wireshark中过滤IRC服务器的默认端口,可以看到与其通信的其他服务器

ip.src == 172.16.134.191 && tcp.dstport == 6667

image-20260519112011701

这个209.196.44.172发的数据包太多了,把它额外过滤下

ip.src == 172.16.134.191 && tcp.dstport == 6667 &&ip.dst != 209.196.44.172

image-20260519112437486

最终可以得到,蜜罐主机与以下五个服务器进行通信。

209.126.161.29

209.196.44.172

66.33.65.58

63.241.174.144

217.199.175.10

4.多少不同的主机访问了以209.196.44.172为服务器的僵尸网络

首先安装tcpflow工具,用于过滤出有用的数据包

sudo apt-get install tcpflow

image-20260519114637128

在过滤的数据包中查看有多少主机连接,结果共有3458个。

cat 209.196.044.172.06667-172.016.134.191.01152 | grep -a "^:irc5.aol.com 353" | sed 's/^:irc5.aol.com 353.*@ #//g' | tr ' ' '\n' | grep -v "^$" | sort -u | wc -l

image-20260519115347823

5.哪些IP地址被用于攻击蜜罐主机

使用命令将所有连接172.16.134.191主机的IP地址存入hanhean.txt文档中,显示有165个IP地址

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 > hanhean.txt;wc -l hanhean.txt

image-20260519115550349

这里是一些ip地址的示例

image-20260519115625558

6.攻击者尝试攻击了那些安全漏洞?哪些成功了?如何成功的?

首先筛选攻击者访问的端口,先筛出TCP的

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

image-20260519115710493

再筛UDP的

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

image-20260519115848694

所以攻击者尝试访问了135,139,25,445,4899,80,137端口对应的服务,合理怀疑攻击了其对应的安全漏洞。

依次查看不同端口的访问过程。

筛选135端口

ip.addr == 172.16.134.191 && tcp.port ==135

135端口,一般是windows RPC服务。这里只有TCP的握手过程,可以视作一次扫描,但未真正进行攻击。

image-20260519115950245

跟踪TCP流也没有有效的载荷

image-20260519120008417

筛选139端口

ip.addr == 172.16.134.191 && tcp.port ==139

139端口一般对应着NetBIOS/SMB的服务。

筛选后没有发现可疑的攻击迹象。

image-20260519120302077

筛选25端口

ip.addr == 172.16.134.191 && tcp.port ==25

25端口一般对应SMTP服务,筛选后的结果没有显示出可疑的攻击迹象。

image-20260519120419024

筛选4899端口

ip.addr == 172.16.134.191 && tcp.port ==4899

4899端口对应Radmin远程管理服务。攻击者尝试发起连接,但是被RST重置掉了。

image-20260519120623366

筛选80端口

ip.addr == 172.16.134.191 && tcp.port ==80

80端口即http服务,这里可以看到GET请求传参时参数很奇怪,疑似在尝试缓冲区溢出。但是没有后续,应该是攻击失败了

image-20260519133127168

筛选445端口

ip.addr == 172.16.134.191 && tcp.port ==445

445端口对应的是SMB/CIFS服务

在33275号包处跟踪TCP流,可以发现可疑的exe文件。psexesvc.exe是微软Sysinternals工具PsExec的核心服务端组件,用于在远程Windows主机上实现无代理远程命令执行,其前置应该是针对Windows SMB服务的远程代码执行漏洞,通过SMB协议进行NTLM身份认证,获取ADMIN$管理员共享权限

image-20260519121422035

继续跟踪TCP流,发现一些更为可疑的字符串,进一步坐实了在该端口攻击成功的结论。

image-20260519122413456

3.学习中遇到的问题及解决

  • 问题一:rada样本在脱壳之后在IDA中反汇编,加载后发现反编译器提示无法生成C/C++代码,且汇编视图中的函数结构异常混乱,充斥大量类似乱码的东西
  • 解决:由于rada是用VB编写的,而IDA反汇编后是将其转化为C代码,语言的不同可能会导致反汇编出错,此时需要分析汇编代码。

4.实验总结

本次实验从恶意代码逆向和网络流量取证两个角度展开。前半部分通过 DIE 判断 Rada 样本的基本属性和 UPX 加壳情况,脱壳后再结合 IDA、Process Explorer 和云沙箱分析其字符串、命令行参数、文件目录操作、注册表操作和网络连接行为,使我对恶意代码从静态特征到动态行为的分析流程有了更完整的认识。Crackme 分析部分则进一步练习了从反编译结果中还原程序判断逻辑的方法,也说明很多破解本质上就是读懂条件分支和字符串比较。

后半部分通过 Wireshark、tcpdump 和 tcpflow 对僵尸网络流量进行分析,识别出蜜罐主机与多个 IRC 服务器的通信关系,并统计了连接到指定 IRC 服务器的不同主机数量。继续分析攻击流量后,可以看到攻击者重点尝试访问了 135、139、25、445、4899、80、137 等端口,其中 445 端口的 SMB 流量中出现了 psexesvc.exe 等明显可疑内容,说明攻击者很可能已经通过 SMB 相关方式取得了一定的远程执行能力。本次实验让我认识到,恶意代码分析不能只看单个样本本身,还需要结合运行痕迹和网络通信进行综合判断;而在防御角度,及时修复高危服务漏洞、限制不必要端口暴露、监测异常 IRC 或 C2 流量都非常重要。

posted @ 2026-05-19 15:50  安和_零樂  阅读(29)  评论(0)    收藏  举报