20252914 2025-2026-2 《网络攻防实践》第8周作业
1.知识点梳理与总结
一、 恶意代码样本分析核心知识点
-
- 文件类型识别相关概念
恶意代码样本:未经授权、具备破坏、窃取、入侵、远程控制等危害行为的程序文件,本次 rada 样本属于恶意程序类。
文件格式:Windows 恶意程序主流为PE 格式(Portable Executable),包含 exe、dll 等可执行程序格式。
运行平台:区分 32 位 / 64 位 Windows 系统,是程序适配运行的基础环境。
加壳:恶意代码常用保护手段,通过压缩、加密程序本体,隐藏源码、规避杀毒检测、增加逆向分析难度。
加壳工具:专门对 PE 程序加壳的软件,常见 UPX、ASPack、Themida 等,不同壳对应不同识别特征。
- 文件类型识别相关概念
-
- 脱壳技术基础概念
脱壳:与加壳反向的操作,解除程序加密压缩外壳,还原原始可执行程序代码与数据,是恶意分析前置必备步骤。
自动脱壳工具:超级巡警脱壳机等自动化工具,依据壳特征匹配算法,自动剥离外壳、还原原程序。
壳的作用:隐藏程序真实功能、对抗静态查杀、干扰代码逆向、篡改程序原始特征。
- 脱壳技术基础概念
-
- 字符串提取分析概念
程序字符串:程序内置文本信息,包含作者签名、域名、IP、指令、提示语、备注等明文数据。
字符串提取:扫描脱壳后程序二进制数据,筛选可读明文字符,快速获取程序基础信息。
溯源分析:通过提取的作者署名、专属标识,定位恶意代码编写者、团伙归属,属于恶意溯源取证。
- 字符串提取分析概念
二、Crackme 程序逆向分析知识点
- Crackme 程序:专门用于逆向破解练习的测试程序,内置校验算法,验证输入合法性。
- 静态分析:使用 IDA Pro 不运行程序,直接解析程序汇编代码、逻辑分支、校验判断语句。
- 动态分析:调试运行程序,跟踪程序执行流程、寄存器数据、内存变化,实时查看校验运算过程。
- 程序校验逻辑:程序内置算法比对用户输入与预设合法密钥,匹配则输出成功提示。
- 逆向破解核心:定位判断跳转指令、密钥运算函数,推导合法输入内容。
三、僵尸网络 + 网络流量取证分析知识点
-
- 僵尸网络基础概念
僵尸主机:被恶意程序入侵控制、受控于黑客的电脑主机,自身无自主操作行为。
僵尸网络:大量被控僵尸主机组成集群,统一接收黑客指令,发起攻击、外联通信、窃取数据。
系统入侵攻陷:利用漏洞、恶意程序突破 Windows 系统权限,篡改系统配置、植入被控木马。
- 僵尸网络基础概念
-
- Snort 流量采集与网络日志概念
Snort:开源网络入侵检测工具,具备流量捕获、协议解析、攻击行为识别、日志记录功能。
网络流量数据源:主机所有收发数据包集合,包含通信 IP、端口、协议、传输数据、访问行为。
二进制网络日志:原始流量以二进制形式存储的日志文件,保留网络通信原始真实数据。
- Snort 流量采集与网络日志概念
-
- 流量预处理与数据脱敏概念
流量筛选编辑:剔除无效、无关冗余流量,精简数据,聚焦攻击、外联、入侵相关行为流量。
敏感信息混淆:对真实 IP、主机地址、地理位置等隐私敏感数据做模糊替换,保护实验环境真实信息。
- 流量预处理与数据脱敏概念
-
- 蜜罐取证概念
蜜罐主机:伪装成普通业务主机的诱捕主机,主动暴露漏洞,引诱黑客入侵、恶意程序外联。
蜜罐作用:捕获攻击行为、恶意样本、通信链路,追溯入侵手段、攻击来源与攻击目的。
网络取证:基于捕获流量日志,还原入侵全过程、分析攻击路径、判定恶意行为性质。
- 蜜罐取证概念
2.实验过程
一、对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者
将文件RaDa.exe传入WinXP Attacker虚拟机,执行file RaDa.exe指令识别文件类型:

RaDa.exe: PE32 executable for MS Windows (GUI) Intel 80386 32-bit含义为:RaDa.exe 是一个适用于微软 Windows 系统的 32 位图形界面(GUI)可执行文件,基于 Intel x86(386)架构编译的 PE32 格式程序。
执行strings RaDa.exe指令打印字符串:

可以观察到显示大量乱码,使用PEiD工具检测加壳类型:


显示UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
UPX:知名开源压缩加壳工具,恶意程序常用壳类型
版本区间:该样本使用 UPX 0.89.61.02、1.052.90 区间版本加壳
Markus & Laszlo:UPX 工具开发作者
接下来使用超级巡警虚拟机脱壳器进行脱壳:

脱壳后生成文件RaDa_unpacked.exe,执行strings RaDa_unpacked.exe指令重新查看其字符串:

脱壳成功
使用命令RaDa.exe -authors查看作者:

