20252819 2025-2026-2 《网络攻防实践》第八周作业

网络攻防实践 实验八报告

一、实验概述

1. 实验名称

恶意代码分析与逆向工程实践

2. 实验目的

  1. 掌握恶意代码样本的静态分析方法,包括文件识别、加壳检测、脱壳处理、字符串提取与反汇编分析。
  2. 学会使用逆向工具对Crackme程序进行破解,理解程序输入验证逻辑。
  3. 掌握网络流量分析工具的使用,能够分析僵尸网络流量、识别攻击行为与受影响主机。
  4. 理解恶意代码的功能特性、抗分析技术与分类依据,提升恶意代码分析与网络攻防实践能力。

3. 实验环境

  • 主机系统:Windows
  • 虚拟机:WinXPattacker(恶意代码分析)、Kali Linux(流量分析)
  • 工具:file、strings、PEiD、超级巡警脱壳工具、IDA Pro Free、Process Explorer、Wireshark、tcpflow、tcpdump

二、实验内容与步骤

任务一:恶意代码样本RaDa分析

1. 文件基础信息获取

  1. 从学习通下载rada.rar,关闭防火墙后解压,将rada文件夹复制到WinXPattacker虚拟机桌面。
  2. 打开CMD,切换至桌面目录,使用file命令查看文件属性:
cd 桌面
file RaDa.1.exe

image

  1. 使用strings命令提取字符串,结果为乱码,判断文件已加壳。
strings RaDa.1.exe

image

  1. 使用命令--authors,查看作者信息。
rada --authors

image

  1. 使用PEiD工具检测,开始->所有程序->PE,确认加壳工具为UPX 0.89.6 - 1.02 / 1.05 - 2.90
    image

2. 脱壳处理

使用超级巡警脱壳工具RaDa.exe进行脱壳,生成脱壳文件RaDa.exe_unpacked.1
image

3. 脱壳后分析

  1. 再次使用strings命令提取脱壳后文件字符串,可正常读取函数调用、作者信息等内容。
strings RaDa.exe_unpacked.1

image

  1. 使用IDA Pro Free对脱壳文件进行反汇编分析,切换Unicode编码查看字符串,确认作者为Raul Siles & David Perez
    image
    image
    发现字符串界面与之前提取的字符串一致。
    image
    image
    通过修改编码模式为Unicode,能够看到更清晰的字符串信息,最终确认作者为Raul Siles和David Perez。
    image

image

任务二:Crackme程序逆向破解

1. Crackme1.exe分析

  1. 命令行试探输入:直接运行、带参数1/2/open等,输出固定提示语。
  2. file命令确认其为32位Windows控制台PE程序。
  3. IDA Pro反汇编,查看字符串窗口发现关键字符串I know the secret
  4. 分析流程图与strcmp函数,确认程序验证输入是否为该字符串。
  5. 验证:
crackme1.exe "I know the secret"

输出成功信息:You know how to speak to programs

2. Crackme2.exe分析

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

1. 分析 crackme1.exe

(1)命令行试探与文件识别

在 WinXPattacker 虚拟机桌面打开命令提示符,对 crackme1.exe 进行不同参数的试探性运行:

crackme1.exe
crackme1.exe 1
crackme1.exe 1 2
crackme1.exe open

运行结果仅出现 I think you are missing something.Pardon? What did you say? 两种固定提示,无法触发成功信息。
image

使用 file 命令查看文件类型,确认其为 32 位 Windows 控制台 PE 程序:

file crackme1.exe

image

输出结果:PE32 executable for MS Windows (console) Intel 80386 32-bit。

(2)IDA Pro 静态反汇编分析

将 crackme1.exe 载入 IDA Pro,打开 Strings 窗口,发现程序包含 4 条关键字符串,其中未触发的成功提示为:You know how to speak to programs, Mr. Reverse-Engineer,核心校验字符串为:I know the secret
image

