20251911 2025-2026-2 《网络攻防实践》第8次作业报告
1. 实践内容
动手实践任务一:对rada恶意代码样本进行文件类型识别、脱壳与字符串提取。具体包括:(1)使用file命令和PEiD工具识别文件格式、运行平台和加壳工具;(2)使用超级巡警脱壳机进行脱壳处理;(3)使用strings命令和IDA Pro提取字符串,找出恶意代码的编写作者。
动手实践任务二:在WinXP Attacker虚拟机中使用IDA Pro静态分析crackme1.exe和crackme2.exe,通过分析函数调用关系和字符串比对逻辑,寻找能够输出成功信息的特定输入。
分析实践任务一:对rada恶意代码样本进行深度分析,撰写分析报告,回答关于样本摘要信息、目的、特性、防逆向技术、分类、相似工具以及作者调查等七个问题。
分析实践任务二:分析Snort工具收集的蜜罐主机5天网络数据源,回答IRC协议、僵尸网络定义、IRC通信目标、主机访问数量、攻击源IP、安全漏洞以及成功攻击等七个问题。
2. 实践过程
2.1 动手实践任务一:rada恶意代码样本分析
2.1.1 文件类型识别
首先将rada.rar压缩包解压,得到RaDa.exe样本文件。由于在WinXP虚拟机中直接解压遇到问题,先将文件在本机解压后再复制到WinXP Attacker虚拟机中。(直接拖进去就行)
(1)使用file命令查看文件类型
在WinXP的命令行中执行file命令:
file rada.exe

这表明rada.exe是一个32位的Windows PE可执行文件,具有图形用户界面(GUI),适用于Intel 80386架构处理器,运行平台为Windows操作系统。
(2)使用strings命令查看可打印字符串
strings rada.exe

输出的内容大部分是乱码,无法获取有效信息。这说明该文件经过了加壳处理,原始代码和数据被压缩或加密,需要通过脱壳才能看到真实内容。
(3)使用PEiD检测加壳工具
将rada.exe文件拖入PEiD工具中,PEiD自动分析并显示加壳信息:

由此可知,该恶意代码样本使用了UPX加壳工具进行压缩加壳,加壳版本为0.89.6到2.90之间的版本,作者为Markus & Laszlo。
2.1.2 脱壳处理
使用超级巡警虚拟机自动脱壳机对rada.exe进行脱壳处理:

已在当前目录下生成脱壳后的文件RaDa_unpacked.exe
再次使用strings命令查看脱壳后的文件:
strings RaDa_unpacked.exe

此时输出的不再是乱码
2.1.3 字符串提取与作者发现
使用IDA Pro Free工具对脱壳后的文件进行深度字符串分析:
-
打开IDA Pro Free,点击“New”创建新项目
-
选择PE Executable文件类型
-
浏览并选择脱壳后的
RaDa_unpacked.exe文件 -
保持默认选项,连续点击“Next”直至完成加载
![image]()
-
IDA Pro自动完成代码分析后,点击顶部菜单“View” -> “Open Subviews” -> “Strings”打开字符串窗口

找到了作者信息
2.2 动手实践任务二:分析Crackme程序
2.2.1 分析crackme1.exe
(1)文件类型确认
首先使用file命令查看文件类型:
file crackme1.exe

显示为32位Windows下的PE可执行文件。
(2)试探输入格式
在命令行中多次执行crackme1.exe,测试不同参数数量下的输出:
crackme1.exe
crackme1.exe 1
crackme1.exe 1 2

(3)IDA Pro静态分析
使用IDA Pro Free打开crackme1.exe:
-
在Strings窗口中可以看到程序中出现的明文字符串:
![image]()
-
查看View -> Graphs中的Function Calls函数调用图,可以看到程序调用了printf、fprintf等输出函数