可以看到作者为Raul Siles & David Perez
二、在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。
将文件crackme1.exe和crackme2.exe传入WinXP Attacker虚拟机,之后使用IDA分析程序对Crackme1.exe进行分析:

打开strings字符串窗口:

找到I know the secret,双击跳转到对应函数:

现在查看Crackme1.exe的函数调用图:

锁定其中的sub_401280:

在Functions找到对应模块:

双击之后Flow Chart查看代码流程图:

可以看到代码进行了两次判断,一次是参数个数的判断,一个是对内容I know the secret的判断,输入crackme1.exe "I know the secret"得到:

接下来是对crackme2.exe的分析,分析过程与上述相似:
使用IDA打开Crackme2.exe:

打开strings,找到I know the secret并双击:


查看Crackme2.exe的函数调用图:


同样找到sub_401280函数模块:


之后Flow Chart查看代码流程图:

可以看到代码进行了多次判断,一次是参数个数的判断,一次是对文件名的判断,还有一次一次是对输入内容的判断,在修改文件名为crackmeplease.exe后,输入crackmeplease.exe "I know the secret"指令即可得到We have a little secret: Chocolate输出:

三、分析一个自制恶意代码样本rada。
输入md5sum RaDa.exe查看其md5的摘要值:

双击运行RaDa_unpacked.exe文件,并使用监视工具Process Explorer对其进行监听:

展开监听得到的字符串信息:

将其保存为txt文件并传到虚拟机文件共享区域:

分析结果:
-
- 二进制文件摘要
文件名:RaDa.exe / RaDa_unpacked.exe
文件格式:PE32 executable (GUI) Intel 80386 32-bit
运行平台:Microsoft Windows(32 位)
编译语言:Visual Basic 6.0(依赖 MSVBVM60.DLL)
加壳类型:UPX 0.89.6 – 2.90
来源背景:Honeynet Project Scan Of The Month 32 (SotM32),2004 年 9 月
MD5:caaa6985a43225a0b3add54f44a0d4c7
特征字符串:RaDa、SotM32、Starting DDoS Smurf remote attack、Copyright (C) 2004 Raul Siles & David Perez
- 二进制文件摘要
-
- 二进制文件的目的
该程序是一个远程控制后门(RAT,Remote Access Trojan),核心目的:
受控接入:让攻击者远程控制被感染主机
文件传输:上传 / 下载文件
系统持久化:写入注册表实现开机自启
信息窃取:屏幕截图、获取系统信息、MAC 地址等
攻击发动:发起 Smurf DDoS 攻击
内网探测:扫描内网网段(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)
命令控制:通过 HTTP/CGI 与 C2 服务器通信
- 二进制文件的目的
-
- 二进制文件的特性
(1)控制与通信特性
C2 地址:http://10.10.10.10/RaDa
命令接口:RaDa_commands.html、download.cgi、upload.cgi
通信协议:HTTP 上传 / 下载(multipart/form-data)
(2)系统控制特性
屏幕截图:screenshot
系统操作:Wscript.Shell、Scripting.FileSystemObject
按键模拟:keybd_event
进程休眠:Sleep
(3)持久化特性
注册表自启动:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\RaDa
安装路径:C:\RaDa\bin\RaDa.exe
临时目录:C:\RaDa\tmp
(4)攻击特性
支持 Smurf DDoS 攻击
内网扫描
文件上传 / 下载
注册表读写删除
(5)交互特性
图形界面(GUI)
支持安装 / 卸载 / 查看配置 / 帮助等命令
- 二进制文件的特性
-
- 防止被分析或逆向的技术
该样本仅使用了基础的防逆向手段:
UPX 加壳
压缩加密程序,防止直接静态字符串提取与反汇编
必须脱壳后才能看到真实代码
无复杂反调试
无 VMProtect、Themida 等强壳
无反调试、反虚拟机、花指令等高级保护
VB6 编译特性
VB 程序反汇编可读性差,但不属于专门的保护
- 防止被分析或逆向的技术
-
- 恶意代码分类及理由
分类:远程控制木马(Remote Access Trojan,RAT)
理由:
它不自我复制,不具备病毒 / 蠕虫特征
它未经授权远程控制主机
具备完整后门功能:文件传输、屏幕截图、命令执行、持久化
依赖用户运行或攻击者植入,不主动传播
不属于:病毒(无感染)、蠕虫(无自主传播)、勒索软件(无加密)、木马下载器(功能完整)。
- 恶意代码分类及理由
-
- 相似功能的已知工具
同类型、同功能的经典远程控制木马 / 工具:
Sub7
Back Orifice (BO)
NetBus
PoisonIvy
Gh0st RAT
PcShare
Beast
这些都具备:远程控制、文件传输、屏幕截图、注册表持久化、DDoS 等功能。
- 相似功能的已知工具
-
- 是否可调查出开发作者?条件是什么?
可以明确确定作者。
作者信息
Raul Siles & David Perez,2004 年
证据(字符串中明确出现)
Copyright (C) 2004 Raul Siles & David Perez
Authors: Raul Siles & David Perez, 2004
(c) Raul Siles && David Perez
Scan Of The Month 32 (SotM) - September 2004
限定条件
必须先对样本脱壳(UPX 壳)
必须对脱壳后的文件进行字符串提取
需在静态分析环境下进行,无需运行样本
该样本是Honeynet 安全挑战练习程序,作者自愿署名,非恶意匿名木马
- 是否可调查出开发作者?条件是什么?
三、分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。
IRC:互联网中继聊天,基于 TCP 的实时文本聊天协议,常用于群组聊天与僵尸网络控制。
接入消息:先发送 NICK、USER 完成注册,再用 JOIN 加入频道。
常用端口:6667(明文)、6697(加密)。
下载botnet_pcap_file.dat文件并传入Kali虚拟机中,使用wireshark进行分析:

