# 20251901 2024-2025-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、那些攻击成功了?是如何成功的?

一、实验任务

  • 本次实验围绕恶意代码分析与僵尸网络流量分析两大主题展开,分为恶意代码(RaDa 样本)分析与Crackme 程序逆向 + 僵尸网络流量分析几大模块。通过文件识别、脱壳、静态逆向分析、网络流量分析等操作,掌握恶意代码分析、程序逆向工程、僵尸网络行为追踪的核心方法,理解恶意代码加壳、反分析技术,以及 IRC 僵尸网络、漏洞攻击的工作机制。实践具体由四个任务组成:
  1. 动手实践分析rada恶意代码
  2. 动手实践分析Crackme程序
  3. 分析实践任务一:分析恶意代码样本rada
  4. 分析实践任务二:Windows 2000系统被攻破并加入僵尸网络

二、实验材料或资源

  • WinXP Attacker虚拟机
  • Kali虚拟机
  • Process Explorer、PEiD、超级巡警脱壳机、IDA Pro Free、Wireshark、tcpdump、tcpflow工具、Wireshark工具(以上工具虚拟机中自带或可在虚拟机中安装)

三、知识点梳理

  • 1. 恶意代码静态分析核心原理
    恶意代码分析是网络安全威胁溯源的核心技术,分为静态分析与动态分析两类。本次实验针对RaDa恶意样本全程采用静态分析技术,该技术核心定义为:在不运行、不执行恶意程序的前提下,通过文件解析、特征识别、代码反汇编、字符串提取等技术手段,获取程序的文件属性、编译信息、功能逻辑、混淆手段与开发者信息,全程无恶意程序运行风险,安全性极高,是入门级恶意代码分析的首选方式。
    Windows系统下所有可执行程序(.exe)均遵循PE文件格式规范,PE文件包含文件头、代码段、数据段、资源段等核心结构,存储着程序运行架构、位数、功能代码、内置字符串、作者注释等核心信息。正常未加密程序可直接通过工具读取以上内容,而绝大多数恶意代码会采用加壳混淆技术规避分析与查杀。
    壳本质是一层附加在PE文件外的压缩、加密程序保护层,本次实验样本采用UPX开源压缩壳。UPX壳的工作原理为:对原始PE文件的代码段、数据段进行压缩加密,篡改PE文件头部特征,隐藏程序原始字符串、函数代码、编译信息。加壳后程序可正常运行,但所有静态分析工具无法读取有效信息,会出现乱码、代码缺失等问题。因此,脱壳是恶意代码静态分析的前置必要步骤,脱壳即解除壳的压缩与加密,还原PE文件原始结构,恢复程序所有明文资源。
    同时,文件哈希校验是恶意样本识别的核心知识点,MD5哈希算法可对文件整体数据进行不可逆运算,生成唯一固定摘要值,相当于文件的“专属指纹”,可用于同源样本匹配、样本篡改校验、恶意威胁库检索,是恶意样本溯源与归类的核心依据。

  • 2. Crackme程序逆向分析原理
    Crackme程序是专门用于逆向工程入门训练的测试程序,无实际恶意功能,核心设计逻辑为条件分支校验机制,基于程序入口参数、字符串匹配、文件名匹配实现差异化输出,是理解程序逆向逻辑的基础模型。
    Windows可执行程序运行时,可接收外部传入的启动参数,程序内部通过预设的判断逻辑(if-else分支结构)对参数数量、参数内容、程序自身名称进行校验。当输入内容完全匹配开发者预设规则时,程序执行成功分支,输出正确提示信息;若参数数量错误、内容不匹配、程序文件名异常,则执行错误分支,输出对应的错误提示。
    静态逆向破解的核心原理为反汇编代码解析。高级语言编写的程序编译后会生成机器码,IDA Pro Free工具可将机器码反汇编为可读的汇编代码,还原程序的函数结构、调用关系、分支判断逻辑。所有程序的校验规则、判断条件、输出语句均存储在自定义核心函数中,通过定位核心校验函数、分析函数流程图,即可精准推导程序的合法输入规则,实现无源码破解。
    本次实验两个Crackme程序校验逻辑逐层升级:crackme1.exe仅校验参数数量与参数字符串内容,属于单条件校验;crackme2.exe叠加了程序文件名校验,需要同时满足文件名、参数个数、参数字符串三重条件才可破解。

  • 3. IRC协议与僵尸网络攻击原理
    IRC协议原理:
    IRC(Internet Relay Chat,互联网中继聊天)是一种基于TCP协议的实时明文通信协议,默认工作端口为6667,备用端口为6668、6697、7000,具备架构简单、通信稳定、无需复杂认证、支持多客户端集群通信的特点。
    IRC协议通信流程固定:客户端启动后,首先向IRC服务器发送NICK消息(提交昵称身份)和USER消息(提交用户权限信息),完成入网注册;注册成功后即可加入指定频道,与服务器、其他客户端实时收发数据。因其轻量化、集群化的通信特征,被攻击者广泛用于僵尸网络C&C(命令与控制)通信。
    僵尸网络工作原理:
    僵尸网络(Botnet)是典型的规模化网络攻击模型,由C&C控制服务器、大量受控肉鸡主机、攻击者终端三部分组成。攻击者通过漏洞攻击、木马植入等方式,入侵普通用户主机,植入僵尸程序,被入侵主机将主动连接预设的IRC控制服务器,长期静默驻留,接受攻击者的远程指令控制,成为“肉鸡”。
    僵尸网络的核心特征为一对多远程管控、隐蔽性强、规模化攻击。单台IRC服务器可管控数千台肉鸡,所有肉鸡后台静默通信,无弹窗、无明显异常,普通用户无法察觉。攻击者可通过服务器向所有肉鸡批量下发指令,实现DDoS攻击、端口扫描、漏洞扩散、信息窃取、恶意代码传播等批量攻击行为。

  • 4. 网络流量分析原理
    网络流量日志文件(dat/pcap格式)完整记录了主机一段时间内所有的网络收发数据包,包含源IP、目的IP、通信端口、协议类型、TCP标志位、数据包内容、通信时间等全量信息,是还原网络攻击行为、溯源攻击源头的核心数据源。
    基于TCP/IP协议规范,可通过IP地址、端口号、协议类型、TCP标志位等维度筛选有效流量,剔除无效冗余数据;通过批量排序、去重、统计命令,可统计攻击主机数量、受控主机数量;结合端口对应服务漏洞特征,可判断攻击者的攻击手段、攻击漏洞与攻击成功率,完整还原网络入侵的全过程。
    本次实验基于Windows 2000老旧系统漏洞开展流量分析,该系统存在大量未修复的高危漏洞,包括SMB文件共享漏洞、RPC远程代码执行漏洞、NetBIOS信息泄露漏洞等,攻击者通过扫描主机开放高危端口,利用漏洞发送恶意数据包,实现权限突破与木马植入,是本次僵尸网络入侵的核心原理。

  • 5.实验工具介绍
    1. file工具:基于文件头部特征码库匹配识别文件类型,每种格式的文件拥有唯一头部特征,可精准区分可执行文件、文本文件、压缩文件,判定程序运行平台、架构位数,是文件分析的基础工具。
    2. strings工具:遍历文件二进制数据,提取所有可打印ASCII、Unicode字符,用于获取程序内置文本、函数名、作者信息、提示语句,加壳文件字符被加密,仅脱壳后可正常读取。
    3. PEiD工具:内置主流壳的特征库,通过匹配PE文件壳特征,精准识别加壳类型、壳版本、作者信息,是恶意代码混淆手段识别的专用工具。
    4. 超级巡警脱壳机:针对UPX等通用壳的压缩算法,自动逆向解压、修复PE文件头部结构、还原代码段与数据段,实现一键自动化脱壳。
    5. IDA Pro Free:静态反汇编工具,将机器码转换为汇编代码,还原函数结构、调用关系、分支流程图,可视化展示程序内部校验逻辑,是逆向分析的核心工具。
    6. md5sum工具:基于MD5哈希算法生成文件唯一摘要,用于样本唯一性校验、同源样本匹配、恶意样本溯源。
    7. Wireshark:图形化流量分析工具,可视化解析数据包,支持多条件流量筛选,直观查看网络通信细节。
    8. tcpdump/tcpflow:命令行批量流量处理工具,适合大规模流量数据的过滤、拆分、统计、去重,适配批量数据分析场景。

