20252901 2025-2026-2 《网络攻防实践》实践八报告

20252901 程宇 2025-2026-2 《网络攻防实践》实践八报告

一、实践内容概述

本次实践围绕恶意代码分析与僵尸网络流量分析两大核心主题展开,共包含四个实践任务:

1. 动手实践任务一:RaDa恶意代码样本基础分析

对提供的RaDa恶意代码样本进行文件类型识别、脱壳与字符串提取,以获得RaDa恶意代码的编写作者信息。

2. 动手实践任务二:Crackme程序逆向分析

在WinXP Attacker虚拟机中使用IDA Pro对crackme1.exe和crackme2.exe进行静态或动态分析,寻找特定的输入使其能够输出成功信息。

3. 分析实践任务一:RaDa恶意代码样本深度分析

对RaDa恶意代码样本进行深入分析,撰写报告回答其文件摘要、目的、特性、反逆向技术、分类、相似工具及作者溯源等问题。

4. 分析实践任务二:僵尸网络流量分析

分析蜜罐主机5天的网络数据源,回答IRC协议基础、僵尸网络概念、通信服务器识别、接入主机统计、攻击IP识别、漏洞利用分析及成功攻击判定等问题。


二、实践步骤与过程

任务一:RaDa恶意代码样本基础分析

本任务核心目标是完成RaDa恶意代码的文件识别、脱壳与作者信息提取。

步骤1:文件格式与类型识别

将实验样本RaDa.exe(文件可在学习通下载,压缩密码为rada)传入WinXP Attacker虚拟机(设置共享文档时,请在虚拟机→设置→选项→共享文件夹处进行操作,务必勾选"在Windows客户机中映射为网络驱动器")。
image

打开命令提示符,切换至样本所在目录(cd 桌面),执行以下命令识别文件类型:

file RaDa.exe

image

执行结果: RaDa.exe: PE32 executable for MS Windows (GUI) Intel 80386 32-bit

可知该样本为32位Windows GUI界面的PE可执行文件,运行于英特尔80386架构的32位Windows系统。

执行以下命令提取样本可打印字符串:

strings RaDa.exe

image

结果显示大量乱码字符,仅能识别KERNEL32.DLL等基础系统库文件,无有效可读信息,初步判断样本存在加壳保护。

步骤2:加壳类型识别与脱壳处理

使用PEiD工具(开始→所有程序→PE→PEID)加载RaDa.exe样本,检测加壳类型。

image
image

检测结果: 样本采用UPX 0.89.6 - 1.02 / 1.05 - 2.90版本加壳,加壳程序作者为Markus & Laszlo。

打开超级巡警虚拟机脱壳器(开始→所有程序→脱壳和加壳工具),加载RaDa.exe样本,工具识别到UPX壳并提示支持脱壳,点击"给我脱!"按钮完成脱壳操作,生成脱壳后的文件RaDa_unpacked.exe。

image

执行以下命令验证脱壳效果:

strings RaDa_unpacked.exe

image

可提取到大量可读的函数名、字符串信息,脱壳操作成功。

步骤3:字符串提取与作者信息获取

IDA Pro逆向验证

使用IDA Pro Free(开始→所有程序→反汇编)加载脱壳后的RaDa_unpacked.exe(New→PE Executable→找到RaDa_unpacked.exe),打开Strings窗口,右键点击Setup并勾选Unicode编码,刷新字符串列表后,在地址JDR0:00402D04处找到完整作者信息。

image

image

最终结论: RaDa恶意代码的编写作者为Raul Siles与David Perez,编写时间为2004年9月,该样本为Honeynet组织Scan of The Month 32 (SotM)挑战赛的相关样本。


任务二:Crackme程序逆向分析

本任务通过IDA Pro对两个Crackme程序进行静态逆向分析,定位程序的正确输入参数。

2.1 crackme1.exe分析

步骤1:基础试探

在命令行中运行crackme1.exe,进行参数试探:

  • 无参数时输出:I think you are missing something.
  • 输入1个参数时输出:Pardon? What did you say?
  • 输入2个及以上参数时输出参数缺失提示
    image

