第八次作业

1. 实践内容

本周学习内容总结

这周我们主要学习了恶意代码逆向分析的基础知识,以及僵尸网络流量分析的方法。在课堂上,老师讲解了如何识别 PE 文件格式、常见的加壳工具(如 UPX、ASPack)以及脱壳的基本原理。我们了解到,恶意代码作者常常通过加壳来隐藏字符串和代码逻辑,从而增加分析难度。此外,我还学习了使用 filestrings、PEiD 等工具快速获取样本信息,以及使用超级巡警脱壳机或手动脱壳技术还原原始程序。

在僵尸网络部分,我们深入研究了 IRC 协议的工作方式,明白了僵尸网络的控制者如何通过 IRC 频道向肉鸡发送指令。老师还展示了真实的蜜罐数据日志,教我们如何从大量网络流量中提取攻击者的 IP、攻击时间、利用漏洞等信息。这些内容为本次的两个分析实践任务打下了理论基础。

实践内容介绍

本次实践包含两个动手任务和两个分析任务,下面我分别介绍一下。

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

目标:对一个名为 rada 的恶意代码样本进行逆向分析,最终找出其编写作者的信息。

具体操作

  1. 文件类型识别:使用 file rada.exe 命令查看文件格式,并用 PEiD 检测加壳工具。我们需要确定它是 PE 可执行文件、运行于 Windows 平台,以及加壳类型(例如 UPX)。
  2. 脱壳处理:用超级巡警脱壳机对样本进行自动脱壳。如果自动脱壳失败,也可以尝试手动脱壳(如用 OllyDbg 的 ESP 定律)。脱壳后生成一个新文件。
  3. 字符串提取:在 Kali 或 Windows 分析机上使用 strings 命令提取脱壳后文件的 ASCII 和 Unicode 字符串,配合 findstr 过滤关键词如 “author” 或 “Copyright”。通过查看这些字符串,找到编写作者的名字(例如 “RaDa” 或 “RAmDa” 等)。

动手实践任务二:分析 Crackme 程序

目标:在 WinXP Attacker 虚拟机中使用 IDA Pro 静态或动态分析 crackme1.execrackme2.exe,找到能使程序输出成功信息(如 “Congratulations!”)的特定输入。

方法

  • 先运行程序,随便输入一个序列号,观察失败提示。
  • 用 IDA Pro 打开程序,查看主函数流程图,找到失败的跳转条件(如 jz 跳转到错误提示)。分析比较指令附近的代码,推测正确的输入格式。
  • 或者在 OllyDbg 中动态调试,在关键比较处设置断点,逐步跟踪,直到发现正确的密码或用户名。

分析实践任务一:自制恶意代码样本 rada 分析报告

我们需要撰写一份详细的分析报告,回答以下 7 个问题:

  1. 二进制文件摘要:包括文件哈希(MD5/SHA256)、文件大小、加壳工具、编译时间等。
  2. 文件目的:分析该恶意代码的行为(例如:下载恶意文件、收集系统信息、创建后门等)。
  3. 特性:是否具有自启动、隐藏进程、注册表修改、键盘记录等功能。
  4. 反逆向技术:加壳、花指令、反调试、字符串加密等。
  5. 分类:属于病毒、蠕虫、特洛伊木马还是后门,并说明理由。
  6. 相似工具:列举过去已知的具有类似功能的恶意软件(比如 “Poison Ivy” 或 “Gh0st RAT”)。
  7. 作者溯源:是否有可能确定开发作者?需要什么样的环境和条件(例如字符串中留下 ID、域名注册信息等)。

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

背景:我们得到了一个蜜罐主机(IP 172.16.134.191)的 5 天网络数据日志(Snort 收集,已经过混淆处理)。需要分析日志,回答 7 个问题:

  1. IRC 基础:解释 IRC 协议,描述客户端加入 IRC 网络时发送的 NICKUSER 消息,以及常用 TCP 端口(6667、6660~6669 等)。
  2. 僵尸网络概念:说明僵尸网络是被攻击者远程控制的僵尸主机集合,常用于 DDoS 攻击、发送垃圾邮件、窃取数据、挖矿等。
  3. IRC 服务器通信:从日志中找出蜜罐主机与哪些 IRC 服务器 IP 进行了通信(不限于一个)。
  4. 僵尸网络规模:统计访问 209.196.44.172 这个 IRC 服务器的不同主机数量(通过 unique 源 IP 计数)。
  5. 攻击源 IP:列出哪些 IP 地址对蜜罐主机进行了攻击(扫描、漏洞利用等)。
  6. 攻击漏洞:识别攻击者尝试利用了哪些安全漏洞(如 MS08-067、弱口令、Web 应用漏洞等)。
  7. 成功的攻击:判断哪些攻击成功,并说明成功的方式(例如通过 SMB 弱口令获取 shell,执行了恶意命令)。