四、实验思路

  1. 动手实践、分析实践——rada恶意代码
    首先通过file工具确认样本基础文件属性,明确程序运行环境;再通过PEiD检测加壳类型,确认程序混淆方式;由于加壳会加密字符串与代码,导致strings工具读取乱码,因此必须使用脱壳工具完成脱壳,还原原始程序数据;脱壳成功后,通过strings、IDA Pro提取有效字符串、作者信息,结合文件特征完成样本信息汇总、功能分析、恶意分类、溯源判定。该流程是恶意代码静态分析的标准流程,先破除防护、再分析核心,可规避混淆技术带来的分析障碍。
  2. 动手实践分析Crackme程序
    实践思路:首先通过file工具确认样本基础文件属性,明确程序运行环境;再通过PEiD检测加壳类型,确认程序混淆方式;由于加壳会加密字符串与代码,导致strings工具读取乱码,因此必须使用脱壳工具完成脱壳,还原原始程序数据;脱壳成功后,通过strings、IDA Pro提取有效字符串、作者信息,结合文件特征完成样本信息汇总、功能分析、恶意分类、溯源判定。该流程是恶意代码静态分析的标准流程,先破除防护、再分析核心,可规避混淆技术带来的分析障碍。
  3. 分析实践任务二:Windows 2000系统被攻破并加入僵尸网络
    实践思路:首先掌握IRC、僵尸网络基础理论,明确通信端口、协议特征;再基于Wireshark和命令行工具,通过「IP+端口+协议」多维度筛选流量,精准定位蜜罐主机的通信对象、攻击源IP;通过端口筛选排查主机开放漏洞端口,结合流量标志位与通信行为,区分攻击类型与攻击成功率;最后通过统计命令批量统计主机数量、攻击IP数量,汇总漏洞攻击行为,完整还原僵尸网络入侵全过程。