使用ip.src == 172.16.134.191 && tcp.dstport == 6667进行筛选:

可以看到有5个IRC服务器的IP地址:209.126.161.29、66.33.65.58、63.241.174.144、217.199.175.10、209.196.44.172。
执行sudo apt-get install tcpflow指令在Kali虚拟机中安装tcpflow流量分流工具:

执行tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"指令,从流量包文件 botnet_pcap_file.dat 中,提取并解析所有与主机 209.196.44.172 且端口 6667 相关的 TCP 数据流,也就是 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统计当前 IRC 僵尸网络频道里,有多少个在线的僵尸主机(肉鸡数量)
指令解析:
- cat 209.196.044.172.06667-172.016.134.191.01152
作用:读取 tcpflow 提取出来的 IRC 流量日志文件
文件来源:僵尸主机 ↔ IRC 服务器的通信记录 - grep -a "^:irc5.aol.com 353"
353 是 IRC 协议的 频道用户列表响应码
作用:只保留 IRC 服务器返回的 “在线用户名单” 那一行 - sed "s/^:irc5.aol.com 353 rgdiuggac @ #x[^x]*x 😕/g"
sed 替换:把前面的 IRC 协议头、垃圾内容全部删掉
只留下真正的僵尸昵称列表 - tr ' ' '\n'
把空格换成换行
让每个僵尸昵称单独占一行 - tr -d "\15"
删除 Windows 换行符(^M) 垃圾字符 - grep -v "^$"
删除空行,让数据干净 - sort -u
排序 + 去重
避免重复统计同一个僵尸 - wc -l
统计行数
最终数字 = 在线僵尸主机数量
![image]()
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 > aaa.txt;wc -l aaa.txt
该指令使用 tcpdump 读取僵尸网络流量文件,过滤所有发往主机 172.16.134.191(蜜罐主机)的数据包,提取并统计独立的源 IP 地址,将 IP 列表保存至 aaa.txt 文件,并输出 IP 总数,用于分析攻击来源数量与僵尸网络节点规模。
![image]()
![image]()
执行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:
该命令通过 tcpdump 过滤流量文件中源地址为 172.16.134.191(僵尸主机) 且携带 SYN+ACK 握手标志的 TCP 数据包,提取并统计其主动连接的目标端口号,用于识别僵尸主机向外建立的通信端口,判断其与控制服务器的连接行为。
![image]()
执行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:

TCP有六个端口,UDP有一个端口
在Wireshark中输入tcp.port == 135进行筛选:

只有握手数据包
输入tcp.port == 139进行筛选:

未找到弱口令爆破、SMB 会话劫持相关漏洞攻击信息
输入tcp.port == 25进行筛选:

未找到邮件伪造、垃圾邮件、钓鱼、反弹 shell相关信息
输入tcp.port == 445进行筛选:


发现PSEXESVC.EXE
PSEXESVC.EXE 是 PsExec 远程执行工具的服务端程序,用于在 Windows 上实现无代理远程命令执行,常被黑客用于入侵、横向移动与远程控制,依赖 445 端口与 admin$ 共享。
输入tcp.port == 4899进行筛选:

输入tcp.port == 80进行筛选:


80 端口缓冲区溢出攻击的典型特征:出现大量 A、\x90(NOP 空指令)、\xcc(断点)等填充串。HTTP GET/POST 数据包长度异常大,远超过正常请求。URL、参数、Cookie、User-Agent 等字段超长、畸形、不符合 HTTP 规范。推测可能遭遇缓冲区溢出攻击。
输入udp.port == 137进行筛选:

3.学习中遇到的问题及解决
暂无
4.学习感悟
通过本次恶意代码分析、Crackme 逆向与僵尸网络流量分析实验,我系统掌握了恶意样本从识别、脱壳、字符串提取到功能溯源的完整流程,对文件类型识别、加壳脱壳、静态动态分析、网络流量取证等核心技术有了直观理解。在分析 RaDa 样本时,我认识到恶意代码常通过加壳隐藏行为、通过注册表持久化、利用常见端口进行通信;在 IRC 僵尸网络流量分析中,我明白了黑客如何利用公开协议控制肉鸡,也学会了用 tcpdump、tcpflow 等工具还原攻击行为、定位攻击来源。
参考资料
- 《Java程序设计与数据结构教程(第二版)》
- 《Java程序设计与数据结构教程(第二版)》学习指导