通过 View → Graphs → Function calls 查看函数调用流程图,定位到输入校验函数 sub_401280,该函数内部调用 strcmp 字符串比较函数,用于验证用户输入内容。
image
view—graphs—flowchart通过IDA Pro的流程图功能,可以直观地了解程序的逻辑结构。strcmp函数的出现表明程序可能在比较用户输入与某个预设的字符串,发现程序将用户输入与字符串"I know the secret"进行比较,如果匹配,则输出"You know how to speak to programs"
image
strcmp函数的使用表明程序在检查用户输入是否为"I know the secret"。这就是需要的输入格式。

进一步查看汇编代码,程序逻辑为:

  • 检查参数数量是否合法;
  • 将用户输入参数与预设字符串 I know the secret 进行逐字符比较;
  • 程序输出"You know how to speak to programs",验证成功
    image
(3)验证正确输入

在命令行输入正确参数,完成校验:

crackme1.exe "I know the secret"

程序输出:You know how to speak to programs,破解成功。
image

2. 分析 crackme2.exe

(1)命令行试探与文件识别

对 crackme2.exe 执行多组参数测试:

crackme2.exe
crackme2.exe 1
crackme2.exe 1 2
crackme2.exe csy

image

运行结果出现 I think you are missing something.I have an identity problem. 等提示,仅输入参数无法触发成功。

使用 file 命令确认文件属性:

file crackme2.exe

结果与 crackme1.exe 一致,为 32 位 Windows 控制台 PE 程序。

(2)IDA Pro 逆向分析校验逻辑

将 crackme2.exe 载入 IDA Pro,查看 Strings 窗口可见 5 条输出字符串。分析核心校验函数 sub_401280 的汇编代码与流程图,发现程序采用双重校验逻辑:

  • 第一重校验:检查程序自身文件名是否为 crackmeplease.exe
  • 第二重校验:检查第二个输入参数是否为 I know the secret
    两层校验均通过,才会输出成功结果。
    image
    在IDA Pro中查看sub_401280代码块的反汇编代码,重点关注分支语句部分。
    image
    image
    发现程序首先检查第一个参数是否为"crackmeplease.exe",然后检查第二个参数是否为"I know the secret"。
    image
(3)破解与验证

按程序逻辑修改文件名并传入正确参数:

rename crackme2.exe crackmeplease.exe
crackmeplease.exe "I know the secret"

程序输出:We have a little secret: Chocolate,破解完成。
image

我来帮你完成这个任务。首先我需要查看你提供的参考博客和你已完成的博客内容,以便了解格式和内容要求。
我已经查看了参考博客的格式结构,但第二个链接需要登录无法访问。我将基于你提供的实验文档内容和参考博客的格式,为你生成分析实践任务一分析实践任务二的Markdown内容。


三、分析实践任务一

分析一个自制恶意代码样本rada:

1. 计算MD5摘要值

MD5摘要值是恶意代码样本的唯一标识,可以用于快速识别和比对样本。使用命令md5sum RaDa.exe,计算恶意代码样本RaDa.exe的MD5摘要值,结果显示为caaa6985a43225a0b3add54f44a0d4c7

md5sum RaDa.exe

image

  • 回答问题1:提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息

    • 摘要caaa6985a43225a0b3add54f44a0d4c7

2. 使用Process Explorer监听分析

使用Process Explorer软件监听脱壳后的RaDa_unpacked.exe文件。

发现恶意代码访问了http://10.10.10.10/RaDa网站,下载了RaDa_commands.html文件到C:\RaDa\tmp目录。

image

发现恶意代码尝试连接到内网网段192.168、172.16、10,发送恶意软件或进行DDoS攻击。还尝试使用RegWrite、RegRead、RegDelete三个方法修改注册表实现开机自启。

image

通过Process Explorer的监听结果,发现恶意代码在运行时输出了作者信息:Raul Siles和David Perez。

