一、核心知识点梳理
1.RaDa
RaDa 是 Windows 平台远程控制类后门木马,多以 UPX 加壳 PE 程序形态存在,常借助软件捆绑、漏洞植入等方式渗透终端。该恶意程序功能覆盖远程命令执行、文件读写、进程调度、屏幕监视等常规远控行为,同时内置流量攻击模块,可受控发起网络洪水攻击,多用于组建僵尸网络,实现批量主机管控与恶意流量投放。
2.脱壳
脱壳就是通过动态调试、内存转储、特征匹配等方式,在程序完成自解压解密、原始代码完整释放至内存的节点抓取纯净程序体,修复文件头、重定位表与导入表等结构异常,还原出未做加密处理的原始程序样本。
3.IDA Pro 静态分析
IDA Pro 静态分析是指不运行程序,直接对二进制文件做反汇编、逻辑解析与结构还原。加载样本后自动完成指令解析、函数边界识别、控制流和数据流扫描。IDA Pro 静态分析常用于代码审计、漏洞定位、恶意软件初筛和协议逆向,特别适合处理无强混淆、符号完整的样本。
4.IDA Pro 动态分析
IDA Pro 动态分析是利用内置调试器,在受控环境运行程序,实时观察执行流、寄存器、内存与栈状态,并可动态修改内存、寄存器、dump 运行时数据。IDA Pro 动态分析主要用于验证静态推测、绕过混淆和壳、分析自修改代码、捕获运行时密钥和关键数据。
二、实践过程
动手实践任务一
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
- 在虚拟机设置中的共享文件夹处勾选在Windows客户机中映射为网络驱动器,勾选在Windows客户机中映射为网络驱动器,将RaDa.exe传入WinXP Attacker虚拟机
![image]()
- RaDa.exe复制到
C:\Documents and Settings\Administrator路径下
![image]()
- 打开cmd,执行
file RaDa.exe识别文件类型:
![image]()
运行平台、文件类型:该样本为运行在 32 位 x86 架构、运行于 Windows 系统的图形界面 PE 可执行文件
- 执行
strings RaDa.exe打印程序中的字符串,输出大量乱码字符,判断样本存在加壳保护
![image]()
- 打开PEiD选取路径下的RaDa.exe
![image]()
加壳工具:UPX的 0.89.6 - 1.02 / 1.05 - 2.90版本,加壳作者为Markus & Laszlo
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
- 打开超级巡警虚拟机脱壳器,选取RaDa.exe,点击
给我脱!,生成脱壳后的文件RaDa_unpacked.exe
![image]()
- 执行
strings RaDa_unpacked.exe提取到可读信息,操作成功
![image]()
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
- 使用IDA Pro Free加载脱壳后的RaDa_unpacked.exe,打开Strings窗口,点击左上角edit,选择Setup并勾选Unicode编码,在地址JDR0:00402D04处找到
aCopyrightC2004,这对应着<Copyright (c) 2004 Paul Silos & David Poros>,这是 RaDa 的版权声明,Paul Silos 和 David Poros 就是该程序的原始作者
![image]()
动手实践任务二:分析Crackme程序
任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。
- 在虚拟机设置中的共享文件夹处勾选在Windows客户机中映射为网络驱动器,勾选在Windows客户机中映射为网络驱动器,将crackme1.exe和crackme2.exe传入WinXP Attacker虚拟机,并移动到
C:\Documents and Settings\Administrator路径下
![image]()
- 使用IDA Pro打开crackme1.exe,等待自动分析完成
![image]()
- 观察字符串窗口可知
I know the secret可能与正确的输入有关,
You know how to speak to programs, Mr. Reverse-Engineer可能是成功提示
![image]()
- 查看函数调用图,从图中可以清晰看到调用链从入口点start到调用sub_401110再调用 sub_401280再到调用字符串比较函数strcmp、输出提示的printf关键函数
![image]()
- 选择function,选择sub_401280查看函数,
![image]()
- 通过阅读程序可知先判断命令行参数数量是否等于2,若不是则直接报错退出。当参数数量正确时,程序会把用户传入的第一个参数,和内置字符串
I know the secret做 strcmp 比较。只有两者完全一致,才会跳转到成功分支,输出成功提示。
![image]()
- 在命令行执行
crackme1.exe "I know the secret",验证成功
![image]()
在WinXP Attacker虚拟机中使用 IDA Pro静态分析crackme1.exe成功 - 使用IDA Pro打开crackme2.exe,等待自动分析完成,打开字符串窗口
![image]()
- 观察字符串窗口可知如下为关键字符串,
I know the secret可能为目标明文密码
I think you are missing something.\n可能是未传入命令行参数时输出的错误提示
Pardon? What did you say?\n可能是参数错误时输出的错误提示
I have an identity problem.\n可能是校验失败的额外错误提示
![image]()
- 查看函数调用图,从图中可以清晰看到sub_401280是调用字符串比较函数strcmp、输出提示的printf关键函数
![image]()
- 选择function,选择sub_401280查看函数,阅读程序可知程序先检查命令行参数数量,如果没有带参数,直接输出
I think you are missing something,若文件名校验如果参数正确,程序会检查自身程序名是否为crackmeplease.exe。如果不是,输出I have an identity problem口令校验如果文件名正确,程序开始校验你输入的口令,对比是否等于I know the secret错误则输出Pardon? What did you say?,成功则输出成功提示We have a little secret: Chocolate
![image]()
- 将crackme2.exe重命名为crackmeplease.exe,执行
crackmeplease.exe "I know the secret",输出为We have a little secret: Chocolate,验证成功
![image]()
在WinXP Attacker虚拟机中使用 IDA Pro静态分析crackme2.exe成功
分析实践任务一:分析一个自制恶意代码样本rada,并撰写报告,回答以下问题
1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
- 执行
md5sum RaDa.exe获取代码样本rada的MD5摘要值为caaa6985a43225a0b3add54f44a0d4c7,MD5摘要值可以用于识别、区分、匹配同一个程序样本,帮助识别同一样本的基本信息
![image]()
- 运行RaDa_unpacked.exe,打开监视工具Process Explorer双击打开该进程
![image]()
根据上述监听信息可知,该二进制程序为 2004 年披露的 RaDa 远程控制恶意程序,基于 VB6 语言编译生成,运行依赖 MSVBVM60 动态链接库。样本自身文件标识、内部资源名称统一为 RaDa,附带专属版权信息与 SotM 32 样本标识,可作为基础识别依据。可凭借专属命令参数、特有 VB 运行库导入函数、固定路径注册表特征与恶意行为模式,完成同源样本甄别判定。
2、找出并解释这个二进制文件的目的;
- 远程C&C命令操控:程序预设 Web 接口
http://10.10.10.10/RaDa作为命令服务器,可远程拉取攻击者指令、回传本机数据,实现跨网络远程操控
![image]()
- 持久化驻留:
C:\RaDa\bin\RaDa.exe表明木马通过注册表开机自启实现持久化驻留C:\RaDa\tmp和C:\RaDa\bin表明木马本体落地到本地目录,完成木马部署留存,长期潜伏被控主机
![image]()
- 窃取 / 投放文件:
Scripting.FileSystemObject、multipart/form-data、get、put表明木马具备本地文件增删改查的能力,可通过 HTTP 协议向外窃取文件、向主机上传恶意文件
![image]()
- 采集主机数据:
MACAddress、screenshot、RegRead等信息表明木马将截取桌面画面、调取注册表数据,盗取设备隐私内容
![image]()
- 渗透恶意行为:
Starting DDoS Smurf remote、attackInternetExplorer.Application表明木马可受控发起拒绝服务攻击,也能操控浏览器访问页面、提交表单,劫持网页浏览器
![image]()
3、识别并说明这个二进制文件所具有的不同特性;
- VB6 架构开发,依托 COM 组件交互系统:
MSVBVM60.DLL、Wscript.Shell、大量__vba运行函数说明程序由 VB6 语言编写,依赖专属运行库,通过 COM 对象调用系统功能,具备典型 VB 程序二进制特征。 - 支持自部署安装,拥有系统持久驻留特性证据:
HKLM\CurrentVersion\Run说明木马可自主完成程序安装落地,篡改注册表实现开机自启,长期潜伏被控主机不易失效 - HTTP 协议组网,具备远程 C&C 通信特性:
cgi-bin、download.cgi、http://10.10.10.10/RaDa说明木马使用通用网页协议搭建远程命令通道,可跨网络接收指令、回传数据与文件,穿透性较强 - 具备多类破坏窃取能力:
MACAddress、screenshot、RegRead等信息说明木马集成信息窃密、主机控制、Smurf DDoS网络攻击、网页劫持多项恶意功能,威胁维度多样 - 具备隐蔽对抗特性:
visible窗口参数、后台休眠等信息都说明木马支持隐藏界面静默运行,以隐匿伪装为设计思路,降低被用户与基础安全机制发现概率
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
该样本核心反逆向防护手段为 UPX 通用压缩壳:
- 对静态分析造成的阻碍
UPX 壳对原始 PE 文件的代码段、数据段统一做压缩与加密处理。未脱壳状态下直接进行反汇编、字符串提取、特征检索,只能解析出杂乱无效数据,无法正常读取原始程序指令、功能字符串与关键配置,难以快速判定程序恶意功能、执行逻辑与通信特征。 - 对动态分析造成的阻碍
加壳程序运行时会优先执行壳自身代码,先在内存中将压缩加密的程序本体解密还原,完成解压缩后才跳转至原始程序入口点运行核心逻辑。该执行流程打乱常规调试路径,增加了断点跟踪、流程溯源、内存镜像转储的操作难度。 - 配套辅助反逆向设计
UPX 壳作为基础防护,还结合样本自身特性叠加防护效果:采用 VB6 虚拟机代码、COM 组件间接调用系统接口,进一步拉高脱壳后的代码分析难度;同时参数化配置关键信息、混杂无效乱码,多重手段共同规避逆向研判。
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
RaDa 是一款可接入僵尸网络的远程控制后门程序。
- 排除计算机病毒:病毒必须具备依附宿主文件、自我复制、感染其他文件的核心行为样本证据:样本无文件寄生逻辑、无自我复制代码、不会主动感染本地其他程序与文档,不满足病毒本质特征。
- 排除网络蠕虫:蠕虫依靠漏洞扫描自主主动跨主机传播,全程无需人工干预即可扩散样本证据:不存在网络探测、漏洞利用、主动外联传播模块,仅被动等待指令,无自发扩散能力,不属于蠕虫。
- 排除传统木马:传统木马以伪装成合法程序为核心手段,依靠欺骗诱导用户手动运行触发恶意行为样本证据:程序标识直接命名为RaDa,无伪装图标、仿冒软件、包装成正常工具的设计,不以欺骗伪装作为运行前提,不符合传统木马定义。
4.判定为远程控制后门Backdoor:
预留非法远程访问通道,通过与服务端通信,可远程下发、执行任意指令,拥有完整持久化能力,写入注册表启动项、固化安装目录,实现长期驻留,并且具备系统文件读写、注册表篡改、屏幕截屏、浏览器劫持等入侵操控行为权限操控,符合后门程序的特征
5.判定具备僵尸程序 Bot 属性
采用标准C&C中心化架构,可被服务端一对多批量管控大量被控主机,内置Smurf DDoS攻击模块,能够响应集群调度,参与大规模网络攻击,被控主机仅被动接收指令、执行恶意任务,是典型僵尸网络客户端行为
6、给出过去已有的具有相似功能的其他工具;
- Back Orifice、NetBus、SubSeven
早期经典远程后门程序,与样本功能高度契合,支持 C&C 远程指令管控、文件传输、注册表修改与屏幕监控,可写入启动项实现持久驻留,部分自带 DDoS 攻击能力,程序无伪装欺骗设计。 - Poison Ivy、Gh0st RAT、DarkComet
中后期主流远控后门,依托网络协议建立命令通信通道,拥有系统操控、信息窃取、恶意文件下发功能,依靠注册表、系统服务实现长期潜伏,整体功能模块与 RaDa 样本基本一致。 - Mirai 僵尸程序
典型僵尸网络客户端,虽主攻物联网设备,与样本 Windows 运行环境不同,但同样采用中心化架构批量管控主机,可统一调度发起网络攻击,具备僵尸集群受控执行任务的共性特征。
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
- 作者为Raul Siles、David Perez,需要在完成 UPX 脱壳的条件下,一是命令行方法直接运行:RaDa.exe --authors,程序会直接输出作者姓名;二是反编译 / 静态分析方法,对脱壳后的 RaDa_unpacked.exe 进行反编译、字符串检索,可直接提取明文字符串中的作者信息。三是动态监听方法,使用 Process Explorer 监控程序启动、参数响应过程,可捕获程序输出的作者信息。
分析实践任务二:Windows 2000系统被攻破并加入僵尸网络,分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。回答下列问题:
1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
- IRC(互联网中继聊天)是 1988 年诞生的首个标准化实时文本通信协议,采用客户端 - 服务器分布式架构,多个服务器互联形成聊天网络,用户通过客户端连接后可在频道公开讨论或一对一私信。
- 客户端建立 TCP 连接后进入注册阶段,必须按顺序发送 NICK(指定唯一昵称)和 USER(携带系统用户名、主机名、服务器名和真实姓名)两条核心命令完成身份注册。如需密码验证则先发送 PASS 命令。服务器返回 001 号 RPL_WELCOME 消息后,客户端正式加入网络。JOIN 命令仅用于加入特定频道,并非加入网络的必要步骤。
- IRC 基于 TCP 传输,IANA 分配的标准明文端口为 194/TCP,实际部署中普遍使用 6667/TCP 作为事实标准。SSL/TLS 加密连接的标准端口是 6697/TCP。为绕过防火墙限制,许多服务器还会同时监听 6660-6669 及 7000/TCP 等端口。
2、僵尸网络是什么?僵尸网络通常用于什么?
- 僵尸网络(Botnet)是由被恶意代码秘密感染、受攻击者远程统一控制的大量计算机构成的分布式网络,被感染主机称为 "僵尸机" 。攻击者通过钓鱼邮件、系统漏洞利用、恶意软件捆绑等方式植入僵尸程序,传统架构依赖 IRC 或 HTTP 服务器作为集中式命令与控制节点,现代僵尸网络多采用去中心化 P2P 架构以规避检测和打击。
- 僵尸网络最主要用途是发动大规模分布式拒绝服务(DDoS)攻击,利用海量僵尸机流量耗尽目标资源导致服务中断。其次是发送垃圾邮件,利用全球分布式 IP 绕过反垃圾黑名单。此外还被用于窃取用户敏感信息、利用闲置算力进行加密货币挖矿,以及作为攻击平台传播勒索软件、实施广告点击欺诈等网络犯罪活动。
3、蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
- 由于IRC协议默认使用6667端口,结合其IP地址筛选蜜罐主机发起的IRC通信流量
ip.src == 172.16.134.191 && tcp.dstport == 6667
![image]()
- 识别到5个IRC服务器地址:
209.126.161.29、66.33.65.58、63.241.174.144、217.199.175.10、209.196.44.172
4、在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
- 在Kali中执行
sudo apt-get install tcpflow安装流量分流工具:
![image]()
- 提取该IRC服务器与蜜罐主机的全量通信流量:
tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"