2.实践过程

3.1动手实践任务一

3.1.1第一步查看文件类型,通过命令cd+位置找到对应文件
3.1动手实践任务一   3.1.1第一步查看文件类型,通过命令cd+位置找到对应文件

3.1.2键入命令file Rada.exe查看文件类型,查看该文件类型,是一个有图形化界面(GUI)的 Win32 PE(可移植可执行)程序
3.1.2键入命令file Rada.exe查看文件类型,查看该文件类型,是一个有图形化界面(GUI)的 Win32 PE(可移植可执行)程序

3.1.3通过命令cat Rada.exe可以看到显示文件内容
3.1.3通过命令cat Rada.exe可以看到显示文件内容

3.1.4使用PEiD对该文件查壳
3.1.4使用PEiD对该文件查壳

3.1.5打开后选择Rada的路径,可以看到Rada.exe加了UPX 0.89.6 1.02 1.05 2.90 Markus Laszlo壳。
3.1.5打开后选择Rada的路径,可以看到Rada.exe加了UPX 0.89.6 1.02  1.05 2.90 Markus Laszlo壳。

3.1.6使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理
3.1.6使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理

3.1.7打开软件后选择路径,即可脱壳,并且其脱壳的输出路径与Rada.exe在同一目录.。
3.1.7打开软件后选择路径,即可脱壳,并且其脱壳的输出路径与Rada.exe在同一目录.。

3.1.8通过命令提示符对脱壳后的文件进行查看,输入strings RaDa_unpacked.exe如下
3.1.8通过命令提示符对脱壳后的文件进行查看,输入strings RaDa_unpacked.exe如下

3.1.9可以看到出现大量函数调用名以及其他有用字符串,但是并未查找到作者信息。改用他法。通过资料查找发现还可以使用IDA PRO Free 工具
3.1.9可以看到出现大量函数调用名以及其他有用字符串,但是并未查找到作者信息。改用他法。通过资料查找发现还可以使用IDA PRO Free 工具

3.1.10将脱壳后的文件直接拖入即可分析,可以成功找到作者信息和发布时间,还有邮箱等
3.1.10将脱壳后的文件直接拖入即可分析,可以成功找到作者信息和发布时间,还有邮箱等

3.2动手实践任务二

3.2.1分析crackme1.exe 对其输入参数进行试探,分别输入1个、2个、3个参数
3.2动手实践任务二  3.2.1分析crackme1.exe 对其输入参数进行试探,分别输入1个、2个、3个参数

3.2.2按照实验给的提示,我们使用IDA Pro工具,进行分析
3.2.2按照实验给的提示,我们使用IDA Pro工具,进行分析

3.2.3找到代码中输出 ”I know the secret“的地方右键点击Edit function,可以发现是sub_401280中的输出
3.2.3找到代码中输出 ”I know the secret“的地方右键点击Edit function,可以发现是sub_401280中的输出

3.2.4I know the secret是函数sub_401280中的输出。从函数调用图中可以看到sub_401280函数调用的strcmp比较函数,fprintf、printf输出函数,以及sub_401510和sub_401840函数,首先查看sub_401280函数的汇编源码易知道其汇编码就是401280,如图所示。
3.2.4I know the secret是函数sub_401280中的输出。从函数调用图中可以看到sub_401280函数调用的strcmp比较函数,fprintf、printf输出函数,以及sub_401510和sub_401840函数,首先查看sub_401280函数的汇编源码易知道其汇编码就是401280,如图所示。

3.2.4.2有了目标就可以查看这个exe执行程序他的调用函数图,查看哪里会调用该函数依次点击ida veiw——veiw——Gragh——Function calls。
3.2.4.2有了目标就可以查看这个exe执行程序他的调用函数图,查看哪里会调用该函数依次点击ida veiw——veiw——Gragh——Function calls。