image

  • 回答问题2:找出并解释这个二进制文件的目的

    • 访问了http://10.10.10.10/RaDa网站,下载了RaDa_commands.html文件到C:\RaDa\tmp目录
    • 修改注册表,设置RaDa开机自启动
    • 发现恶意代码尝试连接到内网网段192.168、172.16、10
    • 具备DDoS攻击能力
  • 回答问题3:识别并说明这个二进制文件所具有的不同特性

    • 下载文件:从指定网站下载恶意文件
    • 修改注册表:设置开机自启项,确保恶意代码在系统重启后自动运行
    • DDoS攻击:通过消耗资源使目标主机瘫痪
    • 内网传播:攻击内网网段,尝试感染其他主机
  • 回答问题4:识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术

    • 使用UPX加壳工具对代码进行压缩和加密
  • 回答问题5:对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由

    • 后门程序:恶意代码通过修改注册表、下载文件和通信功能,为攻击者提供了远程访问和控制的能力。虽然它具有攻击内网网段的能力,但其主要目的不是自我复制(如病毒或蠕虫),而是提供持久化访问,所以应该是后门程序。
  • 回答问题6:给出过去已有的具有相似功能的其他工具

    • 这个问题使用了网络搜索和大模型的帮助,有以下工具:
      • Setiri及其前辈Gatslag:这些工具也具有类似的功能,通过网络通信接收指令并执行恶意操作。
      • Bobax:2004年发现的木马,通过HTTP协议从指定服务器下载命令文件并执行。
  • 回答问题7:可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?

    • 可以调查出开发作者,在本次的实验中已经使用命令行工具(如RaDa.exe --authors)直接获取作者信息。反汇编工具(如IDA Pro)分析脱壳后的代码,找到嵌入的作者信息。运行监听工具(如Process Explorer)观察恶意代码运行时输出的作者信息。这几种方法都可行。

四、分析实践任务二

在Kali虚拟机上使用Wireshark对botnet_pcap_file.dat检测日志文件进行分析。

1. IRC协议分析

  • 回答问题1:IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用哪些TCP端口?

    • IRC是一种实时通信协议,用于在线聊天和信息交流。
    • 当IRC客户端申请加入一个IRC网络时,通常会发送以下消息:
      • NICK命令:设置客户端的昵称
      • USER命令:设置客户端的用户名和真实姓名
      • JOIN命令:加入一个频道
    • IRC常用的TCP端口:
      • 6665-6669:常规IRC通信端口
      • 6697:用于SSL/TLS加密连接的备用端口
      • 7000:另一个备用端口

设置过滤条件为tcp.port == 6667,以筛选出与IRC通信相关的数据包。

ip.addr == 172.16.134.191 && tcp.dstport == 6667

image

  • 回答问题3:蜜罐主机(IP地址:172.16.134.191)与哪些IRC服务器进行了通信?

    使用Wireshark过滤条件ip.src == 172.16.134.191 && tcp.port == 6667可以看到蜜罐主机与以下IRC服务器进行了通信:

    • 209.126.161.29
    • 66.33.65.58
    • 217.199.175.10
    • 63.241.174.144

2. 安装并使用TCPflow工具

安装TCPflow工具:

sudo apt-get install tcpflow

image

使用命令提取与209.196.44.172服务器的IRC通信数据:

sudo tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"

image

使用cat命令查看生成的文件,使用grep命令提取特定的IRC消息,得到主机数量为3461:

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

image

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

    使用命令统计访问主机数量,看到共有3461台不同的主机访问了以209.196.44.172为服务器的僵尸网络。

  • 回答问题2:僵尸网络是什么?僵尸网络通常用于什么?

    • 僵尸网络是由感染恶意软件的计算机组成的网络,计算机可以被攻击者远程控制,而无需用户知情。
    • 通常用于分布式拒绝服务(DDoS)攻击,垃圾邮件和钓鱼邮件等

3. 攻击流量分析

运行命令提取目标主机的流量:

tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191' | awk -F " " '{print $3}'

image

点击IP.txt文件可以看到总共165个IP被用于攻击蜜罐主机。