五、实验详细过程

5.1动手实践分析rada恶意代码

(1)首先进行实验准备

  • 在学习通里下载老师给的rada压缩包,并使用共享文件夹将之导入WinXP Attacker虚拟机中:(注意勾选"在Windows客户机中映射为网络驱动器")
    image
    image
  • 因为我的虚拟机中没有解压软件,所以我下载了一个解压软件,否则无法解压压缩包。
  • 输入密码解压压缩包,将解压后的两个文件放在桌面便于查找
    image
    image
  • 打开命令提示符,切换至样本所在目录
    cd 桌面
    (2)文件类型识别
  • 终端中执行文件识别命令:
    file RaDa.exe
    file是Linux/Windows虚拟机通用的文件特征识别工具,核心原理是读取文件头部特征码,匹配系统内置的文件特征数据库,从而精准判定文件格式、运行平台、程序架构、位数与程序类型,无需运行文件即可完成基础属性检测,是二进制文件分析的第一步基础操作。
    image
    执行结果:RaDa.exe: PE32 executable for MS Windows (GUI) Intel 80386 32-bit
    结果分析:该结果明确了样本全部基础属性:① 文件格式为PE32格式,是Windows系统专属可执行文件格式;② 运行平台为MS Windows系统,仅适配Windows环境运行;③ 程序架构为Intel 80386 x86架构,32位程序;④ 程序类型为GUI图形界面程序,并非控制台程序,运行时具备窗口交互特性。该结果为后续脱壳、逆向分析提供了环境适配依据,确定本次分析需基于32位Windows环境开展。

(3)原始样本字符串提取测试(加壳状态验证)

  • 在终端执行字符串提取命令:strings RaDa.exe,读取原始未脱壳样本的可打印字符。
    strings工具的功能是遍历二进制文件数据,提取所有ASCII、Unicode可打印字符,常用于获取程序内置提示语、函数名、作者信息、配置参数等明文资源。若文件未加壳、无加密,可输出规整可读的字符串;若文件被加壳加密,原始字符会被压缩混淆,输出乱码。
    image
    image
    出现大量乱码直接证明RaDa.exe样本存在加壳混淆防护。UPX壳对程序代码段、数据段、资源段进行了压缩与加密处理,原始明文字符串被篡改、打乱,导致strings工具无法解析有效信息。该现象验证了恶意代码通过加壳实现防静态分析、防信息泄露的设计目的。若要获取样本核心信息,必须进行脱壳操作。

(4)样本加壳类型与工具检测

  • 在WinXP虚拟机中打开PEiD工具(点击开始→所有程序→PE→PEID)加载RaDa.exe样本,检测加壳类型。
    PEiD是专业的PE文件加壳检测工具,内置海量主流壳的特征指纹库,通过匹配PE文件头部结构、代码特征、区段特征,精准识别程序是否加壳、壳的具体版本、开发作者,是恶意代码混淆技术识别的专用工具,可精准定位脱壳方案。
    image
    image
    本次样本使用UPX通用压缩壳,覆盖多个UPX经典版本区间,属于网络恶意代码最常用的轻量化开源壳。UPX壳由Markus & Laszlo开发,具备压缩体积小、兼容性强、加密隐蔽性好的特点,广泛用于木马、后门程序的免杀与防逆向。精准识别壳类型后,可确定超级巡警脱壳机可完美适配该版本UPX壳,为后续脱壳操作提供技术支撑,避免脱壳工具不匹配导致脱壳失败。

(5)超级巡警脱壳机脱壳处理

  • 打开超级巡警虚拟机脱壳器(点击开始→所有程序→脱壳和加壳工具),导入加载RaDa.exe样本,点击界面“给我脱!”功能按钮,工具自动执行脱壳运算。
    超级巡警脱壳机是自动化Windows程序脱壳工具,内置UPX、ASPack、FSG等主流壳的解密算法。针对UPX壳,工具可自动解析壳的压缩规则、修复被篡改的PE文件头部、解压加密的代码与数据区段、还原程序原始文件结构,最终生成无壳、无加密的纯净可执行文件,且完整保留程序所有原始功能与内置资源。
    image
    image
    脱壳流程顺利完成,目录生成新文件RaDa_unpacked.exe,无报错、无文件损坏提示。
    脱壳工具成功识别样本UPX壳特征并完成解密重构,原始加壳保护层被完全剥离,PE文件结构恢复正常状态。脱壳后的文件不会改变程序原有功能,仅去除混淆加密防护,为后续字符串提取、作者信息溯源、代码逆向分析提供纯净的文件样本。