- 分析地址401280处的核心函数段,查看其汇编代码和流程图
![image]()
![image]()
通过分析流程图可以得出程序逻辑:
- 判断argc是否等于2(即是否输入了1个参数)
- 如果不是,输出"I think you are missing something."
- 如果是,判断argv[1]是否等于"I know the secret"
- 如果不相等,输出"Pardon? What did you say?"
- 如果相等,输出"You know how to speak to programs, Mr. Reverse-Engineer"
(4)验证结果
在命令行中输入正确的参数:
crackme1.exe "I know the secret"

程序输出了成功信息,验证分析正确。
2.2.2 分析crackme2.exe
(1)初步测试
使用与crackme1相同的方式测试:
crackme2.exe "I know the secret"

即使输入了正确的密码,仍然提示错误,说明存在额外的验证条件。
(2)IDA Pro静态分析
使用IDA Pro Free打开crackme2.exe进行分析:
-
在Strings窗口中可以看到额外的字符串:
"I have an identity problem."
![image]()
-
分析地址401280处的核心函数段,查看汇编代码和流程图
![image]()
通过分析发现程序逻辑:
- 首先判断argc是否等于2
- 如果不是,输出"I think you are missing something."
- 如果是,判断程序文件名是否等于"crackmeplease.exe"
- 如果不是,输出"I have an identity problem."
- 如果是,再判断arg[1]是否等于"I know the secret"
- 如果不是,输出"Pardon? What did you say?"
- 如果是,输出成功信息(成功信息通过异或编码存储)
(3)验证结果
首先将crackme2.exe重命名为crackmeplease.exe,然后执行:
crackmeplease.exe "I know the secret"

程序输出成功信息,验证分析正确。
2.3 分析实践任务一:rada恶意代码深度分析报告
2.3.1 二进制文件摘要信息
找一个输出md5值的在线网站,将该文件丢进去即可。

MD5摘要结果为唯一标识该样本的哈希值,可用于样本识别和比对。
使用file命令获取基本信息:
file rada.exe

:PE32可执行文件,32位Windows平台,GUI界面程序。
2.3.2 二进制文件的目的
使用Process Explorer进程监视软件对脱壳后的RaDa_unpacked.exe进行行为监控:

通过分析strings窗口中的字符串和监控到的行为,可以确定该恶意代码的目的:
-
远程连接与控制:程序主动访问
http://10.10.10.10/RaDa,下载RaDa_commands.html文件作为命令和控制(C&C)指令的来源 -
文件操作:
- 在C盘根目录下创建
C:\RaDa\tmp文件夹 - 将自身(rada.exe)复制到
C:\RADA\bin目录中 - 通过“get”命令从远程服务器下载文件
- 通过“put”命令将本地文件上传到远程服务器
- 在C盘根目录下创建
-
持久化机制:修改注册表,将rada.exe设置为开机自动启动
-
执行恶意指令:支持多种命令包括:
put:上传文件get:下载文件screenshot:截取屏幕图像sleep:休眠指定时间- DDoS攻击指令
2.3.3 二进制文件的特性
该恶意代码样本具有以下特性:
-
加壳保护:采用UPX加壳技术压缩可执行文件,增加静态分析的难度
-
自我复制与持久化:
- 将自身复制到
C:\RADA\bin目录 - 修改注册表项实现开机自启动
- 将自身复制到
-
C&C远程控制:通过HTTP协议定期访问C&C服务器获取指令
-
后门功能完善:
- 文件上传下载能力
- 远程命令执行
- 屏幕截图功能
- DDoS攻击能力
-
API调用丰富:调用了user32.dll(图形界面操作)和kernel32.dll(进程和文件操作)等多个系统DLL
2.3.4 防逆向工程技术

