20252905 2025-2026-2 《网络攻防实践》第八周作业
20252905 2025-2026-2 《网络攻防实践》第八周作业
实践内容
动手实践任务一
对提供的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、那些攻击成功了?是如何成功的?
1.知识点梳理与总结
| 实验模块 | 核心任务 | 使用工具/命令 | 关键知识点 | 预期结果/答案方向 |
|---|---|---|---|---|
| rada恶意代码分析 | 文件类型识别 | file、PEiD、Exeinfo PE |
PE文件格式、加壳识别(UPX等) | PE32 executable (GUI) for Windows, 加壳: UPX |
| 脱壳处理 | 超级巡警脱壳机、UPX命令行 | 脱壳原理、代码段还原 | 成功脱壳,生成无保护的可执行文件 | |
| 字符串提取与分析 | strings、IDA Pro、BinText |
静态分析、字符串特征提取 | 发现作者名、邮箱、PDB路径等线索 | |
| Crackme逆向 | 静态分析 | IDA Pro | 识别关键字符串、cmp/je指令 |
定位密码验证逻辑 |
| 动态调试 | OllyDbg、x64dbg | 断点设置、标志位/寄存器修改 | 绕过验证,获得成功输出 | |
| 僵尸网络分析 | IRC基础概念 | — | IRC协议、NICK/USER命令、端口666x |
IRC是聊天协议;常用端口6660-6669 |
| 僵尸网络概念 | — | Botnet定义、用途 | 受控主机网络;用于DDoS、垃圾邮件等 | |
| 流量分析 | Wireshark、Snort | ip.src/ip.dst过滤、端口过滤 |
识别IRC服务器IP、攻击源IP、漏洞类型 | |
| 综合总结 | 实验收获 | — | 静态分析、动态调试、网络取证 | 掌握恶意代码分析、逆向工程和网络攻击溯源能力 |
2.实验过程
任务1:动手实践任务一
(1)将学习通下载的RaDa.exe文件移动至虚拟机中(问题1),输入cmd,在窗口中可查看到RaDa.exe是一个适用于32位Windows操作系统的PE32可执行程序,设计用于具有图形用户界面的Intel 80386兼容处理器。

(2)输入命令strings RaDa.exe查看字符串,发现存在乱码现象,大概率是加壳导致。

(3)打开PEid对恶意代码查壳,观察到看到文件的入口点为0000FD20、文件偏移为00004120、EP段为JDR1,加壳类型为UPX壳。

(4)使用超级巡警虚拟机脱壳器对恶意代码脱壳,获得RaDa_unpacked.exe:

(5)在cmd窗口中打开RaDa_unpacked.exe,可查看到正确信息

(6)打开IDA Pro Free,选择脱壳后的文件rada_unpacked.exe,可查看到详细信息,可查看到作者为"Raul Siles & David Perez(这里打开文件后,按alt+T输入David可以完成快速检索功能)


阶段总结:本阶段完成了一个恶意代码逆向分析流程,先分析目标文件是什么类型的文件,strings分析文件发现文件加壳,通过PEid识别出使用UPX加壳,接下来进行脱壳处理,并再次使用strings进行验证过,通过ida反汇编器发现作者信息。
任务2:动手实践任务二
(1)查看crackme1.exe和crackme2.exe的文件类型,发现这两个文件都是32位windows下PE文件。

(2) 为了验证两个文件的完整性,计算他们 md5 值。指令:md5sum+file

(3)打开IDA对crackme1.exe进行分析,在strings中可见上述的返回信息:

(4)选择view->graphs->function calls,打开函数调用架构图,注意到了一个关键函数sub_401280,在sub_401280中,程序使用strcmp函数来比较输入的参数。strcmp是标准的字符串比较函数,这表明程序可能在此检查用户输入的口令是否与预设的口令匹配。随后,根据比较的结果,程序利用print和fprint函数输出相应的信息给用户。(这里在上方菜单栏view-graph-flowCharts)
这样的分析结果支持了之前的推测,即"I know the secret"很可能是正确的口令,而"You know how to speak to programs, Mr. Reverse-Engineer"则是输入正确口令后程序给出的反馈。

(5)在functions中打开sub_401280查看其代码:

(6)猜测正确的口令应该是"I know the secret",输入命令运行改口令,可以得到这样一条回复"You know how to speak to programs,Mr.Reverse-Engineer"。

(7)在运行窗口中输入“I know the secret”,猜想正确

(8)分析crackme2与分析crackme1过程类似;打开Function call函数调用图,观察到关键的部分在sub_401280这里。

(9)sub_401280内容与上一个文件基本一致,大致可以判断出关键口令为I know the secret,只是从下图可以看到,代码逻辑中的程序名称改变了,变成了:crackmelpease.exe。因此需要对程序名称进行修改。输入指令后得到正确结果

任务3:分析实践任务一:
(1)输入命令md5sum RaDa.exe获取其md5值caaa6985a43225a0b3add54f44a0d4c7。接着,通过运行file RaDa.exe命令,确定该文件是一个针对32位操作系统带有图形用户界面(GUI)的可执行文件。