(6)脱壳效果验证

  • 终端执行验证命令:strings RaDa_unpacked.exe,读取脱壳后样本的可打印字符串。
    用strings工具字符提取原理,通过对比脱壳前后的字符输出结果,直观判断脱壳是否成功。脱壳成功的核心判定标准:乱码消失,出现规整可读的函数名、程序参数、文本信息、注释内容。
    image
    终端输出大量规范、可读的程序函数名、配置字符串、程序参数及文本信息,无大量乱码。
    对比脱壳前的乱码输出,本次结果充分证明脱壳操作完全成功。UPX壳的加密压缩效果被彻底解除,样本原始数据、资源、字符串全部还原,文件恢复正常可分析状态

(7)基于IDA Pro Free溯源样本编写作者信息

  • 在WinXP Attacker虚拟机中打开IDA Pro Free工具(点击开始→所有程序→反汇编),依次点击New→PE Executable,选中并加载脱壳后的RaDa_unpacked.exe,其他均默认选下一步;打开软件Strings字符串窗口,右键选择Setup设置,勾选Unicode编码适配选项,刷新字符串列表,在地址JDR0:00402D04位置读取完整作者信息。
    IDA Pro Free是专业静态逆向反汇编工具,可解析PE文件的所有字符串资源,支持ASCII、Unicode双编码适配。恶意程序的作者信息、编译注释通常以Unicode编码存储,默认状态下无法正常显示,手动勾选Unicode适配后可完整解析隐藏的文本信息。
    image
    image
    image
    image
    image
    在IDA指定内存地址JDR0:00402D04处读取到完整的RaDa恶意代码编写作者明文信息。
    脱壳后的样本无任何混淆防护,IDA工具可完整解析程序内存中存储的编译信息与作者备注信息。Unicode编码适配是本次信息读取的关键,恶意开发者为隐藏个人信息,通常会将作者信息以Unicode编码存储,未开启适配会出现字符缺失、乱码问题。
  • 此外,还可以在终端通过命令:RaDa.exe --authors,查看作者
    image
    点击确定
    image
    命令--authors是该RaDa样本预留的信息查询接口,可直接调取程序编译时写入的开发者信息。

实验小结
本次动手实践任务一完整完成了RaDa恶意样本的文件识别、加壳检测、脱壳处理、字符串提取、作者溯源全流程静态分析操作。实验过程中,通过file工具明确了样本为32位Windows GUI可执行PE文件;通过PEiD精准识别出样本采用UPX系列版本压缩壳,明确了样本的基础防分析手段;通过原始样本字符串提取出现乱码的现象,直观验证了加壳技术对恶意代码的混淆防护作用;依托超级巡警脱壳机完成自动化脱壳,并通过strings工具成功验证脱壳效果,彻底还原了样本原始资源;最后借助IDA Pro Free适配Unicode编码,精准定位并获取了恶意代码的编写作者信息。

5.2动手实践分析Crackme程序

1、crackme1.exe 实验过程与分析
(1)实验准备

  • 将学习通的crackme1.exe和crackme2.exe导入到winxp虚拟机中

(2)文件类型识别

  • 在 WinXP Attacker 虚拟机终端执行命令:file crackme1.exe
    image
    确认程序为 32 位 Windows PE文件

(3)手动试探输入格式

  • 在终端中尝试不同参数数量的输入:
    crackme1.exe 1
    crackme1.exe 1 2
    crackme1.exe 1 2 3
    crackme1.exe 1 2 3 4
    image
    输入 1 个参数:输出 Pardon?What did you say?
    输入 2 个及以上参数:输出 I think you are missing something.
    结果分析:程序对参数个数有严格校验,参数数量异常时直接报错;参数数量正确但内容错误时,也会提示错误,说明程序存在双重校验逻辑:参数个数校验 + 参数字符串匹配校验

(4)IDA Pro Free 分析

  • 打开 IDA Pro Free(方式同上),加载 crackme1.exe,切换到 Strings 窗口。
    image
    image
    关键字符串提取:
    I think you are missing something\n(参数个数错误提示)
    I know the secret(疑似正确密钥)
    Pardon?What did you say?\n(参数个数正确但内容错误提示)
    You know how to speak to programs, Mr. Reverse-Engineer\n(成功提示)
    结果分析:成功提取到程序所有明文提示与密钥,直接锁定正确输入的核心线索。

  • 在 IDA 中点击 View → Graphs → Function calls,查看程序函数调用关系。
    函数调用图展示了程序的执行流程,可快速定位控制输出的核心函数。
    image
    结果分析:程序入口 start 调用了核心校验函数 sub_401280,该函数是控制输出的关键逻辑所在。

  • 切换到 Functions 窗口,定位 sub_401280 函数。
    image
    确认 sub_401280 是程序的核心校验函数,程序的所有分支判断逻辑均在此函数中实现。

  • 双击 sub_401280 函数,查看反汇编代码。
    image
    关键代码解析:
    cmp [ebp+arg_0], 2 ; 比较参数个数argc是否等于2
    jz short loc_4012D2 ; 等于2则跳转到loc_4012D2,否则输出参数缺失错误
    程序首先校验参数个数,argc≠2 时直接输出 I think you are missing something;argc=2 时进入下一层字符串匹配校验。

  • 函数流程图分析:点击 View → Graphs → Flow chart,查看 sub_401280 函数的分支流程。
    image
    流程逻辑分析:
    第一层判断:argc == 2?
    False:输出 I think you are missing something
    True:进入第二层判断
    第二层判断:输入字符串是否等于 I know the secret?
    False:输出 Pardon?What did you say?
    True:输出成功信息 You know how to speak to programs, Mr. Reverse-Engineer
    结果分析:流程图完整展示了程序的双重校验逻辑,直接推导出正确输入规则:crackme1.exe "I know the secret"。

  • 结果验证:在终端执行命令:crackme1.exe "I know the secret"
    image
    输出 You know how to speak to programs, Mr. Reverse-Engineer,成功输出预期的成功信息,验证了逆向分析结论的正确性,crackme1.exe 破解完成。

