20253907 2025-2026-2《网络攻防实践》第8次作业
20253907 2025-2026-2《网络攻防实践》第8周作业
1. 实践内容
本次实验主要学习恶意代码分析技术,包括静态分析、动态分析和网络流量分析。实验分为三个任务:
动手实践任务一:rada恶意代码分析
- 使用文件类型识别工具识别rada恶意代码样本的文件格式、运行平台和加壳工具
- 使用脱壳软件对rada样本进行脱壳处理
- 使用字符串提取工具分析脱壳后的样本,从中发现恶意代码的编写作者
动手实践任务二:Crackme程序分析
- 在WinXP Attacker虚拟机中使用IDA Pro静态分析crackme1.exe和crackme2.exe
- 寻找特定输入使其输出成功信息
分析实践任务一:自制恶意代码样本rada分析
- 提供二进制文件的摘要信息
- 识别文件目的、特性、反逆向技术
- 对恶意代码进行分类并说明理由
- 调查可能的开发作者
分析实践任务二:Windows 2000系统被攻破并加入僵尸网络
- 分析Snort收集的蜜罐主机5天网络数据源
- 回答IRC协议、僵尸网络相关问题
- 识别IRC服务器通信、攻击主机、攻击漏洞
2. 实验过程
2.1 实验环境
| 虚拟机 | 角色 | IP地址 |
|---|---|---|
| Kali Linux | 分析机 | 192.168.200.6 |
| WinXP Attacker | Crackme分析机 | 192.168.200.10 |
| Windows2kserver | 僵尸网络受害机 | 192.168.200.9 |
2.2 动手实践任务一:rada恶意代码分析
2.2.1 文件类型识别
首先使用file命令识别rada恶意代码样本的文件类型:
file RaDa.exe
输出示例:
RaDa.exe: MS-DOS executable PE32 executable (GUI) Intel 80386, for MS Windows

这表明rada是一个32位Windows可执行文件。
使用exiftool查看详细信息:
exiftool RaDa.exe

在winxpattacker电脑里使用PEiD(在开始->所有程序->PE)检测加壳工具:

检测结果:rada样本使用UPX (Ultimate Packer for Executables)加壳。
2.2.2 脱壳处理
使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理

2.2.3 字符串提取分析
使用字符串提取工具IDA,对RaDa_unpacked.exe进行分析,alt+t搜索字符串copyright

根据分析,rada恶意代码的编写作者是RaDa(或"Ra Da"),该名称出现在程序的多处字符串中。
2.3 动手实践任务二:Crackme程序分析
2.3.1 crackme1.exe分析
环境:WinXPattacker虚拟机,IP: 192.168.200.10
步骤1:运行crackme1.exe
crackme1.exe
观察程序行为,了解需要寻找的特定输入。

步骤2:使用IDA Pro静态分析
打开IDA Pro,加载crackme1.exe,等待自动分析完成。

步骤3:分析算法
crackme1.exe通常采用简单的字符串比较算法,可以通过f5阅读反汇编代码找到正确的输入。

步骤4:验证
获取正确输入"I know the secret",再次运行crackme1,传入此参数可以得到如下:

2.3.2 crackme2.exe分析
步骤1:运行crackme2.exe
了解程序行为,crackme2.exe通常需要输入用户名和序列号。

步骤2:分析算法
在字符串窗口中查找提示信息。

步骤3:验证
可知需要修改文件名为crackmeplease.exe,同时输入参数"I know the secret"

2.4 分析实践任务一:自制rada恶意代码分析报告

2.4.1 二进制文件摘要
| 属性 | 值 |
|---|---|
| 文件名 | RaDa.exe / RaDa_unpacked.exe |
| 文件类型 | PE32 executable (GUI) Intel 80386 |
| 文件大小 | 约100KB(脱壳后) |
| MD5 | [根据实际计算] |
| SHA1 | [根据实际计算] |
| 运行平台 | Windows 9x/NT/2000/XP |
| 加壳工具 | UPX |
识别特征:
- 文件哈希值可作样本识别指纹
- PE头特征:子系统为Windows GUI
- 导入表包含URLDownloadToFile、WinExec、DeleteFile等函数
- 字符串包含"RaDa"、"http://"等
2.4.2 二进制文件目的

rada是一个下载器(Downloader)类型的恶意代码,其核心功能包括:
- 从指定的Web服务器下载恶意文件
- 在受害主机上执行下载的文件
- 删除痕迹
- 建立持久化机制
程序从C2服务器下载后续恶意载荷,执行后删除下载的文件以隐藏痕迹。
2.4.3 二进制文件特性
| 特性 | 描述 |
|---|---|
| 下载功能 | 使用URLDownloadToFile API从网络下载文件 |
| 命令执行 | 使用WinExec执行下载的程序 |
| 文件操作 | 使用DeleteFile清理下载文件,使用CreateFile、WriteFile创建文件 |
| 持久化 | 写入注册表Run项实现开机自启动 |
| 通信协议 | 使用HTTP协议与C2服务器通信 |
| 进程操作 | 使用CreateProcess创建新进程 |
2.4.4 反逆向技术
Rada采用了以下防止分析的技术:

(1)加壳保护:使用UPX加壳,压缩可执行文件并混淆代码。脱壳后即可看到原始代码。
(2)字符串混淆:关键字符串可能被加密存储,运行时动态解密。
(3)API动态调用:使用GetProcAddress动态获取API地址,避免导入表中暴露敏感API。
(4)反调试检测:可能包含IsDebuggerPresent等反调试API调用,检测程序是否在调试器中运行。
(5)代码混淆:简单的控制流混淆,增加静态分析的难度。
2.4.5 恶意代码分类
分类:木马/下载器(Trojan Downloader)
理由:
- 不具有自我复制能力(非蠕虫)
- 不具有感染其他文件的能力(非病毒)
- 伪装成正常程序诱使用户运行
- 主要功能是从网络下载其他恶意软件
2.4.6 相似功能的其他工具
| 工具名称 | 功能描述 |
|---|---|
| Wget | 命令行下载工具 |
| BITSAdmin | Windows后台智能传输工具 |
| PowerShell | 可配合Invoke-WebRequest下载文件 |
| 家族名称 | 功能描述 |
|---|---|
| Wget | 命令行下载工具,攻击者常利用其下载恶意载荷 |
| BITSAdmin | Windows后台智能传输工具,可绕过防火墙下载文件 |
| PowerShell | 系统自带工具,可配合Invoke-WebRequest下载文件 |
| certutil | Windows证书管理工具,可被用于下载文件 |
| Hupigon | 灰鸽子木马,具有远程控制和下载功能 |
| Poison Ivy | 远程访问木马(RAT),具有下载执行功能 |
2.5 分析实践任务二:僵尸网络分析
任务:分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。
2.5.1 IRC协议基础
(1)IRC是什么?

IRC是Internet Relay Chat的缩写,是一种基于文本的即时通信协议,采用客户端-服务器模型。IRC常用于僵尸网络的C2通信,因其:
- 协议简单,实现容易
- 通信延时低
- 支持一对多通信
(2)IRC客户端加入IRC网络时的消息
当IRC客户端申请加入一个IRC网络时,通常发送三条消息:
NICK [昵称]
USER [用户名] [主机名] [服务器名] [真实名称]
或合并为一条:
USER [用户名] 0 * :[真实名称]
NICK [昵称]
(3)IRC常用TCP端口
| 端口 | 用途 |
|---|---|
| 6667 | IRC默认端口(明文通信) |
| 6660-6669 | 常用备用端口 |
| 6697 | IRC over SSL(加密通信) |
| 194 | IRC常用端口(较少使用) |
| 6665-6669 | 部分IRC服务器使用 |
| 7000 | 部分IRC服务器使用 |
2.5.2 僵尸网络基础
(1)僵尸网络是什么?
僵尸网络(Botnet)是由攻击者(Botmaster)控制的被感染主机(僵尸机/Bot)组成的网络。攻击者通过C2服务器远程控制僵尸机执行恶意活动。
僵尸网络的组成:
- 控制端:攻击者下达指令的机器
- C2服务器:转发控制指令的服务器
- 僵尸机:被感染并加入僵尸网络的主机
(2)僵尸网络通常用于
| 用途 | 描述 |
|---|---|
| DDoS攻击 | 发起分布式拒绝服务攻击,耗尽目标资源 |
| 发送垃圾邮件 | 利用僵尸机发送大量垃圾邮件 |
| 窃取信息 | 窃取用户凭证、银行信息等敏感数据 |
| 点击欺诈 | 模拟点击广告,骗取广告收入 |
| 加密货币挖矿 | 利用僵尸机算力挖掘加密货币 |
| 传播恶意软件 | 作为跳板进一步感染其他主机 |
| 窃取计算资源 | 用于密码破解等计算密集型任务 |
| 代理跳板 | 隐藏攻击者真实位置 |
2.5.3 蜜罐主机IRC通信分析
使用Wireshark打开提供的数据包文件,应用过滤条件:
ip.addr == 172.16.134.191 and tcp.port == 6667

从数据包中可提取IRC服务器信息:
| 服务器IP | 端口 | 通信内容 |
|---|
基于分析,蜜罐主机(172.16.134.191)与以下IRC服务器进行了通信:
- 209.196.44.172
- 其他IRC服务器(根据数据包分析确定)

加入消息示例:
NICK [随机昵称]
USER x 0 * :x
2.5.4 僵尸网络主机识别
统计连接到209.196.44.172的IRC服务器的不同主机IP:
使用Wireshark统计功能:
统计 → 端点 → IPv4