初步判断程序仅接受1个参数,且需要匹配特定口令。

步骤2:静态逆向分析

使用IDA Pro打开crackme1.exe,查看Strings窗口,除试探到的两个输出字符串外,还发现以下关键字符串:

  • I know the secret - 判断为正确口令
  • You know how to speak to programs, Mr. Reverse-Engineer - 判断为口令正确时的输出

image

步骤3:汇编逻辑验证

点击页面上方的View→Graphs→Function calls查看函数调用图,核心逻辑位于sub_401280函数中。

image
image

点击页面上方的View→Graphs→Flow Chart查看代码流程图。

image

该函数的核心逻辑如下:

  1. 判断参数个数argc是否为2(即1个输入参数)
  2. 若不匹配则输出参数缺失提示
  3. 若匹配则调用strcmp函数,将输入参数与I know the secret进行比对
  4. 比对失败则输出口令错误提示,比对成功则输出正确信息

步骤4:结果验证

在命令行执行以下命令:

crackme1.exe "I know the secret"

image

程序输出:You know how to speak to programs, Mr. Reverse-Engineer,验证成功。

2.2 crackme2.exe分析

步骤1:基础试探

运行crackme2.exe,进行参数试探:

  • 无参数时输出:I think you are missing something.
  • 输入1个参数时输出:I have an identity problem.
  • 输入2个及以上参数时输出参数缺失提示

image

判断程序除口令匹配外,还存在文件名校验逻辑。

步骤2:静态逆向分析

使用IDA Pro打开crackme2.exe,查看Strings窗口,发现关键字符串crackmeplease.exe

image

结合汇编逻辑分析,程序的核心校验流程如下:
image
image

  1. 参数个数校验:如果参数个数不是一个,则跳转到false分支,调用fprintf输出I think you are missing something.

  2. 文件名校验:如果参数个数为一个,则跳转到true分支,调用strcmp判断调用的文件名是否为crackmeplease.exe,如果不是则输出I have an identity problem.

  3. 口令匹配校验:如果调用的文件名是crackmeplease.exe,则调用strcmp判断输入是否为I know the secret,如果不是则输出Pardon? What did you say?

  4. 成功输出:如果输入是I know the secret,则输出正确语句

image
image

步骤3:结果验证

执行以下命令:

copy crackme2.exe crackmeplease.exe
crackmeplease.exe "I know the secret"

image

程序输出:We have a little secret: Chocolate,验证成功。


任务三:RaDa恶意代码样本深度分析

3.1 二进制文件摘要与识别信息

文件MD5哈希值

执行以下命令获取样本文件的MD5摘要值:

md5sum RaDa.exe

image

MD5摘要值: caaa6985a43225a0b3add54f44a0d4c7

该值为样本的唯一哈希标识,可用于同一样本的识别与匹配。

动态行为分析

双击运行脱壳后的RaDa_unpacked.exe文件,打开监视工具Process Explorer监听RaDa_unpacked.exe,选中该进程,右键点击Properties→Strings查看监听到的字符串信息。

image
image
image

根据图中信息可知:

  1. 该程序先访问了http://10.10.10.10/RaDa,请求了RaDa_commands.html页面,进行下载和上传操作
  2. 检查是否在VMware虚拟机环境下,发现不是后开始进行DDoS Smurf攻击
  3. 修改注册表,通过Wscript.Shell进行操作,将RaDa.exe设为开机自动启动
  4. 攻击了192.168、172.16、10三个内网网段
  5. 该程序的所有者为Raul Siles & David Perez,于2004年9月编写

基础识别信息汇总:

属性
文件类型 32位Windows GUI PE可执行文件
加壳类型 UPX 0.89.6 - 1.02 / 1.05 - 2.90
原始入口点 0000FD20
文件偏移 00004120
运行平台 Windows 2000/XP等32位Windows操作系统
MD5值 caaa6985a43225a0b3add54f44a0d4c7