2、crackme2.exe 实验过程与分析

  • 同理,对crackme2.exe的分析操作总体和crackme1.exe类似。

(1)文件类型识别

  • 输入命令file crackme2.exe
    image
  • 手动试探输入格式
    在终端中尝试不同参数数量的输入:
    crackme2.exe 1
    crackme2.exe 1 2
    crackme2.exe 1 2 3
    image
    输入 1 个参数:输出 I think you are missing something.
    输入 2 个及以上参数:输出 I have an identity problem.
    结果分析:与 crackme1.exe 相比,错误提示发生变化,说明程序新增了一重校验逻辑,在参数个数校验之后,增加了程序文件名校验。

(3)IDA Pro Free 分析

  • 打开 IDA Pro Free,加载 crackme2.exe,切换到 Strings 窗口。
    image
    新增关键字符串提取:
    crackmeplease.exe(疑似正确程序文件名)
    I have an identity problem.\n(文件名错误提示)
    We have a little secret: Chocolate(成功提示)
    结果分析:新增的字符串直接揭示了新增的校验逻辑:程序文件名必须为 crackmeplease.exe。
  • 在 IDA 中点击 View → Graphs → Function calls,查看程序函数调用关系。
    image
    与 crackme1.exe 类似,程序入口 start 调用了核心校验函数 sub_401280,该函数控制所有输出逻辑。
  • 切换到 Functions 窗口,定位 sub_401280 函数。
    image
    确认 sub_401280 为核心校验函数,是本次分析的重点。
  • 双击 sub_401280 函数,查看反汇编代码。
    image
    关键代码解析:
    cmp [ebp+arg_0], 2 ; 第一层:校验参数个数argc是否等于2
    jz short loc_4012D5 ; 等于2则跳转到下一层,否则输出参数缺失错误。
    程序首先执行与 crackme1.exe 相同的参数个数校验,argc≠2 时直接报错;argc=2 时进入新增的文件名校验逻辑。
  • 函数流程图分析:点击 View → Graphs → Flow chart,查看 sub_401280 函数的分支流程。
    image
    流程逻辑分析:
    第一层判断:argc == 2?
    False:输出 I think you are missing something
    True:进入第二层判断
    第二层判断:程序文件名是否为 crackmeplease.exe?
    False:输出 I have an identity problem.
    True:进入第三层判断
    第三层判断:输入字符串是否等于 I know the secret?
    False:输出 Pardon?What did you say?
    True:输出成功信息 We have a little secret: Chocolate
    结果分析:流程图完整展示了三重嵌套校验逻辑,推导出正确输入规则:
    程序文件名为 crackmeplease.exe
    命令格式为 crackmeplease.exe "I know the secret"
  • 结果验证:在终端执行重命名与运行命令
    copy crackme2.exe crackmeplease.exe
    crackmeplease.exe "I know the secret"
    image
    输出 We have a little secret: Chocolate
    结果分析:成功输出预期的成功信息,验证了逆向分析结论的正确性,crackme2.exe 破解完成。

实验小结:
本次动手实践任务二,完整完成了对 crackme1.exe 和 crackme2.exe 两个程序的静态逆向分析与破解——
crackme1.exe 分析:通过手动试探发现参数个数校验规则,再利用 IDA 的字符串窗口、函数调用图、流程图等功能,快速定位核心校验函数,推导出 argc=2 且参数为 I know the secret 的破解条件,成功输出预期信息。
crackme2.exe 分析:在前者基础上,掌握了多重嵌套校验逻辑的分析方法。通过错误提示的差异,发现新增的文件名校验逻辑,并结合 IDA 的字符串与流程图分析,推导出重命名程序文件 + 输入密钥的双重破解条件。

5.3分析实践任务一:分析恶意代码样本rada

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

  • 在虚拟机终端执行命令:md5sum RaDa.exe
    md5sum 工具通过哈希算法生成文件的唯一指纹,用于样本的唯一性标识、同源匹配与篡改校验。
    image
    该命令会输出 RaDa.exe 的 MD5 值,此值可作为样本的唯一标识符,用于在威胁情报库中检索同源样本,是恶意代码分析的基础特征信息。
  • 输入命令:file rada.exe
    判断文件类型
    image
    因此可以得到如下信息:
    文件格式:PE32 可执行文件(Windows 32 位 GUI 程序)
    架构:Intel 80386 32 位
    加壳信息:UPX 0.89.6-2.90 通用压缩壳,壳作者 Markus & Laszlo
    唯一标识:通过 md5sum RaDa.exe 生成的 MD5 哈希值,是该样本的唯一 “数字指纹”,可用于全网同源样本匹配。
    其他特征:脱壳后程序内置作者版权信息、C&C 服务器地址、注册表自启动路径等,均可作为识别同类型样本的关键依据。