该样本采用的防止被分析或逆向工程的技术是UPX加壳技术:
- UPX(Ultimate Packer for eXecutables)是一种开源的可执行文件压缩工具
- 加壳后,原始的机器代码和数据被压缩和加密
- 文件头部添加了用于解压和解密的“外壳”代码
- 脱壳前直接使用strings命令查看字符串会显示乱码
- 脱壳后需要使用超级巡警脱壳机等工具才能还原原始代码
2.3.5 恶意代码分类
该恶意代码样本应分类为后门程序(Backdoor)。
理由如下:
- 程序在后台隐蔽运行,用户不易察觉
- 通过HTTP协议主动连接远程C&C服务器
- 能够接收和执行攻击者下达的各种命令
- 不具备自我复制感染其他文件的能力(区分于病毒)
- 不具备自动网络传播能力(区分于蠕虫)
- 不具有伪装性(区分于特洛伊木马)
总的来说RaDa_unpacked.exe 是一个功能完善的后门程序,其主要目的是:通过 HTTP 协议与远程 C&C 服务器通信,接收攻击者下发的命令,实现以下功能:
文件上传与下载(get / put)
截取屏幕(screenshot)
发起 DDoS Smurf 攻击
执行远程系统命令(通过 cmd 或 WScript.Shell)
浏览器自动交互(可能用于凭证窃取)
持久化(修改注册表实现开机自启动)
自我复制与卸载控制
2.3.6 相似功能的其他工具
具有相似功能的其他工具包括:
- Gatslag:僵尸程序,可进行DDoS攻击
- Setiri:特洛伊木马,具有远程控制功能
- Poison Ivy:著名的远程控制后门工具
- Gh0st RAT:开源远程控制工具
- Netcat:可作为反向Shell的后门工具
2.3.7 作者调查
可以调查出该二进制文件的开发作者。
调查方法和条件:
- 分析环境:需要在隔离的虚拟机环境中进行分析(如WinXP或Kali Linux)
- 主要工具:需要脱壳工具(超级巡警脱壳机)和字符串分析工具(strings、IDA Pro)
- 限定条件:
- 必须对文件进行脱壳处理,去除UPX加壳保护
- 需要将IDA Pro的字符串编码格式设置为Unicode
- 需要确保字符串窗口完整加载所有字符串信息
![image]()
本次分析成功在脱壳后的文件中找到了Authors: Raul Siles & David Perez, 2004的字符串,确认了作者身份。
2.4 分析实践任务二:Windows 2000系统被攻破并加入僵尸网络
2.4.1 IRC基础知识
IRC(Internet Relay Chat,互联网中继聊天):一种实时文本通信协议,采用客户端-服务器架构,支持群组聊天和私聊功能。
客户端加入IRC网络时发送的消息:
- 注册阶段:发送NICK(设置昵称)和USER(设置用户信息)消息
- 加入频道:发送JOIN消息,格式为
JOIN #频道名
IRC常用TCP端口:
- 标准端口:6667
- 备用端口:6660-6669
- SSL加密端口:6697
- 僵尸网络常用规避端口:7000、8000、8080
2.4.2 僵尸网络
僵尸网络(Botnet):由攻击者控制的被感染主机(僵尸节点/Bots)组成的大型网络,攻击者可通过命令与控制(C&C)服务器统一操控这些主机。
僵尸网络的常见用途:
- 分布式拒绝服务攻击(DDoS)
- 发送垃圾邮件和钓鱼邮件
- 加密货币挖矿
- 窃取敏感数据(键盘记录、凭证窃取)
- 勒索软件传播
- 点击欺诈和广告欺诈
2.4.3 蜜罐主机通信的IRC服务器
使用Wireshark过滤条件筛选蜜罐主机(172.16.134.191)与IRC服务器的通信:
tcp.port == 6667 && ip.addr == 172.16.134.191

分析得出蜜罐主机通信的IRC服务器共有5个:
- 209.126.161.29
- 66.33.65.58
- 63.241.174.144
- 217.199.175.10
- 209.196.44.172
2.4.4 访问僵尸网络的不同主机数量
使用tcpflow命令提取与服务器209.196.44.172的通信流量:
tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667'