3.2 二进制文件的核心目的

RaDa恶意代码是一款远程控制后门/僵尸网络客户端程序,核心目的如下:

  1. C&C通信:与C&C服务器http://10.10.10.10/RaDa建立网络连接,请求RaDa_commands.html指令文件,接收并执行攻击者下发的远程指令
    image

  2. 持久化驻留:在受感染主机中创建C:\RaDa\binC:\RaDa\tmp目录,将自身复制到系统目录,通过修改注册表实现开机自启动
    image

  3. 远程指令执行:执行远程指令,包括文件上传/下载、屏幕截图、系统休眠、远程命令执行等操作
    image

  4. DDoS攻击:对内网192.168.0.0/16、172.16.0.0/12、10.0.0.0/8三个私有网段进行扫描,并发起DDoS Smurf拒绝服务攻击
    image

3.3 二进制文件的核心特性

特性 描述
文件下载 将文件下载到C盘指定目录(C:\RaDa\bin和C:\RaDa\tmp)
DoS攻击 实施DDoS Smurf攻击,针对三个内网网段
持久化 将RaDa.exe设为开机自动启动
反虚拟机 检测VMware虚拟机环境,避免在虚拟机中运行
远程控制 通过HTTP协议与C&C服务器通信,接收远程指令

3.4 反逆向工程技术分析

样本主要采用UPX压缩壳作为核心反逆向技术:

  1. 静态分析阻碍:UPX壳通过对原始PE文件的代码段、数据段进行压缩加密,使直接字符串提取、反汇编操作只能得到乱码数据

  2. 动态分析难度:加壳后的程序在运行时先执行壳代码,对原始程序进行内存解密还原,再跳转到原始入口点执行,增加了动态调试、内存转储的难度

  3. 脱壳可行性:该样本使用的UPX壳为通用版本,可通过超级巡警、UPX官方工具完成自动脱壳,未采用定制化壳或反调试、反脱壳增强技术

3.5 恶意代码分类与判定理由

该样本应被分类为远程控制后门(Backdoor)/僵尸程序(Bot),具体判定理由如下:

不属于病毒:

  • 病毒的核心特征是自我复制、感染其他文件/系统
  • 该样本无自主感染、自我复制传播的模块

不属于蠕虫:

  • 蠕虫的核心特征是利用系统漏洞主动传播,无需人为干预
  • 该样本无主动传播、漏洞利用传播的功能

不属于木马:

  • 木马的核心特征是伪装成合法程序诱骗用户执行
  • 该样本未进行伪装,核心能力是远程控制与指令执行

符合后门/僵尸程序特征:

  • 具备完整的C&C通信、远程指令执行、持久化驻留能力
  • 攻击者可通过C&C服务器一对多控制大量受感染主机
  • 完全符合僵尸网络客户端(Bot)的核心特征

3.6 同类功能的恶意工具

与该样本功能相似的常见恶意工具包括:

工具名称 相似功能
Bobax木马 具备HTTP协议C&C通信、远程控制、DDoS攻击能力
Setiri特洛伊木马 支持注册表持久化、远程文件操作、系统信息窃取
GatSla僵尸程序 基于HTTP协议的僵尸网络客户端,支持内网扫描、DDoS攻击、远程指令执行

3.7 作者溯源分析

可明确溯源到样本作者为Raul Siles与David Perez,该样本为2004年9月Honeynet组织Scan of The Month 32挑战赛的相关样本。

作者信息获取方法:

  1. 命令行方法:执行RaDa --authorsRaDa.exe --authors
  2. 反编译方法:反编译脱壳后的文件RaDa_unpacked.exe
  3. 动态监听方法:使用Process Explorer进行监听

任务四:僵尸网络流量分析

本任务基于botnet_pcap_file.dat流量包(蜜罐主机172.16.134.191的5天网络流量),完成IRC协议基础、僵尸网络概念、通信服务器识别、接入主机统计、攻击IP识别、漏洞利用分析及成功攻击判定等问题的分析。

4.1 流量文件准备