(2)找出并解释这个二进制文件的目的

  • 使用Process Explorer软件(winxp虚拟机中点击所有程序、监视工具、Process Explorer)监视脱壳后的RaDa.exe
  • 运行脱壳后的 RaDa_unpacked.exe。
  • 打开 Process Explorer,找到 RaDa_unpacked.exe 进程。
  • 选择 Properties → Strings,查看进程内存中的字符串信息。
    image
    持久化相关:HKLM\Software\Microsoft\Windows\CurrentVersion\Run\RaDa
    解释:程序会在注册表启动项中写入自身路径,实现开机自启,确保系统重启后仍能保持受控状态。
    功能指令相关:download.cgi、upload.cgi、Starting DDoS Smurf remote attack...、screenshot
    解释:明确了程序具备文件上传下载、DDoS 攻击、屏幕截图等恶意功能,是典型的远程控制后门。
    作者与版权信息:Copyright (C) 2004 Raul Siles & David Perez、Scan Of The Month 32 (SoTM) - September 2004
    解释:直接揭示了程序的开发者为 Raul Siles 和 David Perez,以及其发布背景,是溯源分析的关键证据。
    运行配置相关:C:\RaDa\bin\RaDa.exe、C:\RaDa\tmp
    解释:程序会在系统中创建指定目录,存放自身副本和临时文件,实现自安装与运行日志记录。
    C&C 通信相关:http://10.10.10.10/RaDa/RaDa_commands.html
    解释:程序预设了命令与控制(C&C)服务器地址,通过 HTTP 协议接收攻击者指令。
    RaDa.exe 是一款远程控制后门(RAT)程序,其核心目的是非法入侵并持久化控制 Windows 主机。攻击者通过该程序实现对受害主机的完全控制,包括:
    接收远程指令,执行文件上传 / 下载、系统命令执行。
    发起 DDoS 攻击,将受控主机作为 “肉鸡”。
    进行屏幕截图、窃取主机信息。
    通过注册表自启动实现长期驻留,不易被用户察觉。

(3)二进制文件所具有的不同特性

  • 隐蔽性:通过 UPX 加壳压缩体积,规避静态特征查杀;运行后无明显窗口,后台静默驻留。
    持久化:通过修改注册表 Run 项实现开机自启,重启后仍能保持受控状态。
    多态功能:集成了文件管理、远程命令执行、DDoS 攻击、屏幕截图等多种恶意功能,功能全面。
    HTTP 通信:通过 HTTP 协议与 C&C 服务器通信,伪装成正常网络请求,降低被 IDS/IPS 检测的概率。
    轻量化:程序体积小,资源占用低,不易被系统资源监控工具发现。

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

  • 用PEiD工具检测
    image
    该样本使用了 UPX 压缩壳进行加壳,这是一种开源、通用的压缩壳,广泛用于恶意程序以规避静态分析和杀毒软件查杀。
    即,样本主要采用UPX 压缩加壳技术作为防分析手段:
    压缩加密:UPX 壳对程序的代码段、数据段进行压缩加密,篡改 PE 文件头部结构。在未脱壳状态下,strings、IDA 等工具无法读取程序原始字符串和代码,会出现乱码或无法解析的情况。
    特征混淆:压缩后的文件特征被改变,规避基于已知特征库的杀毒软件查杀和自动化分析工具检测,大幅提升了静态分析的难度,保护了恶意代码的核心逻辑不被轻易破解。

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

  • 分类:后门
  • 理由:
    它不具备自我复制、主动传播的能力,因此不属于病毒或蠕虫。
    其核心功能是为攻击者提供远程控制权限,而非破坏系统文件(如勒索病毒)或窃取特定信息(如盗号木马)。
    它具备典型的后门特征:持久化驻留、C&C 通信、远程指令执行,完全符合远程访问木马(RAT)的定义。

(6)相似功能的其他工具

  • Gh0st 幽灵木马:经典 Windows 远控后门,支持文件管理、远程桌面、命令执行,是早期最流行的远控工具之一。
    PcShare 后门:主打轻量、隐蔽,支持批量控机,广泛用于早期黑灰产攻击。
    DarkSpy(暗间谍):功能全面的远控工具,支持屏幕监控、键盘记录、文件操作,与 RaDa 的功能高度重合。
    BlackHorse(黑马):具备自启动、信息窃取、远程操控功能,曾是国内常见的远控木马。

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

  • 可以调查出开发作者:脱壳完成后查看Strings window或者使用--authors命令。
    需满足以下环境和限定条件:
    分析环境:必须在纯净的虚拟机环境中运行和分析,避免主机安全软件干扰或样本被篡改。
    技术前提:必须完成脱壳操作。原始加壳状态下,作者信息被加密,无法读取;只有脱壳后,才能通过静态或动态分析获取明文信息。
    工具条件:需使用 Process Explorer 等动态分析工具,或 IDA Pro 等静态逆向工具,读取脱壳后程序中的字符串资源。
    信息完整性:样本未被二次修改,原始编译时写入的版权信息、作者备注未被删除或篡改。

