20252802 2025-2026-2 《网络攻防实践》实践八报告
20252802 2025-2026-2 《网络攻防实践》实践八报告
1.实践内容
| 任务编号 | 任务名称 | 核心内容 |
|---|---|---|
| 任务一 | 文件格式与类型识别 | 使用 file、PEiD 识别 rada.exe 的文件类型与加壳方式(UPX),完成脱壳,并使用 IDA Pro 提取作者信息。 |
| 任务二 | Crackme 逆向分析 | 对 crackme1.exe 和 crackme2.exe 进行逆向分析,通过 IDA 查看函数调用图与流程图,破解命令行参数验证逻辑。 |
| 任务三 | 恶意代码样本综合分析 | 围绕 rada.exe,从 MD5 摘要、攻击目的、持久化特性、反分析技术、恶意代码分类、同类工具比对、开发作者溯源等维度撰写分析报告。 |
| 任务四 | 僵尸网络流量分析 | 基于蜜罐主机(172.16.134.191)5 天流量数据,分析 IRC 通信(端口 6667)、僵尸网络规模、攻击源 IP、被攻击端口及成功攻击证据。 |
2. 实践过程
2.1 动手实践任务一
(1)文件格式和类型识别
先在本地解压rada.rar,密码:rada; 在虚拟机工具栏中,找到虚拟机这一项,点击安装VMwareTools工具,无他不过多赘述;在虚拟机工具栏中,找到设置这一项,点击后选择选项这一栏,如下图所示,启用共享文件夹,注意右侧的总是启用选项;创建完之后注意检查在之前选择“总是启用”选项之下的”映射为网络驱动器选项”是否勾选!如此,就能在虚拟机中看到刚刚创建的文件夹了。具体位置:桌面-我的电脑-网络驱动器-目标文件夹。
-
首先,将待分析文件放置于命令行(CMD)的当前工作目录或工具路径下。
-
执行命令 file rada.exe 以查看文件元数据信息。
-
分析输出结果可见:Rada.exe 为一个 32 位 Windows 可执行文件,其 PE 头标识符表明该程序为 GUI 图形界面 应用程序。
打开开始菜单,在winxp系统内找到PEiD工具(左下角-开始-所有文件-PE-PEiD_cn.exe),使用该工具可以看到文件的入口点为0000FD20、文件偏移为00004120、EP段为JDR1,加壳类型为UPX壳。
使用超级巡警脱壳机工具对rada.exe进行脱壳处理,看到“脱壳成功”的字样后,会发现在当前目录下生成了rada_unpacked.exe文件:
输入strings RaDa_unpacked.exe,查看脱壳后的rada.exe中可打印的字符串,发现有大量的函数调用名
使用IDA工具打开rada_unpacked.exe文件,在string界面中选择Unicode编码undefined找到Authors:Raul Siles & David Perez,2004,此处信息即编写作者
2.2 动手实践任务二
和任务一一样,先通过映射网络驱动器准备文件。
输入file crackme1.exe和file crackme2.exe;undefined可以判断这两个文件均为windows系统下运行的32-bit可执行程序,是命令行程序,但是与Rada.exe不同,这两个软件没有图形界面。
使用IDA进行分析;
在Strings页面可以看到两个字符串“I know the secret”和“You know how to speak to programs, Mr.Reverse-Engineer”;undefined因此猜测I know the secret是我们需要的口令,You know how to speak to programs, Mr.Reverse-Engineer是口输入令正确时的程序反馈信息;
进入到IDA View界面里,选择view—graphs—function calls;undefined发现包含函数fprintf和printf ,猜测sub_401280即为我们要找的核心函数
在functions,双击选中sub_401280函数,view—graphs——flow chat中打开sub_401280函数的流程图,可以看到入口那里会比较判断输入的参数个数是否为2,若参数个数不为2时输出I think you are missing something,若参数个数为2则会将第二个输入与I know the secret作比较,正确则输出You know how to programs
输入crackme1.exe “I know the secret”验证口令“I know the secret”,得到了程序反馈信息“You know how to speak to programs, Mr.Reverse-Engineer”,验证正确。
同理分析 crackme2.exe
查看Function call,主要查看 sub_401280:
可知如果命令行输入两个参数,则跳转至loc_4012D5;undefined比较第一个参数是否为”crackplease.exe”。undefined是的话,比较是否为第二个参数”I know the secret”;undefined是的话,输出We have a little secret : Chocolate;undefined否则,输出Pardon? What did you say?;undefined否则,输出I have an identity problem.undefined如果命令行输入参数个数不为2,则输出I think you are missing something
2.3 分析实践任务一
分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:undefined1.使用md5sum命令查看摘要信息, md5摘要值为caaa6985a43225a0b3add54f44a0d4c7。
2.找出并解释这个二进制文件的目的;undefined用radaprocess explorer软件监测rada.exe与radaunpacked.exeundefinedundefined
可见脱壳后的通过HTTP协议连接到10.10.10.10主机下RaDa的网页上;undefined该文件下载后门到目标主机,发动DOS攻击,与10.10.10.10主机进行了通信,并查询了Mac地址。
3.识别并说明这个二进制文件所具有的不同特性;undefined该文件会添加注册列表、移动文件位置至C盘,并与10.10.10.10建立相关连接,接收相关指令并执行相关指令。
4.识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;undefined采用了UPX加壳技术,直接对文件进行解析会呈现乱码形式。undefined干扰字符串Starting DDoS Smurf remote attack使分析者误认为是程序执行 DDoS 攻击。
5.对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;undefined首先,由于不具有传播传染属性,所以判断其不是病毒或蠕虫;undefined其次,该程序没有附加在邮件等,所以判断不是木马;undefined攻击者利用该程序远程接收执行命令,判断为后门程序或者僵尸程序。
6.给出过去已有的具有相似功能的其他工具;undefinedBobax、Setiri
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
开发作者:Raul siles和David Perzeundefined开发时间:2004
2.4 分析实践任务二
Windows 2000系统被攻破并加入僵尸网络undefined任务:分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。回答下列问题:
1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?undefinedIRC是Internet Relay Chat 的英文缩写,中文一般称为互联网中继聊天。IRC的工作原理非常简单,只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。IRC明文传输使用的端口6667,偶尔也会使用6660—6669SSL加密。使用的端口6697。
2、僵尸网络是什么?僵尸网络通常用于什么?undefined僵尸网络是一组以协调方式连接的计算机,用于恶意目的。僵尸网络中的每台计算机都称为僵尸网络。这些机器人形成受损计算机网络,由第三方控制并用于传输恶意软件或垃圾邮件或发起攻击。
3、蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?undefined先准备文件:
用wireshark打开botnet_pcap_file.dat文件,输入筛选条件undefinedip.src == 172.16.134.191 && tcp.dstport == 6667,筛选源地址为蜜罐主机,目的端口为6667的包。可得到五个地址:undefined209.126.161.29undefined66.33.65.58undefined63.241.174.144undefined217.199.175.10undefined206.196.44.172
4.在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?undefined输入sudo apt-get install tcpflow,安装tcpflow;undefined输入tcpflow -r botnet_pcap_file.dat host 209.196.44.172 and port 6667,将分析的结果输出到report.xml文件中;undefinedundefined
打开report.xml文件,查看有关TCP流的信息;
undefined输入命令使用grep过滤sudo 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利用管道进行分析
可以看到有3462个主机进行通信了
5、哪些IP地址被用于攻击蜜罐主机?undefined输入命令利用tcpdump进行分析: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 > result.txt;wc -l result.txt
undefined可以发现总共有165个ip地址,打开result.txt,查看IP:
6、攻击者尝试攻击了那些安全漏洞?undefined首先分析tcp端口和udp端口undefinedtcpdump -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 | uniqundefinedtcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and udp | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniqundefinedTCP:
undefinedUDP:
undefined可以看到TCP有135、139、25、445、4899、80,UDP有137。
7、那些攻击成功了?是如何成功的?undefined用wireshark打开文件botnet.pcap,分析个端口,wireshark中使用条件tcp.dstport==80 && ip.dst == 172.16.134.191进行筛选,这些是目标地址为172.16.134.191、目标端口为80的数据包。undefinedundefined
在80端口上,发现24.197.194.106发送的消息包好像已经进入了主机,使用了cmd.exe,正在输入命令获得蜜罐的机密消息。
再使用tcp.dstport==445 && ip.dst == 172.16.134.191来看TCP 445号端口,发现一个PSEXESVC.EXE字符串,是由61.111.101.78发起的,这似乎是一个类似于telnet的远程控制程序,某些反病毒扫描程序会报告其中的一个或多个工具感染了“远程管理”病毒。
综合流量分析结果,可以判断 TCP 445 端口上的攻击成功。
成功攻击的关键证据包括:
- 发现 PSEXESVC.EXE;null.ida、dafault.ida为标识的code red
- 出现 \PIPE\ntsvcs 远程服务控制相关通信;
- 攻击者通过 SMB 服务与蜜罐主机发生了有效交互;
- 蜜罐主机随后加入 IRC 僵尸网络,与 IRC 服务器进行通信。
因此,攻击者很可能利用 Windows SMB 服务漏洞或弱口令/远程服务创建机制,通过 TCP 445 端口在蜜罐主机上部署并执行 PSEXESVC.EXE,从而获得系统控制权。随后,恶意程序通过 IRC 协议连接 C&C 服务器,使蜜罐主机加入僵尸网络。
3. 学习中遇到的问题及解决
问题一:VMware 虚拟机与宿主机文件共享失败
现象:在 WinXPattacker 虚拟机中无法找到宿主机共享的 rada.rar 等实验文件。
原因:VMware Tools 未安装或未启用共享文件夹的"总是启用"及"映射为网络驱动器"选项。
解决:在虚拟机设置中重新安装 VMware Tools,于"选项"页启用共享文件夹,勾选"总是启用"和"在 Windows 客户机中映射为网络驱动器",重启后通过"我的电脑 → 网络驱动器"访问。
问题二:rada.exe 加壳导致字符串查看异常
现象:直接使用 strings rada.exe 查看可打印字符串时,输出大量乱码,无法获取有效信息。
原因:rada.exe 使用了 UPX 加壳,入口点与代码段被压缩,原始字符串被隐藏。
解决:使用 PEiD 确认加壳类型为 UPX 后,利用超级巡警脱壳机对样本进行自动脱壳,生成 rada_unpacked.exe,再使用 strings 与 IDA Pro 即可正常提取字符串与作者信息。
问题三:tcpflow 过滤器表达式语法报错
现象:执行 tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667" 时提示 can't parse filter expression: syntax error。
原因:BPF 过滤器表达式被中文引号或不必要的双引号包裹,导致 libpcap 解析失败;此外 host ... and port ... 在 shell 中无需引号。
解决:去掉引号直接执行:
bash
tcpflow -r botnet_pcap_file.dat host 209.196.44.172 and port 6667
4. 学习感想和体会
通过本次恶意代码分析与逆向工程实验,我对二进制安全与网络威胁分析有了更加系统和深入的认识,主要体现在以下几个方面:
第一,静态分析是恶意代码分析的基石,但需突破对抗层。
在分析 rada.exe 时,我首先学习了如何使用 file、PEiD 等工具快速识别文件类型与加壳状态。当发现 UPX 壳导致字符串不可读时,脱壳成为关键一步。这让我意识到,恶意代码作者通常会使用加壳、混淆、反调试等技术阻碍分析,而安全研究者必须掌握"剥壳"与"去混淆"的能力,才能触及代码本质。
第二,逆向思维与工具链的熟练程度直接决定分析效率。
在破解 crackme1.exe 和 crackme2.exe 的过程中,IDA Pro 的函数调用图(Function Calls)与流程图(Flow Chart)帮助我快速定位核心验证逻辑。从"猜测口令 → 验证函数定位 → 参数比对逻辑 → 实际运行验证"的完整闭环,让我体会到逆向工程不仅是技术活,更是逻辑推理与耐心细致的结合。
第三,网络流量分析是发现威胁与溯源的"时光机"。
在分析实践任务二中,面对 5 天的蜜罐流量数据,我最初感到无从下手。但通过 Wireshark 的显示过滤、tcpflow 的会话重组、tcpdump 的批量提取,我逐步还原了僵尸网络的 IRC 通信拓扑、3462 台受控主机的规模、以及针对 TCP 445 端口的成功入侵证据(PSEXESVC.EXE)。这让我深刻认识到,网络流量不会说谎,掌握流量分析技能就如同掌握了网络攻防的"黑匣子"解读能力。
第四,安全研究需要严谨的证据链意识。
在判断攻击是否成功时,不能仅凭单一数据包下结论,而需要综合端口开放情况、Payload 特征(如 PSEXESVC.EXE)、后续行为(加入 IRC 频道)等多维度证据。这种"假设 → 取证 → 验证 → 结论"的科学方法,对我今后从事安全分析工作具有重要指导意义。
总之,本次实验将课堂上的理论知识转化为可操作的技能,让我对恶意代码的运作机制、逆向分析的方法论以及网络威胁狩猎的技术路径有了切身体会。未来我将继续加强汇编语言、操作系统原理与网络协议的学习,以应对日益复杂的安全威胁。
浙公网安备 33010602011771号