20252910 2025-2026-2《网络攻防实践》第8次作业

20252910 2025-2026-2《网络攻防实践》第8次作业

1、实验内容

  • 动手实践任务一

对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:

(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?

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

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

  • 分析实践任务一:

分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:

1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;

2、找出并解释这个二进制文件的目的;

3、识别并说明这个二进制文件所具有的不同特性;

4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;

5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;

6、给出过去已有的具有相似功能的其他工具;

7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?

  • 分析实践任务二:

Windows 2000系统被攻破并加入僵尸网络

任务:分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。回答下列问题:

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

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

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

4、在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?

5、那些IP地址被用于攻击蜜罐主机?

6、攻击者尝试攻击了那些安全漏洞?

7、那些攻击成功了?是如何成功的?

2、实验过程

2.1 动手实践一:RaDa恶意代码样本基础分析

问题(1):文件格式、运行平台和加壳工具识别

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

将所用到的文件从网络驱动器移动到桌面上

image-20260506160418294

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

file RaDa.exe

image-20260506160439529

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

可知该样本是一个可执行文件,采用 PE32 格式,适用于 Intel 80386 架构的处理器,并且是用于 MS Windows 操作系统的图形用户界面 (GUI) 程序,它被分成了3个部分。 PE32 是指 Portable Executable 32-bit 的缩写,它是 Windows 系统上可执行文件的标准格式之一。

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

image-20260506161139425

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

问题(2):脱壳处理

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

image-20260506161430365

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

strings RaDa_unpacked.exe

image-20260506161540380

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

问题(3):字符串提取与作者信息获取

IDA Pro逆向验证

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

image-20260506163037992

最终结论: RaDa恶意代码的编写作者为Raul Siles与David Perez,编写时间为2004年9月。

2.2动手实践二:Crackme程序逆向分析

(1):Crackme1.exe程序分析

基础试探

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

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

image-20260506164052250

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

静态逆向分析

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

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

image-20260506164651278

汇编逻辑验证

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

image-20260506165229462

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

image-20260506165802372

该函数的核心逻辑如下:

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

结果验证

在命令行执行以下命令:

crackme1.exe "I know the secret"

image-20260506165928403

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

(2):Crackme2.exe程序分析

基础试探

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

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

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

静态逆向分析

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

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

image-20260506222029388

  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-20260506222124848

结果验证

执行以下命令:

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

image-20260506222239053

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

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

打开自带的Process Explorer软件,用于监听脱壳后的RaDa_unpacked.exe,选中该进程,右键点击Properties→Strings查看监听到的字符串信息。

image-20260506223742429

image-20260506223759374

image-20260506223915178

根据图中信息可知:

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

回答以下问题:

1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;

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

md5sum RaDa.exe

MD5摘要值:caaa6985a43225a0b3add54f44a0d4c7

image-20260506223001387

2、找出并解释这个二进制文件的目的;

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

image-20260506224115392

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

image-20260506224214323

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

image-20260506224250037

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

image-20260506224250037

3、识别并说明这个二进制文件所具有的不同特性;

该二进制文件具备本地指定目录落地、对内网三网段发起Smurf DDoS攻击、设置开机自启持久化、检测规避VMware虚拟机环境、通过HTTP与C&C服务器通信接受远程控制的恶意特性。

4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;

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

5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;

该样本无病毒自我复制、蠕虫漏洞主动传播及木马伪装诱骗的特征,具备 C&C 通信、远程指令执行、持久化驻留且可被批量管控,应归类为远程控制后门 / 僵尸程序。

6、给出过去已有的具有相似功能的其他工具;

setiri、GatSla僵尸程序、Gafgyt、ZeroAccess

7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?

可明确溯源到样本作者为Raul Siles与David Perez

作者信息获取方法:

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

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

分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。回答下列问题:

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

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

客户端申请加入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服务使用

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

僵尸网络是攻击者通过恶意软件感染大量主机,构建一对多 C&C 控制网络,受控主机(僵尸)在用户无感知下被批量操控

僵尸网络常见用途:

  • DDoS 攻击:控制海量僵尸主机集中流量,耗尽目标带宽与资源致其瘫痪。
  • 垃圾邮件发送:利用僵尸主机集群批量发送垃圾、诈骗及恶意软件传播邮件。
  • 加密货币挖矿:占用僵尸主机硬件资源,后台秘密挖掘加密货币牟利。
  • 数据窃取与间谍活动:秘密窃取主机内账号密码、银行卡及商业机密等敏感信息。
  • 恶意软件传播:作为分发通道,批量推送勒索软件、木马、挖矿程序等恶意软件。
  • 欺诈与滥用:实施刷票、广告刷量、账号暴力破解、验证码绕过等恶意操作。

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

学习通下载botnet_pcap_file.dat文件并用wireshark打开,设置过滤条件:蜜罐主机IP为172.16.134.191,IRC协议默认使用6667端口。通过Wireshark过滤规则筛选蜜罐主机主动发起的IRC通信流量

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

image-20260506231247419

输入过滤条件:

ip.src == 172.16.134.191 and tcp.dstport == 6667 and tcp.flags.syn==1

image-20260506231326743

66.33.65.58(主 IRC 服务器,9 次通信)

209.126.161.29(备用 IRC 服务器,9 次通信)

63.241.174.144(单次通信)

217.199.175.10(单次通信)

209.196.44.172(单次通信)

结合端口 6667(IRC 常用端口)的过滤条件,前两个 IP 是明确的 IRC 服务器;后三个 IP 各仅有 1 次通信,属于低流量交互对象。

4、在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?

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

sudo apt-get install tcpflow

image-20260506231841682

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

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

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

这条命令从 IRC 流量日志中,提取 IRC 服务器返回的在线用户列表,去重后统计出当前频道内的僵尸主机总数量

它是典型的僵尸网络(Botnet)分析命令,用于统计一个 IRC 控制频道里有多少台被控制的机器。

sudo cat:以管理员权限读取 IRC 流量日志文件内容

grep -a:筛选出包含 IRC 用户列表的 353 响应消息

sed:删除 IRC 协议头,仅保留用户昵称数据

tr ' ' '\n':将空格替换为换行,使每个用户单独成行

tr -d "\15":删除无效的 Windows 换行符,规范格式

grep -v "^$":过滤掉文本中的空白空行

sort -u:对用户列表排序并去除重复昵称

wc -l:统计去重后的唯一用户总数量

image-20260506232208304

5、那些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

tcpdump -n -nn -r:读取数据包文件,不解析地址和端口,以数字格式显示流量信息

dst host 172.16.134.191:筛选所有发往目标主机 172.16.134.191 的网络流量

awk -F " " '{print $3}':按空格分割流量数据,提取出源 IP 地址所在字段

cut -d '.' -f 1-4:按点分割并保留完整的 IPv4 地址格式,去除端口信息

sort:对提取出的所有 IP 地址进行排序,方便后续去重

uniq:去除排序后重复的 IP 地址,只保留唯一的 IP

more > IP.txt:将结果分页并保存到 IP.txt 文件中

wc -l IP.txt:统计 IP.txt 文件里的行数,即唯一通信 IP 的总数量

image-20260506232539663
输出165表示共有165个IP被用于攻击蜜罐主机,打开IP.txt,查看信息:

image-20260506232553926

6、攻击者尝试攻击了那些安全漏洞?

使用以下命令,利用tcpflow工具进行筛选,筛选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-20260506233003125

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

使用以下命令,利用tcpflow工具进行筛选,筛选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-20260506233018710

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

根据豆包:

以上TCP端口可能收到以下攻击
135/TCP(RPC 端点映射)
主要攻击:RPC 漏洞利用(如 MS03-026、MS05-039)、远程代码执行(RCE)、横向移动、暴力破解 RPC 服务、DCOM 攻击。
139/TCP(NetBIOS 会话服务)
主要攻击:SMBv1 漏洞(永恒之蓝 MS17-010)、NetBIOS 枚举(共享 / 用户探查)、弱口令共享爆破、NBT-NS 投毒(中间人)、蠕虫传播(如 Conficker)。
25/TCP(SMTP 邮件服务)
主要攻击:垃圾邮件 / 钓鱼邮件发送、SMTP 中继滥用、邮件协议漏洞利用(RCE / 提权)、暴力破解邮箱账号、邮件内容注入 / 伪造。
445/TCP(SMB 文件共享)
主要攻击:永恒之蓝(MS17-010)RCE / 勒索软件、SMB 共享弱口令爆破、共享文件窃取 / 篡改、SMB 漏洞利用(MS08-067)、蠕虫 / 挖矿机传播、哈希传递(PtT)横向移动。
4899/TCP(Radmin 远程控制)
主要攻击:Radmin 弱口令 / 空密码爆破、Radmin 漏洞 RCE(如 CVE-2021-44228 相关)、未授权访问接管桌面、植入后门 / 远控木马、暴力破解后窃取数据。
80/TCP(HTTP 网站服务)
主要攻击:SQL 注入、XSS 跨站脚本、Web 漏洞利用(如 Log4j、FastJSON)、目录遍历 / 文件泄露、弱口令后台爆破、WebShell 上传 / 植入、DDoS CC 攻击、挂马 / 钓鱼页面植入。

在Wireshark中输入ip.addr == 172.16.134.191 && tcp.port ==445进行筛选。

image-20260506233652623

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

在Wireshark中输入ip.addr == 172.16.134.191 && tcp.port ==135进行筛选。

image-20260506233957473

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

在Wireshark中输入ip.addr == 172.16.134.191 && tcp.port ==139进行筛选。

image-20260506234040877

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

在Wireshark中输入ip.addr == 172.16.134.191 &&udp.port == 137进行筛选。

image-20260506234134674

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

在Wireshark中输入ip.addr == 172.16.134.191 &&tcp.port == 25进行筛选。

image-20260506234210653

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

在Wireshark中输入ip.addr == 172.16.134.191 &&tcp.port == 4899进行筛选。

image-20260506234244018

在Wireshark中输入ip.addr == 172.16.134.191 && tcp.port ==80进行筛选。

image-20260506234414246

image-20260506234634581

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

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

7、那些攻击成功了?是如何成功的?

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

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

  • 135、139、25、4899端口:攻击者仅完成了TCP三次握手,后续无有效漏洞利用载荷,或在会话建立后被目标主机直接RST重置连接,未完成权限获取与代码执行
  • 80端口:攻击者发起的缓冲区溢出攻击、红色代码蠕虫攻击,仅发送了攻击载荷,目标主机无对应的漏洞利用响应。在筛选后的数据包中发现有一数据包中含有CCCCCCCC...填充数据,这是攻击者在尝试缓冲区溢出攻击,但没有后续。
  • UDP 137端口:仅完成了NetBIOS主机信息枚举,无后续权限获取行为,不属于成功的入侵攻击

如何成功的:

综上分析可知,这些攻击是通过向对TCP445端口发送含有PSEXESVC.EXE的数据包,且将PSEXESVC.EXE地址改到系统目录下攻击成功的。攻击者逐步拿下权限,先是admin,再是administrator:

image-20260506235245396

image-20260506235212186

3、实验中遇到的问题

不会系统性的分析,哪些端口的攻击成功了,哪些没成功。

解决方法:判断端口攻击成败,先看 “有没有攻击行为”,再看 “端口怎么响应”,最后看 “有没有后续恶意交互”;成功的攻击是 “能建立连接 + 有异常行为”,失败的攻击是 “连端口都突破不了”,用 Wireshark 就能快速验证。

4、学习感悟与思考

本次实践覆盖了恶意代码分析与网络攻击溯源的核心内容,通过动手操作与理论分析,基本达成了实践目标,掌握了相关的工具使用与分析方法。同时,也认识到自身在技术深度与实践能力上的不足。后续将针对性弥补短板,加强复杂场景下的恶意代码分析与网络安全事件排查实践,提升自身的网络安全分析能力,为应对各类网络安全威胁奠定基础。

posted @ 2026-05-07 10:33  lLct  阅读(20)  评论(0)    收藏  举报