- 从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为服务器的僵尸网络
5、哪些IP地址被用于攻击蜜罐主机?
所有向蜜罐主机172.16.134.191发起通信的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

- 打开生成的IP.txt文件,可以看到
2.252.61.161、12.253.142.87等165个IP地址被用于攻击蜜罐主机
![image]()
6、攻击者尝试攻击了那些安全漏洞?
- 统计
172.16.134.191这台主机,响应过6个TCP端口的连接,分别为35、139、25、445、4899、80
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]()
- 统计
172.16.134.191主机向外通信过的所有唯一 UDP 目标端口137,共1个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]()
7、那些攻击成功了?是如何成功的?
- 135端口:
筛选135端口的流量ip.addr == 172.16.134.191 && tcp.port ==135,当前可见的流量里,只有 “连接建立 - 关闭” 的空交互,没有任何攻击载荷的传输记录,因此攻击更像一次 “连接试探”,而非漏洞利用攻击
![image]()
- 139端口:
筛选139端口的流量ip.addr == 172.16.134.191 && tcp.port ==139,发现僵尸主机尝试对目标的 139 端口进行连接,判断是否存在可利用的 SMB 共享;目标虽然开放了端口,但拒绝了连接请求,没有被成功入侵
![image]()
- 25端口:
筛选25端口的流量ip.addr == 172.16.134.191 && tcp.port ==25,发现所有数据包都是 TCP 控制包,没有出现携带如HELO、MAIL FROM、恶意邮件内容、漏洞利用代码等的 SMTP 应用层数据包,说明攻击者建立连接后,立即发送 FIN+ACK 关闭连接,没有进行任何 SMTP 会话交互,也没有发送任何攻击载荷
![image]()
- 445端口:
筛选445端口的流量ip.addr == 172.16.134.191 && tcp.port ==445,发现出现异常
![image]()
- 发现33280号数据包中存在PSEXESVC.EXE,此文件意味着攻击者的恶意服务端程序已经被写入目标主机的系统目录,
![image]()
- 发现33278号数据包发送了一个 SMB 请求,目标路径为
172.16.134.191\ADMIN$,这说明之前的 SMB 认证已经成功通过,拿到了管理员级别的访问权限,攻击已经成功
![image]()
- 4899端口:
筛选4899端口的流量ip.addr == 172.16.134.191 && tcp.port ==4899,发现目标主机虽然发起了反向连接请求,但由于控制端无响应,始终无法建立有效的命令执行通道,攻击流程在这里中断了,没有成功
![image]()
- 80端口:
筛选80端口的流量ip.addr == 172.16.134.191 && tcp.port ==80,发现80端口数据包中出现了红色代码蠕虫攻击、.ida 缓冲区溢出攻击和测试并覆盖函数返回地址的超长 N 填充字符
![image]()
三、学习中遇到的问题及解决
1.将botnet_pcap_file传入WINXP虚拟机中找不到wireshark软件监听
解决方案:将botnet_pcap_file传入kali中监听即可,WINxp中没有wireshark软件
四、实践总结
本次实践围绕远控木马 RaDa、Crackme 程序逆向以及僵尸网络流量分析展开,在实验中我完成了样本识别、脱壳、静态与动态逆向、网络流量研判等一系列实操,夯实了恶意代码分析的基础能力。在 RaDa 样本分析环节,我结合进程监控、字符串特征梳理出该远控木马的完整功能,也理清了 UPX 壳对静态、动态分析的阻碍原理,掌握了基础反逆向对抗手段的识别方法。本次实验让我熟悉了恶意代码分析完整流程,加深了对远控木马、僵尸网络攻击链路的认知,今后我将继续深入学习后门漏洞的有关知识。








































浙公网安备 33010602011771号