在学习通下载botnet_pcap_file.dat文件,传入Kali虚拟机中。

右键点击botnet_pcap_file.dat文件,选择使用Wireshark打开进行分析。

4.2 IRC协议基础问题解答

IRC是什么?

IRC(Internet Relay Chat,互联网中继聊天)是一种基于TCP/IP协议的实时文本通信协议,支持用户在频道(Channel)中进行群组聊天,也支持用户间一对一私密消息,是早期互联网最主流的即时通信协议之一。

IRC客户端加入网络时发送的消息

客户端申请加入IRC网络时,需按顺序发送以下核心消息:

PASS <password>          // 可选,向服务器传递连接密码
NICK <nickname>          // 必选,设置客户端在IRC网络中的唯一昵称
USER <username> <hostname> <servername> <realname>  // 必选,完成用户信息注册
JOIN <#频道名>           // 可选,加入指定IRC频道,接收攻击指令

IRC常用TCP端口

  • 6667端口:IRC协议标准明文通信端口,是最常用的默认端口
  • 6697端口:IRC协议基于TLS/SSL的加密通信端口
  • 其他端口:6660-6669、7000-7001端口段也常被IRC服务使用

4.3 僵尸网络基础概念

僵尸网络是什么?

僵尸网络(Botnet)是由攻击者(Botmaster)通过恶意软件感染大量主机,形成的一对多命令与控制(C&C)网络。被感染的主机称为"僵尸主机(Bot)",在用户无感知的情况下受控于攻击者,攻击者可通过C&C信道向所有僵尸主机批量下发指令,执行大规模恶意行为。

僵尸网络的常见用途:

用途 描述
分布式拒绝服务攻击(DDoS) 控制大量僵尸主机向目标服务器/网站发起流量攻击,耗尽目标带宽与系统资源
垃圾邮件发送 利用僵尸主机批量发送垃圾邮件、诈骗邮件、恶意软件传播邮件
加密货币挖矿 占用僵尸主机的CPU/GPU资源进行加密货币挖矿
数据窃取与间谍活动 窃取僵尸主机中的敏感信息,包括账号密码、银行卡信息、商业机密等
恶意软件传播 作为恶意软件的分发平台,批量传播勒索软件、木马、挖矿程序
欺诈与滥用 在线投票欺诈、广告点击欺诈、账号暴力破解、验证码绕过等

4.4 蜜罐主机通信的IRC服务器识别

蜜罐主机IP为172.16.134.191,IRC协议默认使用6667端口。

通过Wireshark过滤规则筛选蜜罐主机主动发起的IRC通信流量:

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

image

最终识别到5个IRC服务器IP地址

序号 IRC服务器IP地址
1 209.126.161.29
2 66.33.65.58
3 63.241.174.144
4 217.199.175.10
5 209.196.44.172

4.5 僵尸网络接入主机数量统计

本问题需统计访问209.196.44.172为服务器的僵尸网络的不同主机数量。

步骤1:工具安装

在Kali Linux中执行以下命令安装tcpflow流量分流工具:

sudo apt-get install tcpflow

image

步骤2:流量分流

执行以下命令提取该IRC服务器与蜜罐主机的全量通信流量:

cd /home/kali/Desktop
tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"

image

生成两个核心流量文件:

  • 172.016.134.191.01152-209.196.044.172.06667
  • 209.196.044.172.06667-172.016.134.191.01152

步骤3:主机数统计

执行以下命令从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

image

最终结果: 命令执行输出结果为3461,即在观察期间,共有3461台不同的主机接入了以209.196.44.172为服务器的僵尸网络IRC频道。

4.6 攻击蜜罐主机的IP地址识别

统计原理: 所有向蜜罐主机172.16.134.191发起流量的源IP,均为潜在攻击IP。

执行以下命令提取流量中的源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 > IP.txt
wc -l IP.txt

image

统计结果: 命令执行输出结果为165,即共有165个IP地址向蜜罐主机发起了网络访问与攻击行为。
image