image

  • 回答问题5:哪些IP地址被用于攻击蜜罐主机?

    使用tcpdump工具分析网络日志文件,提取攻击蜜罐主机的IP地址。可以在IP.txt文件找到这165个IP地址被用于攻击蜜罐主机。

利用tcpflow工具分析网络日志文件,提取攻击蜜罐主机的流量。使用命令提取TCP端口信息,使用命令提取UDP端口信息:

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 -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

  • 回答问题6:攻击者尝试攻击了哪些安全漏洞?

    • TCP端口:135、139、25、445、4899、80
    • UDP端口:137
  • 回答问题7:哪些攻击成功了?是如何成功的?

    需要逐个来分析判断每个攻击是否成功:

    (1)135端口

    只有与IP地址195.36.247.77在端口135上的TCP通信,没有明显的攻击迹象。

    ip.addr == 172.16.134.191 && tcp.port == 135
    

image

(2)139端口

数据包显示了SYN、ACK和FIN、ACK标志,表明连接尝试和终止,没有明显的攻击迹象。

image

(3)25端口

显示了SYN和ACK标志,表明正在进行TCP三次握手,没有明显的攻击迹象。

ip.addr == 172.16.134.191 && tcp.port == 25

image

(4)445端口

ACK标志,表明连接已经建立,并且查看到了PSEXESVC.EXE这一可疑的exe可执行文件,是一个恶意远控程序。

ip.addr == 172.16.134.191 && tcp.port == 445

image

进一步分析可以看到攻击者逐步获取了admin和administrator的管理员权限,实现了远程控制。

image

image

攻击者利用了SMB服务的漏洞,成功植入了恶意软件并获取了系统权限。

(5)4899端口

显示了SYN和ACK标志,表明正在进行TCP三次握手,没有明显的攻击迹象。

image

(6)80端口

发现了一个http包。

ip.addr == 172.16.134.191 && tcp.port == 80

image

跟踪数据包发现很多填充数据,但缓冲区溢出失败。

image

(7)137端口

显示了NetBIOS名称服务请求和响应,没有明显的攻击迹象。

ip.addr == 172.16.134.191 && udp.port == 137

image

五、实验遇到的问题与解决方法

  1. 问题strings提取RaDa.exe乱码。
    解决:PEiD检测为UPX加壳,使用超级巡警脱壳后再分析。
  2. 问题:crackme2无法直接通过参数破解。
    解决:IDA分析发现需先修改程序文件名。
  3. 问题:tcpflow找不到pcap文件。
    解决:切换至文件所在目录执行命令。
  4. 问题:Wireshark过滤无效。
    解决:正确使用ip.addr == 目标IP && tcp.port == 6667过滤规则。

六、实验总结

本次实验围绕恶意代码分析与僵尸网络流量取证展开,收获颇丰。
在RaDa样本分析中,通过md5sum计算哈希、strings提取字符串、Process Explorer动态监控,识别出该样本使用UPX加壳,具备下载远程指令、修改注册表自启、扫描内网及DDoS攻击能力,判定为后门程序。同时通过--authors参数及反汇编分析确认了作者信息。
在僵尸网络分析中,利用Wireshark过滤IRC流量(端口6667),发现蜜罐主机与4台IRC服务器通信;通过tcpflow提取数据,统计出3461台主机加入僵尸网络;使用tcpdump分析攻击流量,识别出165个攻击IP,涉及TCP端口135/139/25/445/4899/80和UDP端口137。其中445端口SMB攻击成功,攻击者植入PSEXESVC.EXE并获取administrator权限。
通过实验,我掌握了静态与动态分析相结合的思路,以及Wireshark、tcpflow、tcpdump等工具的协同使用方法,提升了从海量流量中定位攻击证据的能力。不足之处在于对IDA Pro反汇编和自动化取证工具的使用尚不熟练,今后需加强逆向工程和IDS工具的学习。

posted @ 2026-04-30 22:19  nepenthe词不达意  阅读(18)  评论(0)    收藏  举报