5.4分析实践任务二:Windows 2000系统被攻破并加入僵尸网络

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

  • IRC 是什么:IRC(Internet Relay Chat,互联网中继聊天)是一种基于 TCP/IP 的文本通信协议,最初用于多人在线聊天,因其通信稳定、架构简单,被广泛用作僵尸网络的命令与控制(C&C)通道。
    客户端入网消息:客户端连接 IRC 服务器后,首先发送 NICK 消息设置昵称,再发送 USER 消息提交用户名和主机信息,完成注册后发送 JOIN 消息加入指定频道。
    常用 TCP 端口:IRC 默认使用 6667 端口,备用端口包括 6668、6669、7000 等,僵尸网络常使用 6667 端口进行通信。

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

  • 定义:僵尸网络(Botnet)是指被攻击者通过恶意代码入侵并控制的大量主机(“肉鸡”)组成的网络。这些主机通常通过 IRC 等协议连接到控制服务器,接受攻击者的统一指令。
    用途:
    DDoS/CC 攻击:向目标网站或服务器发起大规模流量攻击。
    信息窃取:批量窃取受控主机中的敏感信息。
    垃圾邮件 / 恶意代码传播:发送钓鱼邮件或传播病毒。
    挖矿与流量刷量:利用受控主机的资源进行非法牟利。
    端口扫描与漏洞扩散:作为跳板,对其他主机发起攻击。

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

  • 首先在学习通中下载botnet_pcap_file.dat文件,并将之导入xinxp虚拟机中。
  • 在 Kali Linux 中使用 Wireshark 打开 botnet_pcap_file.dat。
  • 在筛选栏输入过滤规则:ip.src == 172.16.134.191 && tcp.port == 6667
    image
    筛选结果显示,蜜罐主机与多个目标 IP 在 6667 端口建立了 TCP 连接,其中 209.126.161.29、66.33.65.58、63.241.174.144 等 IP 均有通信记录,明确了蜜罐主机的 IRC 通信对象。
    通信过程包含 NICK、USER、JOIN 等 IRC 协议标准消息,证明主机已成功接入 IRC 网络,成为僵尸网络的一部分。
    即,蜜罐主机主要与以下 IRC 服务器进行通信:
    irc5.aol.com(对应 IP 为 209.196.44.172)
    其他辅助 IRC 服务器 IP:209.126.161.29、66.33.65.58、63.241.174.144 等
    其中 209.196.44.172 是本次僵尸网络的核心控制服务器。

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

  • 首先安装 tcpflow 工具:apt-get install tcpflow
    image
  • 拆分指定服务器流量。在桌面打开终端,输入如下命令:
    tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667'
    image
    得到三个文件如图中所示。
  • 统计不同主机数量
    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
    tcpflow:将流量文件按 TCP 流拆分,方便后续文本分析。
    grep:筛选 IRC 服务器返回的 353 消息(频道成员列表)。
    sed:从消息中提取所有频道内的主机昵称。
    sort -u | wc -l:去重并统计主机数量。
    命令执行结果为 3462,表示在观测期间,共有 3462 台不同的主机 接入了以 209.196.44.172 为服务器的僵尸网络。