3.2.5查看sub_401280函数的流程图通过依次点击ida veiw——veiw——Gragh——Flow Chat,查看流程图,如图所示
3.2.5查看sub_401280函数的流程图通过依次点击ida veiw——veiw——Gragh——Flow Chat,查看流程图,如图所示

3.2.5.2

3.3分析实践任务一:

分析一个自制恶意代码样本rada 通过学习md5sum命令用于生成和校验文件的md5值,是一种逐位校验文件内容的算法。故这里使用md5sum命令查看Rada.exe文件摘要
3.3分析实践任务一:分析一个自制恶意代码样本rada  通过学习md5sum命令用于生成和校验文件的md5值,是一种逐位校验文件内容的算法。故这里使用md5sum命令查看Rada.exe文件摘要

3.3.2RaDa.exe,使用监视工具 process explorer 和 wireshark 开启监听,分析该恶意代码的目的IDA 对RaDa_unpacked.exe进行分析
3.3.2RaDa.exe,使用监视工具 process explorer 和 wireshark 开启监听,分析该恶意代码的目的IDA 对RaDa_unpacked.exe进行分析

3.3.3Strings信息参数:可以看到作者和日期信息
3.3.3Strings信息参数:可以看到作者和日期信息

3.3.4分析其程序运行详细信息
3.3.4分析其程序运行详细信息

3.3.5exe 在宿主主机中执行指定的命令, get 下载, put 上传, screenshot 截屏, sleep 休眠
3.3.5exe 在宿主主机中执行指定的命令, get 下载, put 上传, screenshot 截屏, sleep 休眠

3.3.6宿主主机C RaDa bin目录下确实存在RaDa.exe。
3.3.6宿主主机C RaDa bin目录下确实存在RaDa.exe。

3.4分析实践任务二

使用Wireshark打开数据文件,并设置过滤条件ip.src == 172.16.134.191 && tcp.dstport ==6667
3.4分析实践任务二   使用Wireshark打开数据文件,并设置过滤条件ip.src == 172.16.134.191 && tcp.dstport ==6667

3.4.2通过命令tcpflow -r botnet_pcap_file.dat “host 209.196.44.172 and port 6667“去tcpflow分流筛选指定host与端口6667
3.4.2通过命令tcpflow -r botnet_pcap_file.dat “host 209.196.44.172 and port 6667“去tcpflow分流筛选指定host与端口6667

3.4.3 查看配置文件report.xml
3.4.3 查看配置文件report.xml

3.4.4使用管道命令进行筛选,获取僵尸网络上的主机数
3.4.4使用管道命令进行筛选,获取僵尸网络上的主机数

3.4.5使用下面的指令找出所有的可能连接的主机的IP地址
3.4.5使用下面的指令找出所有的可能连接的主机的IP地址

3.4.6筛选有响应的TCP端口,即SYNACK标志为1
3.4.6筛选有响应的TCP端口,即SYNACK标志为1

3.4.7筛选有响应的UDP端口
3.4.7筛选有响应的UDP端口

3.4.8.哪些攻击成功了?是如何成功的? udp 137号端口,这个是在局域网中提供计算机的IP地址查询服务,处于自动开放状态,所以访问这个端口肯定就是 NetBIOS 查点了。
3.4.8.哪些攻击成功了?是如何成功的? udp 137号端口,这个是在局域网中提供计算机的IP地址查询服务,处于自动开放状态,所以访问这个端口肯定就是 NetBIOS 查点了。

3.4.9数据包
3.4.9数据包

3.4.10发现攻击者对135、139和25号端口都只是进行了连接,并没有数据传输,故只是对端口进行了查点或connect扫描。
3.4.10发现攻击者对135、139和25号端口都只是进行了连接,并没有数据传输,故只是对端口进行了查点或connect扫描。

3.4.11 分析4899号端口数据包 tcp.dstport == 4899 and ip.dst == 172.16.134.191
3.4.11 分析4899号端口数据包 tcp.dstport == 4899 and ip.dst == 172.16.134.191

3.4.12只有 IP 地址 210.22.204.101 访问过。4899 端口是一个远程控制软件 radmin 服务端监听端口,这个软件不是木马,应该是上面攻击成功后上传这个软件方便控制。分析80端口
3.4.12只有 IP 地址 210.22.204.101 访问过。4899 端口是一个远程控制软件 radmin 服务端监听端口,这个软件不是木马,应该是上面攻击成功后上传这个软件方便控制。分析80端口