具体IP地址列表可查看生成的IP.txt文件,包括12.252.61.161、12.253.142.87、129.116.182.239、195.36.247.77等165个地址。

4.7 攻击者尝试利用的安全漏洞分析

首先通过tcpdump筛选蜜罐主机响应的端口,确定攻击者的攻击目标端口,再通过Wireshark深度分析每个端口的攻击行为与漏洞利用尝试。

攻击目标端口识别

执行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

输出结果: 135、139、25、445、4899、80,共6个TCP端口。

执行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

输出结果: 137,共1个UDP端口。

各端口的漏洞利用尝试分析

端口 协议 服务 攻击者尝试利用的漏洞与攻击行为
80 TCP HTTP/IIS 5.0 1. 针对Windows IIS 5.0的红色代码(Code Red)蠕虫漏洞,通过GET /default.ida发起攻击
2. 针对IIS ISAPI扩展的缓冲区溢出漏洞,通过GET /NULL.IDA?CCCCCCCC...大量填充字符,尝试栈溢出攻击
3. 尝试Web目录扫描、HTTP头部注入等基础Web攻击
445 TCP SMB/CIFS 1. 针对Windows SMB服务的远程代码执行漏洞,通过SMB协议进行NTLM身份认证,获取ADMIN$管理员共享权限
2. 尝试上传并执行PSEXESVC.EXE蠕虫程序,利用PsExec工具的远程执行机制
3. 针对Windows SMB服务的DCERPC接口漏洞,尝试远程服务管理与权限提升

在Wireshark中输入tcp.port == 445进行筛选。

image

在筛选后的数据包中发现了可执行文件PSEXESVC.EXE(NO.33280),查阅资料可知这是一种蠕虫病毒的特征码。

端口 协议 服务 攻击者尝试利用的漏洞与攻击行为
135 TCP RPC 针对Windows RPC服务的DCOM远程缓冲区溢出漏洞(MS03-026、MS04-012),攻击者尝试通过TCP 135端口发起RPC接口漏洞探测与溢出攻击

在Wireshark中输入tcp.port == 135进行筛选。

image

在筛选后的数据包中只有一些TCP三次握手过程的数据包,没有数据的交互。

端口 协议 服务 攻击者尝试利用的漏洞与攻击行为
139 TCP NetBIOS/SMB 针对Windows NetBIOS会话服务的SMB空会话攻击、共享枚举攻击,攻击者尝试建立NetBIOS会话,枚举目标主机的SMB共享资源

在Wireshark中输入tcp.port == 139进行筛选。

image

在筛选后的数据包中有许多TCP、SMB和NBSS类型的数据包,但没有关于攻击或漏洞的信息。

端口 协议 服务 攻击者尝试利用的漏洞与攻击行为
137 UDP NetBIOS名称服务 针对NetBIOS名称服务的主机信息枚举、NBNS欺骗攻击,攻击者通过NBNS名称查询请求,获取蜜罐主机的主机名、MAC地址、工作组等系统信息

在Wireshark中输入udp.port == 137进行筛选。

image

端口 协议 服务 攻击者尝试利用的漏洞与攻击行为
25 TCP SMTP 针对邮件服务的SMTP中继漏洞、用户枚举攻击,攻击者尝试连接SMTP服务,探测开放中继、弱口令、命令注入等漏洞

在Wireshark中输入tcp.port == 25进行筛选。

image

在筛选后的数据包中只有一些TCP三次握手过程的数据包,没有数据的交互。

端口 协议 服务 攻击者尝试利用的漏洞与攻击行为
4899 TCP Radmin远程管理 针对Radmin远程管理软件的弱口令暴力破解、认证绕过漏洞,攻击者尝试建立Radmin连接,探测目标主机是否开启该远程管理服务

在Wireshark中输入tcp.port == 4899进行筛选。

image

4.8 成功攻击行为判定与原理分析

成功攻击判定结果: 在所有攻击尝试中,仅针对TCP 445端口的SMB服务攻击成功,攻击者通过PSEXESVC蠕虫实现了对蜜罐主机的远程控制,其他端口的攻击均未成功。