(5)哪些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 >connect_host_ip.txt
wc -l connect_host_ip.txt
  • image
    tcpdump:读取流量文件,筛选所有目标地址为蜜罐主机的数据包。
    awk / cut:提取数据包的源 IP 地址。
    sort | uniq:去重得到独立攻击 IP 列表。
    wc -l:统计 IP 数量。
    生成的 connect_host_ip.txt 文件包含所有攻击蜜罐主机的 IP 地址。
    wc -l 命令输出结果为 165,表示共有 165 个独立 IP 地址 对蜜罐主机发起了攻击或扫描,所有 IP 地址已导出至 connect_host_ip.txt 文件中。
  • 打开刚才生成的connect_host_ip.txt文件可以看到这165个地址
    image

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

  • 统计 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
  • 统计 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
    由结果可以得到
    TCP 端口:135、139、25、445、4899、80
    UDP 端口:137
    135 端口(RPC 漏洞):Windows 远程过程调用服务漏洞,存在缓冲区溢出风险,可被用于远程代码执行。
    139/445 端口(SMB 漏洞):文件共享服务漏洞,如著名的 “永恒之蓝” 漏洞,可被攻击者利用进行远程文件写入和权限获取。
    25 端口(SMTP 漏洞):邮件服务漏洞,可能被用于发送恶意邮件传播病毒。
    80 端口(HTTP 漏洞):Web 服务漏洞,如目录遍历、远程文件包含等攻击,可被用于网页挂马。
    4899 端口(Radmin 漏洞):远程控制工具 Radmin 的默认端口,弱口令或存在溢出漏洞,可被攻击者直接控制主机。
    137 端口(NetBIOS 信息泄露):UDP 协议,攻击者通过扫描获取主机信息,为后续攻击做准备。

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

  • 在 Wireshark 中分别筛选 tcp.port == 135、139、25、445、4899、80 等端口的流量。

  • 135端口,只有tcp三次握手的数据包,无攻击行为
    image

  • 139端口,有TCP、SMB和NBSS类型的数据包,未发现攻击行为
    image

  • 25端口,只有tcp三次握手的数据包,无攻击行为
    image

  • 445端口攻击成功
    image
    image
    image
    在SMB协议数据包中发现PSEXESVC.EXE文件,此文件是一种通过IRC进行通信的Dv1dr32蠕虫。
    攻击者利用 Windows 2000 系统未修复的 SMB 和 RPC 高危漏洞,发送恶意数据包触发缓冲区溢出。
    成功突破系统权限限制后,攻击者植入了 IRC 僵尸程序。
    该僵尸程序主动连接 IRC 服务器 209.196.44.172,实现持久化控制,主机正式加入僵尸网络。
    验证依据:Wireshark 中观察到蜜罐主机成功与 IRC 服务器建立连接,并发送了 NICK、USER、JOIN 等注册消息,说明主机已被完全控制。

  • 4899端口,只有tcp三次握手的数据包,无攻击行为
    image

  • 在80端口:分析发现大量数据包有无效填充内容发送至靶机,且靶机发送大量的tcp错误传输反馈包,如TCP dup ack(重复应答)、TCP Out-Of-Order(报文乱序)等,故攻击者发起了缓冲区溢出攻击
    image
    image
    在追踪的数据流中发现c:\notworm,这是一个红色代码蠕虫攻击。

  • 输入ip.addr == 172.16.134.191&&tcp.srcport==80 &&http
    image
    发现蜜罐主机做的几次回应为一个iis服务器的默认页面,因此80端口并没有成功攻击。
    即在端口80攻击者发起的缓冲区溢出攻击、红色代码蠕虫攻击,但并未攻击成功。

  • udp端口137,只有NBNS包,负责在基于NetBIOS名称访问的网络上提供主机名和地址映射服务,未发现攻击行为
    image

实验小结
首先,通过 Wireshark 筛选 IRC 协议流量,明确了蜜罐主机与僵尸网络控制服务器的通信对象,并通过命令行工具统计出共有 3462 台主机接入该僵尸网络,以及 165 个 IP 地址对蜜罐发起了攻击。其次,通过端口筛选和漏洞分析,识别出攻击者针对 135、139、445、4899 等高危端口的漏洞利用行为。最后,通过 IRC 通信的建立,验证了 SMB 和 RPC 漏洞攻击的成功,证明主机已被植入僵尸程序并受控。

六、实验过程中遇到的问题及解决

  • 1.winxp虚拟机中没有解压软件,压缩包无法解压
  • 问题解决:首先尝试在虚拟机的浏览器中下载解压软件,但是总是显示网页有问题无法显示,因此,现在宿主机上下载解压软件之后,通过共享文件夹将解压程序导入虚拟机中。

七、学习收获及感想

  • 通过本次实验,在恶意代码分析相关任务中,我真切认识到加壳是恶意程序最基础的防护手段。初始未脱壳的样本字符串杂乱无章,无法读取有效信息,完成 UPX 壳脱壳后才能正常解析程序内容、作者信息与运行行为。借助 MD5 哈希值可以唯一标识恶意样本,结合进程监听工具还能挖掘程序自启动、远程通信、恶意攻击等隐藏功能,也清楚区分了后门木马、病毒、蠕虫的不同判定标准。
  • 其次,Crackme程序分析实践让我入门了程序分支校验逻辑分析。通过手动试探输入参数,再利用 IDA Pro 查看字符串、函数调用图与程序流程图,能够快速定位核心判断函数。两个测试程序校验规则层层递进,从单一参数校验升级为参数、文件名双重嵌套校验,锻炼了我的逻辑分析能力。实操中明白程序输出结果完全由内部判断条件决定,只要理清汇编逻辑与分支走向,就能反向推导出合法输入。
  • 再者,僵尸网络流量分析任务中,通过使用Wireshark工具,我熟悉了 IRC 协议通信规则与端口特征,了解到僵尸网络依托该协议实现一对多远程管控的运行模式。通过统计受控主机数量、攻击源 IP,结合开放端口匹配对应系统漏洞,完整还原出端口扫描、漏洞利用、木马植入、接入僵尸网络的攻击链路。
  • 本次实验令我收获颇丰,和之前的实验相比,本次实验让我熟练掌握了多款主流网络攻防工具的使用方法,不再机械套用命令与操作步骤,能够结合原理判断操作目的、排查简单实操问题。同时,我更加深刻地体会到,只有理解了网络攻防每一处细节原理,才能帮助我们更好地理解问题和解决问题。
posted @ 2026-05-25 21:44  jgfx  阅读(32)  评论(0)    收藏  举报