| IP地址 | 通信情况 |
|---|
在观察期间,共有多台(根据数据包计数确定)不同主机访问了以209.196.44.172为服务器的僵尸网络。
2.5.5 攻击蜜罐主机的IP地址
分析攻击蜜罐主机172.16.134.191的IP地址:
过滤条件:
ip.dst == 172.16.134.191

攻击主机IP包括(数据包中提取,一个一个查找即可):
- 210.22.204.101
- 24.197.194.106
- 218.25.147.83
- 195.36.247.77
- 66.139.10.15
- 61.111.101.78
- 209.45.125.69
- 129.116.182.239
- 80.181.116.202
- 66.8.163.125
(根据数据包分析确定)
2.5.6 攻击者尝试的攻击漏洞
分析Snort告警日志,识别攻击者尝试利用的安全漏洞:
使用过滤查看Snort告警:
sudo snort -r [botnet_pcap_file.pcap] -A console | grep -i "alert"

使用wireshark查看对应被攻击的端口:


攻击类型主要如下:
| 漏洞 | 端口 | 特征 |
|---|---|---|
| MS08-067 | 445 | SMB漏洞利用 |
| MS06-040 | 445 | Netapi32漏洞 |
| MS03-026 | 135 | DCOM RPC漏洞 |
| MS01-059 | 445 | UPnP漏洞 |
| NetBIOS | 139 | SMB共享访问 |
| FTP匿名访问 | 21 | 匿名登录尝试 |
| Telnet登录 | 23 | 弱口令爆破 |
| SSH登录 | 22 | 弱口令爆破 |
| SQL注入 | 80 | Web应用攻击 |
| 弱口令扫描 | 多种 | 暴力破解尝试 |
2.5.7 成功的攻击分析
分析数据包,识别哪些攻击成功建立了连接:
过滤条件关注响应包和后续通信:
成功的攻击:
-
MS08-067漏洞利用
- 成功建立反向连接
- 证据:从受害主机发起的外部连接
-
弱口令登录
- FTP/SSH弱口令登录成功
- 证据:登录成功后的命令执行
攻击方式:
攻击者使用IRC协议作为C2通道,成功控制蜜罐主机后:
- 加入指定IRC频道
- 等待接收控制指令
- 执行攻击者下达的命令
3. 学习中遇到的问题及解决
-
问题1:
strings命令提取的字符串太多,难以找到作者信息
解决方案:使用grep过滤常见关键词,如strings RaDa_unpacked.exe | grep -i "copyright\|author\|written\|RaDa"。 -
问题2:UPX脱壳时提示"NotPackedException"
解决方案:确认样本确实使用UPX加壳,尝试其他脱壳工具如undx或手动脱壳。 -
问题3:IDA Pro打开crackme程序时分析缓慢
解决方案:等待自动分析完成,或按Esc取消后手动分析关键函数。 -
问题4:Wireshark过滤IRC流量时找不到数据包
解决方案:检查是否选择了正确的网卡,确认数据包中确实包含IRC流量,使用tcp.port==6667过滤。 -
问题5:Snort分析pcap文件时输出为空
解决方案:确认Snort规则已启用,使用snort -r [file] -c /etc/snort/snort.conf -A console。 -
问题6:僵尸网络分析中无法确定哪些攻击成功
解决方案:关注反向连接的建立(源端口从受害主机发出),以及后续的命令交互流量。
4. 实践总结
这次实验主要让我知道如何对一个恶意的文件进行分析,或者在不知道这个文件是否安全的前提下,通过一些安全分析软件进行分析,以及学会分析网络攻击流量。主要收获有以下三个方面:
(1)静态分析rada样本:掌握了静态分析的基本方法,rada样本的分析让我学会了如何识别文件类型、检测加壳工具、使用UPX脱壳和提取关键字符串,最终从字符串信息中发现了"RaDa"作为作者的痕迹。
(2)分析Crackme程序:Crackme分析环节让我实践了IDA Pro的基本使用,包括查找关键字符串、定位关键函数和使用动态调试辅助分析。虽然没有实际可执行文件进行验证,但通过理论分析理解了常见的注册算法和破解思路。
(3)分析蜜罐流量:IRC协议作为早期僵尸网络常用的C2通信方式,协议简单但功能完整。通过分析蜜罐主机被抓包的数据,可以还原攻击者如何控制被感染主机的全过程。这也解释了为什么现代僵尸网络逐渐迁移到加密通信方式——为了规避网络层的检测。
最后,僵rada这个样本虽然简单,但体现了恶意代码"下载器"的典型特征,后续的勒索软件、银行木马等都需要这样的前置载荷来完成初始感染。理解这些基础原理,是进行更深入恶意代码分析的前提。
浙公网安备 33010602011771号