其他端口攻击失败的原因:

  • 135、139、25、4899端口:攻击者仅完成了TCP三次握手,后续无有效漏洞利用载荷,或在会话建立后被目标主机直接RST重置连接,未完成权限获取与代码执行

  • 80端口:攻击者发起的缓冲区溢出攻击、红色代码蠕虫攻击,仅发送了攻击载荷,目标主机无对应的漏洞利用响应

    在筛选后的数据包中发现有一数据包中含有CCCCCCCC...填充数据,这是攻击者在尝试缓冲区溢出攻击,但没有后续。

image
image

  • UDP 137端口:仅完成了NetBIOS主机信息枚举,无后续权限获取行为,不属于成功的入侵攻击

445端口攻击成功的原理与过程:

在Wireshark中筛选tcp.port == 445 && ip.addr==172.16.134.191,发现攻击者拿到权限。

image
image

攻击过程详解:

  1. SMB会话建立:攻击者与蜜罐主机445端口建立TCP连接,通过SMB协议完成协商、NTLM身份认证,成功获取了蜜罐主机的本地管理员Administrator权限

  2. 管理员共享访问:攻击者通过SMB协议成功连接蜜罐主机的ADMIN$系统共享(对应Windows系统目录),获得了文件读写权限

  3. 恶意程序上传:攻击者通过SMB的NT Create AndX请求,在目标主机System32目录下创建PSEXESVC.EXE文件,并通过Write AndX请求将蠕虫程序完整写入目标主机

  4. 远程服务执行:攻击者通过DCERPC/SVCCTL协议,在目标主机上远程创建并启动PSEXESVC服务,该服务运行后,攻击者获得了蜜罐主机的交互式远程控制权限

  5. 持久化控制:PSEXESVC服务运行后,攻击者可通过该服务执行任意系统命令、上传后续恶意工具、将蜜罐主机加入僵尸网络,完成完整的攻击链


三、学习中遇到的问题及解决方法

问题:无法准确判定哪个端口的攻击成功

原因: 流量包中包含多个端口的攻击尝试,需要逐个分析才能判定攻击是否成功。

解决方法: 通过Wireshark逐端口筛选流量,重点查找是否存在漏洞利用成功的特征(如文件上传、会话建立、命令执行等),最终确认仅445端口的SMB攻击成功。


四、实践总结

本次实验围绕恶意代码分析与僵尸网络流量分析两大核心主题,完成了从恶意代码静态/动态分析、程序逆向工程,到网络流量深度解析、攻击行为识别的全流程实践。

在恶意代码分析环节,我掌握了PE文件识别、加壳检测、脱壳处理、字符串提取等静态分析基础技能,也学会了使用IDA Pro对二进制程序进行逆向分析,通过反汇编代码还原程序的核心逻辑。对RaDa恶意代码的深度分析,让我理解了恶意代码的持久化、C&C通信、反虚拟机等核心特性,也认识到了恶意代码从代码编写到入侵执行的完整设计逻辑。

在僵尸网络流量分析环节,我掌握了tcpdump、tcpflow、Wireshark三大流量分析工具的使用,学会了从海量流量中筛选关键通信、识别IRC僵尸网络C&C信道、统计攻击源IP、还原漏洞利用攻击链。通过对蜜罐主机流量的逐端口分析,我深入理解了Windows平台常见的高危端口与对应漏洞,也掌握了从流量层面还原攻击行为、判定攻击是否成功的核心方法。

本次实验也让我认识到,恶意代码分析与网络取证是网络攻防实践中的重要技能,需要综合运用多种工具和技术手段,从静态分析到动态监控,从代码层面到网络层面,形成完整的分析能力。后续我会继续深入学习恶意代码分析、逆向工程、网络取证等相关知识,通过更多的实践操作,提升自己的网络攻防与安全分析能力。


参考资料

posted @ 2026-04-27 19:55  行走的yu  阅读(77)  评论(0)    收藏  举报