(2)启动破壳后的恶意软件RADA_unpacked并用process explorer软件进行监测。

(3)双击此程序,观察其执行的字符串信息:这个恶意程序采用了HTTP协议去连入IP地址为10.10.10.10的服务器上托管的RaDa网页。在受害的计算机上,它创建了一个目录路径C:\RaDa\tmp用来存放从服务器下载的文件。此外,该恶意程序还执行了分布式拒绝服务(DDoS)攻击,并且将RaDa.exe文件复制到了C:\RaDa\bin目录下,以便于可能的进一步操作或攻击活动。发现该恶意程序对主机注册表进行了读写和删除操作。其次,该程序还进行了DDos攻击,对注册表进行读写删除等操作;同时该程序还在主机进行了下载、上传、截图、休眠等操作。

(4)分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
| 项目 | 信息 |
|---|---|
| 文件名 | RaDa.exe |
| 文件类型 | PE32 executable (GUI) Intel 80386, for MS Windows |
| 运行平台 | 32位 Windows 操作系统 |
| 加壳工具 | UPX (Ultimate Packer for Executables) |
| 编译器/语言 | Microsoft Visual Basic 6.0 (依赖 MSVBVM60.DLL) |
| 文件大小 | 约 98KB(脱壳后更大) |
| MD5 | 可通过 md5sum RaDa.exe 计算获取 |
| 作者信息 | Raul Siles & David Perez |
| 创作背景 | Honeynet Project "Scan Of The Month 32" (2004年9月) |
2、找出并解释这个二进制文件的目的;
这是一个远程控制木马/后门程序(RAT),用于远程控制被感染的主机。
3、识别并说明这个二进制文件所具有的不同特性;
| 特性 | 说明 | 证据 |
|---|---|---|
| VB6实现 | 使用Visual Basic 6编写,依赖VB运行时库 | MSVBVM60.DLL, __vba* 函数 |
| HTTP通信 | 使用HTTP协议与C2服务器通信 | http://10.10.10.10/RaDa, cgi-bin |
| 硬编码C2地址 | C2服务器地址硬编码在文件中 | http://10.10.10.10/RaDa |
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
| 技术 | 说明 | 证据 |
|---|---|---|
| UPX加壳 | 使用UPX压缩壳保护,隐藏真实代码和字符串 | PEid查壳结果、脱壳前后字符串对比 |
| 字符串混淆 | 部分字符串在加壳状态下显示为乱码 | 实验中使用strings RaDa.exe输出乱码 |
| 注释声明 | 作者明确声明了其安全哲学 | Security through obscurity is the key. (安全通过隐藏实现) |
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
分类:木马(Trojan)/ 远程访问木马(RAT)
a不自我复制 没有发现蠕虫的自我传播机制(如通过邮件、网络共享复制)
b需要用户执行 需要受害者主动运行或通过其他方式诱导执行
c远程控制 主动连接C2服务器,接受攻击者指令
d隐蔽驻留 通过注册表实现开机自启动,属于典型木马行为
6、给出过去已有的具有相似功能的其他工具;
| 工具名称 | 类型 | 相似功能 |
|---|---|---|
| Poison Ivy (IVY) | RAT | 远程控制、文件管理、屏幕截取 |
| Gh0st RAT | RAT | 远程控制、屏幕监控、文件传输 |
| SubSeven | 木马 | 后门控制、键盘记录、端口扫描 |
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
问题 答案
作者是谁? Raul Siles & David Perez
在哪里发现? 脱壳后文件的字符串中、版权声明中
具体位置 Copyright (C) 2004 Raul Siles & David Perez
Authors: Raul Siles & David Perez, 2004
相关项目 Scan Of The Month 32 (SotM) - September 2004
任务4:分析实践任务二
问题1:IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
答:IRC是因特网中继聊天(Internet Relay Chat)的简称,它允许客户端通过因特网连接到IRC服务器上进行交流。当一个IRC客户端申请加入一个IRC网络时,它会先进行注册,并发送USER、PASS和NICK消息。注册完成后,客户端会使用JOIN信息来加入频道。IRC通常使用TCP端口6667进行明文传输,也会使用6660-6669端口。如果使用SSL加密传输,则会在6697端口监听。
问题2:僵尸网络是什么?僵尸网络通常用于什么?
答:僵尸网络是由攻击者控制的一群计算机组成的网络,这些计算机被用来执行恶意活动,如分布式拒绝服务攻击(DDoS)和发送垃圾邮件。黑客可以通过控制这些计算机来获取存储在其上的信息。
问题3:蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
(1)在kali中使用wireshark打开学习通下载的botnet_pcap_file.dat文件,并通过ip.src == 172.16.134.191 && tcp.port == 6667(由问题一得知端口号)筛选数据包:

答:蜜罐主机与209.126.161.29、66.33.65.58、63.241.174.144、217.199.175.10和209.196.44.172IRC服务器进行了通信。
问题4:在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
(1)安装tcpfollow