然后分析IRC频道内的用户列表:
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

统计结果显示:共有3461台不同的主机访问了以209.196.44.172为服务器的僵尸网络。
2.4.5 攻击蜜罐主机的IP地址
使用tcpdump命令提取所有向蜜罐主机发送数据包的源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 > attack_ips.txt
wc -l attack_ips.txt

统计结果显示共有165个不同的IP地址被用于攻击蜜罐主机。
2.4.6 攻击者尝试攻击的安全漏洞
使用tcpdump查看蜜罐主机有响应的TCP和UDP端口:
# 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
# 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


分析结果如下:
| 端口 | 协议 | 服务/漏洞 |
|---|---|---|
| 135 | TCP | RPC(远程过程调用)- 可能用于DCOM漏洞利用 |
| 139 | TCP | NetBIOS-SSN - 可能用于SMB空会话查询 |
| 25 | TCP | SMTP - 可能用于邮件中继测试 |
| 445 | TCP | SMB - 可能用于MS06-040等漏洞利用 |
| 4899 | TCP | Radmin远程控制 - 可能用于远程管理入侵 |
| 80 | TCP | HTTP/IIS - 可能用于Web服务器漏洞利用 |
| 137 | UDP | NetBIOS-NS - 可能用于网络发现 |
2.4.7 成功攻击分析
在Wireshark中对各端口逐一分析:
端口135:

仅进行了TCP连接,没有数据交互,攻击未成功。
端口139:

攻击者多次尝试建立连接,但被蜜罐识别并发送RST指令拒绝,攻击未成功。
端口25:

仅为TCP连接,无后续攻击行为,攻击未成功。
端口445:

在分析第33280号数据包时,发现了PSEXESVC.EXE程序,表明使用了PsExec工具进行远程命令执行,这是Dv1dr32蠕虫的特征,攻击成功。
端口4899:

检测到Radmin远程控制工具尝试连接,但未建立完整的控制会话,攻击未成功。
端口80:

- 发现攻击者尝试通过缓冲区溢出漏洞获取命令行
- 发现
c:\notworm特征字符串,这是红色代码(Red Code)蠕虫的特征 - 通过分析蜜罐主机80端口向外的HTTP响应,发现返回的都是IIS默认页面,说明漏洞利用失败
端口137:

仅用于NetBIOS网络查点,获取用户信息,未造成实质性攻击成功。
结论:唯一成功的攻击来自IP地址61.111.101.78,通过TCP 445端口利用SMB服务漏洞,使用PsExec工具执行了远程命令,成功将蜜罐主机纳入僵尸网络。
3. 学习中遇到的问题及解决
问题1:crackme2.exe的额外验证条件一开始没看到,初始分析时只关注了参数输入,忽略了程序本身可能对文件名进行校验。
解决方案:
- 在IDA Pro中仔细分析函数调用关系,注意比较指令的目标
- 关注到程序对argv[0]进行了strcmp比较
- 发现比较目标为“crackmeplease.exe”
- 将程序重命名后重新测试,验证了分析结果
问题2:部分攻击成功与否的判断标准不确定,端口4899的Radmin连接被检测到,但不确定是否攻击成功。
解决方案:
- 在Wireshark中追踪完整的TCP流
- 检查是否有认证成功的数据包
- 检查是否有后续的命令交互数据
- 确认只有连接尝试,没有实际的控制命令传输,判定为攻击未成功
4. 学习感想和体会
在这次实验中,印象最深的是用超级巡警脱壳机对rada样本脱壳的过程:一开始直接用strings查看加壳文件全是乱码,但用脱壳机处理完后再次运行strings,一下子就看到了“Authors: Raul Siles & David Perez”等可读信息,那一刻真切体会到了“脱壳”在恶意代码分析中的关键作用,非常有成就感。







浙公网安备 33010602011771号