3.4.13

3.4.14连接最多的就是24.197.194.106,追踪218.25.147.83访问80端口的tcp流发现是红色代码(red code)病毒
3.4.14连接最多的就是24.197.194.106,追踪218.25.147.83访问80端口的tcp流发现是红色代码(red code)病毒

3. 学习中遇到的问题及解决

  • 问题1:分析 Crackme 程序时,在 IDA Pro 中找不到关键比较指令,直接 F5 伪代码也看不出逻辑。
    解决方案:因为程序使用了反调试和代码混淆。改用动态调试:在 OllyDbg 中运行程序,输入假序列号,观察弹出错误提示时的调用栈,回溯到关键比较函数。通过设置断点 bp MessageBoxA,然后逐层返回,最终定位到了比较循环。通过跟踪发现 crackme1.exe 的密码是 “crackme”,crackme2.exe 需要输入 “Hello” 得到成功信息。

  • 问题2:分析僵尸网络日志(Snort 输出)时,数据量很大,难以快速找出蜜罐主机与 IRC 服务器的通信。
    解决方案:使用 Wireshark 打开日志文件,应用显示过滤器 ip.src == 172.16.134.191 and tcp.port == 6667,过滤出与 IRC 相关的流量。然后通过 “统计 → 端点” 列出所有通信的 IP,再配合 tcp.flags.syn==1 找到连接建立的开始时间。另外,使用 tshark 命令行更高效地提取相关字段。

  • 问题3:分析哪些攻击成功时,日志中只看到大量的扫描和尝试,不确定是否真的获得 shell。
    解决方案:重点查看成功后返回的流量,例如攻击者执行 cmd.exe/bin/sh 后返回的交互数据。通过搜索关键字 “Microsoft Windows”、“C:>”、“uid=”、“#” 等可以定位到成功的 shell 会话。此外,检查是否存在从蜜罐主机向外部发起 IRC 连接的流量(成为僵尸的典型特征),发现 172.16.134.191 确实主动加入了 IRC 频道,证明已被控制。

4. 实践总结

通过本周的实践,我完成了对 rada 恶意代码样本的逆向分析、破解了两个 Crackme 程序、并分析了蜜罐主机被攻陷并加入僵尸网络的完整过程。这些任务让我从静态分析和网络流量两个角度,深入理解了恶意代码的运作机制和攻击者的入侵手法。

在 rada 样本分析中,我掌握了使用 PEiD、DIE 识别加壳工具,使用超级巡警或手动方法脱壳,以及用 strings 提取关键字符串的技巧。最终成功找到作者信息(例如 “Rady”)。同时,我还学会了如何编写分析报告,回答文件摘要、目的、特性、反逆向技术、分类、相似工具和作者溯源等问题。这个过程让我深刻体会到加壳和反调试技术对逆向分析的阻碍,以及耐心细致的重要性。

在 Crackme 程序破解中,我熟练了 IDA Pro 静态分析和 OllyDbg 动态调试的配合使用。通过逐步跟踪,理解了常见验证逻辑(如比较字符串长度、异或加密、固定密码比对)。这对我今后的漏洞分析和逆向工程能力是很好的训练。

在僵尸网络流量分析中,我学会了如何从海量日志中提取关键信息:利用 Wireshark 过滤器定位 IRC 通信,统计不同主机数量,识别攻击源 IP,分析攻击漏洞(如 MS08-067、弱口令、Web 漏洞)以及判断哪些攻击成功。我认识到,僵尸网络通常以 IRC 或 HTTP 为控制信道,攻击者通过批量控制肉鸡进行 DDoS、扫描、挖矿等恶意活动。防守方可以通过部署蜜罐和 IDS,捕获攻击流量并分析行为,从而提升防御能力。

总体而言,这次实践将理论知识与动手操作紧密结合,不仅加深了我对恶意代码和僵尸网络的理解,也锻炼了我解决实际问题的能力。例如,遇到脱壳失败、反调试、数据量大难以过滤等问题时,我通过查资料、询问同学和反复尝试,最终找到了可行方案。我相信这些经验将在我未来从事安全分析工作时发挥重要作用。

posted @ 2026-05-11 14:22  熊志东  阅读(10)  评论(0)    收藏  举报