(2)输入tcpflow -r Desktop/botnet_pcap_file.dat "host 209.196.44.172 and port 6667"去tcpflow分流筛选指定host与端口6667产生了三个文件,分别是:209.196.044.172.06667-172.016.134.191.01152、172.016.134.191.01152-209.196.044.172.06,667、report.xml

(3)输入
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台主机访问了僵尸网络。

问题5:哪些IP地址被用于攻击蜜罐主机?
(1)蜜罐主机作为诱导主机,进入其流量一般都应当是攻击行为,因此使用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 | more > ip.txt;wc -l ip.txt,通过snort获取所有可能链接的主机ip地址写入ip.txt,执行命令统计。共有165台主机,可打开ip.txt查看具体内容。

ip.txt内容部分

问题6:攻击者尝试攻击了哪些安全漏洞
(1)输入命令 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 筛选出蜜罐主机相应的TCP端口。

可以看到,筛出的TCP端口有:135(rpc)、139(netbios-ssn)、25(smtp)、445(smb)、4899(radmin)、80(http),
(2)将命令协议部分更改为udp,查询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
可以看到,udp端口能查到137(netbios-ns),137端口是NetBIOS查点。

问题7:那些攻击成功了?是如何成功的?
使用wireshark,逐一对筛选出的tcp端口进行排查。
(1)135端口,为tcp协议过程

(2)25端口:和135端口类似,只进行了TCP连接,并没有数据的交互

(3)139端口,出现SMB协议,没有攻击操作

(4)4899端口,还是TCP连接,无攻击操作

(5)137端口 ,有NBNS包,无攻击操作

(6)80端口,可以看到有大量TCP连接,猜测是缓冲区溢出攻击,还发现了蠕虫文件

根据前面的TCP Port numbers reused的TCP端口重用和频繁的rst,ack说明攻击者的自动化脚本频繁发起连接和请求
频繁攻击后出现了一次标准的TCP三次握手,连接通道打开,攻击者发送了HTTP请求,用缓冲区溢出攻击撑爆了服务器端缓冲区,随后用rst中断连接完成共计

(7)445端口,发现名为PSEXESVC.EXE的二进制文件,这个文件被识别为Dv1dr32蠕虫的一部分,这是一种恶意软件,它通过IRC(Internet Relay Chat)网络进行通信和传播。
negotiate说明正在与服务器进行协议沟通,admin$是Windows隐藏的系统管理共享,说明对方拿到了管理员权限,并使用PSEXESVC.EXE可以让攻击者远程执行cmd命令


3.学习中遇到的问题及解决
-问题1:安全性问题

解决方案:由于本机无法支持vmwareTools因此无法直接传递文件,先后尝试了云端互传(版本过老,电子证书失效)插U盘(扫描不到文件),最后通过共享文件夹传输成功,但是winxp没有解压包,因此本机需要先解压并关闭病毒威胁再传输文件,记得重新扫个病毒确保安全。
-问题2:很多内容之前本科学习过wireshark的实验,现在有些忘记,找网课复习了一下,感觉有些许收获,例如感觉每次找漏洞会比较麻烦,学习都按可以直接点击下方的专家信息进行辅助检索

或者直接通过常用攻击手段检索也可以进行发现(查是否被植入后门命令: frame matches "cmd.exe" 或 frame matches "/bin/sh"(如果搜到了,说明黑客大概率已经通过该端口拿到了服务器控制权)。
查 SQL 注入攻击 (针对 Web 端口): http.request.uri matches "select|union|drop"。
查密码爆破 (如针对 FTP/SMB): ftp.response.code == 530 (登录失败) 或者 SMB 中包含大量 STATUS_LOGON_FAILURE 的包。)

解决办法:部分不很明白的内容也通过ai进行辅助学习,红色黄色进行了安全风险分级,大量的rst等警告说明需要重点关注,紧接着进行对应处理
3.学习感悟、思考等
本次实验围绕恶意代码分析、逆向工程与僵尸网络取证三大核心任务展开。在rada恶意代码分析中,通过文件类型识别、脱壳处理与字符串提取,掌握了加壳样本的静态分析方法,成功定位了代码作者线索;在Crackme程序分析中,运用IDA Pro静态分析与动态调试相结合的方式,通过跟踪关键跳转指令和修改程序执行流,找到了能够触发成功输出的特定输入;在僵尸网络数据分析中,利用Wireshark对蜜罐捕获的网络日志进行流量分析,识别了IRC协议通信特征、定位了C2服务器地址、统计了受控主机数量,并还原了攻击者利用安全漏洞(如MS08-067)入侵的全过程。
通过本次实验,系统掌握了恶意代码分析、逆向工程及网络取证的核心技能。具体包括:使用PEiD/file识别加壳类型、利用脱壳工具还原代码、通过strings/IDA提取关键字符串;在动态分析中学会设置断点与修改程序流;在网络流量分析中熟练运用Wireshark过滤条件(如IRC端口、SYN扫描、SMB协议)定位攻击行为。这些实践不仅加深了对恶意代码隐藏技术(加壳、反调试)的理解,也强化了从网络层追溯攻击链的能力,为后续的威胁狩猎与安全应急响应奠定了扎实基础。
参考资料
教学视频
浙公网安备 33010602011771号