20242830 2024-2025-2 《网络攻防实践》第八周作业
20242830 2024-2025-2 《网络攻防实践》第八周作业
一、知识点梳理与总结
本次实验主要围绕恶意代码分析和网络流量分析展开。在恶意代码分析部分,我们使用工具如PEiD、binwalk、file等对rada恶意代码样本进行文件类型识别,确定其文件格式、运行平台和加壳工具。随后,利用超级巡警脱壳机等工具对样本进行脱壳处理,以恢复原始代码结构。通过字符串提取工具,如strings和Binwalk,我们分析脱壳后的文件,提取关键信息,例如作者信息、URL和命令等。同时,我们还对恶意代码的特性进行分析,判断其是否具有自我复制、网络通信、文件感染等特性,并识别其采用的防止逆向工程的技术,如加密、混淆和反调试等。此外,还对Crackme程序进行静态和动态分析,使用IDA Pro或Ghidra进行反汇编,分析关键函数和逻辑,并通过调试器观察输入输出行为,寻找正确的破解输入。
通过行为分析和代码逻辑推断恶意代码的功能,如信息窃取或远程控制,并识别其是否具有自我传播、持久化、权限提升等特性。我们还对比已知恶意工具,如Zeus和Conficker,分析其功能和行为,并尝试通过字符串、代码风格或网络行为推测恶意代码的作者身份。在网络流量分析部分,我们使用Snort工具收集的蜜罐主机网络数据源,分析IRC协议的工作原理和僵尸网络的结构、用途。通过提取IRC通信、攻击源IP和漏洞利用行为,我们研究攻击者如何利用漏洞成功入侵系统。
1. 实验环境
-
运行环境:本次实验使用VirutalBox的Windows XP虚拟机作为实验环境
-
虚拟机选择:靶机——Metasploitable;攻击机——kali
-
kali:192.168.200.5
-
winxp:192.168.200.4
-
Metasploitable:192.168.200.123
-
win2000:192.168.200.124
-
在Windows XP上已经安装Cygwin(安装包)、PEid、超级巡警脱壳器V1.3、IDA Pro(安装包)、Process Explorer(安装包)
2. 实验内容与原理
-
静态分析技术:包括反汇编、字符串提取和导入表分析等。字符串提取可从恶意代码中提取关键字符串,如网址、文件名等,这些字符串可能是恶意代码进行网络通信、文件操作的重要标识。
-
动态分析技术:涵盖文件监测、进程监测、网络活动监测和注册表监测等。通过在虚拟环境中运行恶意代码,实时监控其行为,如文件访问、进程创建、网络连接等,以判断其是否具有恶意行为。
-
脱壳技术:使用脱壳工具对加壳的恶意代码进行脱壳处理,恢复其原始代码结构,以便更深入地分析其功能和行为。
-
加壳与反壳技术:恶意代码常使用加壳技术来隐藏其真实代码和意图,常见的加壳工具有UPX、ASPack、Themida、Arxan、VMProtect等。脱壳则是逆过程,通过分析壳的特征和行为,找到脱壳的方法和工具。
-
反调试与反虚拟机技术:恶意代码可能采用反调试和反虚拟机技术来防止被分析。反调试技术可检测调试器的存在并采取措施避免被调试,反虚拟机技术则可识别是否在虚拟机环境中运行,以躲避动态分析。
-
静态分析技术:使用IDA Pro或Ghidra等工具对程序进行反汇编,将二进制代码转换为汇编指令或伪代码,分析程序的结构、函数调用关系和逻辑流程,寻找关键的验证函数和算法。
-
动态分析技术:通过调试器如OllyDbg、x64dbg运行程序,设置断点、单步执行、观察寄存器值和内存变化等,跟踪程序的执行过程,了解其运行时行为和输入输出关系,寻找正确的破解输入。
-
逆向工程技巧:包括理解汇编指令、识别常见的算法和数据结构、分析程序的保护机制等,以便更好地理解和破解程序。
| 实验内容 | 如何实现 | 其他 |
|---|---|---|
| 恶意代码分析 | 文件类型识别、脱壳处理、字符串提取、恶意代码特性、防止逆向工程的技术 | 使用工具(如 PEiD、binwalk、file)识别文件格式、运行平台和加壳工具,常见的加壳工具包括 UPX、ASPack 等,使用脱壳工具(如超级巡警脱壳机、Unpacker)对样本进行脱壳,恢复原始代码结构 |
| Crackme程序分析 | 静态分析、动态分析、验证函数分析 | 使用 IDA Pro 或 Ghidra 对程序进行反汇编,分析关键函数和逻辑,通过调试器(如 OllyDbg、x64dbg)运行程序,观察输入输出行为,寻找正确的破解输入 |
| 分析恶意代码报告 | 样本摘要、目的分析、特性识别、反分析技术、相似工具 | 通过行为分析和代码逻辑推断恶意代码的功能(如信息窃取、远程控制),通过行为分析和代码逻辑推断恶意代码的功能(如信息窃取、远程控制),通过字符串、代码风格或网络行为推测作者身份(如特定组织、个人) |
| 僵尸网络分析 | IRC协议、网络流量分析、攻击成功条件 | 了解 IRC 的工作原理(如 JOIN、PRIVMSG 消息),以及常用端口(6667、7000),使用 Snort 或 Wireshark 提取 IRC 通信、攻击源 IP 和漏洞利用行为 |
-
IDAPro:交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA Pro,或简称为IDA。IDA Pro是一款交互式的,可编程的,可扩展的,多处理器的,交叉Windows或Linux WinCE MacOS平台主机来分析程序,被公认为最好的花钱可以买到的逆向工程利器。
-
超级巡警脱壳器:超级巡警虚拟自动脱壳机是一款实用的脱壳工具,可以轻松脱去各种加密壳。支持超过100类的壳,该工具完全基于虚拟机技术,对各种已知未知壳进行脱壳处理,适合病毒分析中对加壳的木马样本进行脱壳处理。
-
Process Explorer:由Sysinternals开发的Windows系统和应用程序监视工具,不仅结合了Filemon(文件监视器)和Regmon(注册表监视器)两个工具的功能,还增加了多项重要的增强功能。包括稳定性和性能改进、强大的过滤选项、修正的进程树对话框(增加了进程存活时间图表)、可根据点击位置变换的右击菜单过滤条目、集成带源代码存储的堆栈跟踪对话框、更快的堆栈跟踪、可在 64位 Windows 上加载 32位 日志文件的能力、监视映像(DLL和内核模式驱动程序)加载、系统引导时记录所有操作等。
二、实验过程
1.任务一:对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者
在主机上下载解压rada压缩包,然后直接复制文件夹粘贴到虚拟机中,先定位到对应文件夹,然后输入命令file Rada.exe,即可看到文件的类型。可看出这是一个32位的可执行程序。

输入指令 cat Rada.exe,发现显示文件内容为乱码

因此我们判断出是加壳了
1.1 使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具
- 获取该PE文件的详细信息以便我们脱壳,用PEiD打开RaDa.exe,可以发现,RaDa.exe使用了0.89.6版本的UPX压缩壳

1.2 使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理
需要指定RaDa.exe的位置然后点击”给我脱“便可以完成脱壳,根据程序的输出信息,可以发现脱壳后的RaDa.exe的文件名为
RaDa_unpacked.exe


1.3 使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁
我们通过 strings 命令对脱壳后的样本进行分析,为了便于我们寻找编写作者的名字,我们将strings命令得到的结果通过管道传送给 more 进行处理
strings RaDa_unpacked.exe | more

可看到大量函数调用名\字符串,但并无作者信息,使用IDA Pro Free 工具,获取脱壳后Rada.exe的相关信息

我们就可以找到作者的名字:Raul Siles && David Perez

-
Rada.exe的文件格式为32位的PE可执行文件,运行平台为32位的Windows系统,使用了0.89.6版本的UPX压缩壳
-
Rada.exe的作者为Raul Siles && David Perez
2.任务二:分析Crackme程序
2.1在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息
- 在主机中下载资源,复制到虚拟机
首先我们运行一下crackme1.exe,分别给该程序不传入参数、传入一个参数、传入两个参数,观察该程序的输出结果

2.2 实验步骤
- 我们使用IDA Pro打开该程序,并查看程序所包含的字符串,可以找到对应的字符串

- 双击一个圈出的字符串,IDA会自动跳到程序中对应的地方。可以发现,如果可以输入正确的参数,应该可以输出‘You know how to speak to programs, Mr.Reverse-Engineer’,而且很有可能这个正确的参数就为字符串‘I know thesecret’,使用IDA Pro查看sub_401280这个函数

-
我们查看函数列表,此exe执行程序的函数调用图,可以找到sub_401280这个函数,点击界面顶部目录中的View——Graphs——Flow chart

-
若命令行输入参数个数为2(crackme1.exe也算一个参数),则跳转至loc_4012D2。然后比较第二个参数是否为”I know the secret”:若是,则跳转至loc_401310,并输出You know how to speak to programs, Mr. …;反之,走左边的false,输出Pardon? What did you say?若命令行输入参数个数不为2,则输出I think you are missing something.
-
双击函数名可以转到该函数对应的汇编代码,我们给程序传入参数“I know the secret”,具体命令如下:
crackme1.exe "I know the secret"
-
另一个也同理操作:
cp crackme2.exe crackmeplease.exe crackmeplease.exe "I know the secret"

- 使用IDA Pro工具分析crackme2.exe
Strings窗口发现五个字符串,其中 I think you are missing something.和I have an identity problem.在进行参数猜测时出现过


-
输入2个参数,第一个参数错误,第二个参数正确,输出判断是参数正确,内容错误。可知,直接输入crakmeplease.exe时,系统识别不了,会显示 ‘crackmeplease.exe’ 不是内部或外部命令,也不是可运行的程序或批处理文件。所以输入cp crackme2.exe crackmeplease.exe。


3.任务三:分析一个自制恶意代码样本rada,并撰写报告
3.1 提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息使用命令计算RaDa.exe的md5值,其值为caaa6985a43225a0b3add54f44a0d4c7
md5sum RaDa.exe

3.2 找出并解释这个二进制文件的目的
打开process explorer进行监听,运行RaDa_dump.exe,查看Strings

该程序会访问10.10.10.10/RaDa这个链接,并从RaDa_commands.html中获取相应的指令。在文件操作方面,该程序在系统的C盘根目录下创建了一个名为RaDa的文件夹,其中有tmp和bin两个文件,其中bin中的文件即为RaDa.exe,可以推测程序运行后会自动将自己复制到C:\Rada\bin目录中。它还判断当前环境是否是在虚拟环境下,如果不是,就进行DDos泛洪攻击,占据目标主机的资源,然后还修改了注册表,用Wscript.Shell对象读写 Wscript.Shell有三个方法,分别是RegWrite、RegRead、RegDelete。

该程序是一个后门程序。它能够使远程的攻击者控制系统,通过程序主动访问10.10.10.10/RaDa的方式获取攻击者的指令。
3.3 识别并说明这个二进制文件所具有的不同特性
-
当文件被执行时,其将自身安装到系统中,并修改注册表使得系统启动时执行该文件。
-
文件被执行后,将通过浏览器上网,请求页面并获得来自攻击者的指令。
-
文件运行使,支持put上传、get下载、screenshot截屏、sleep挂起等指令。
3.4 识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术
-
程序通过UPX加壳的方式对程序的机器指令进行了保护,这样在进行安全分析时实现需要进行脱壳然后才能够反汇编分析其中的内容。
-
程序主动通过HTTP协议和10.10.10.10的网站进行通信,获取相应的攻击指令,这样通过反弹连接的方式可以防止防火墙对攻击数据包进行过滤。
3.5 对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
这是一个后门程序,它采取了多种方法防止被分析或逆向工程。程序自动运行并从对应IP地址获取攻击指令并执行这些攻击指令。之所以说它不属于病毒或蠕虫,是因为它们有传播、感染、隐藏的性质,而说它不是木马,则是因为它是一个独立的程序,并没有隐藏在正常的程序中欺骗用户运行。
3.6 给出过去已有的具有相似功能的其他工具
特洛伊木马Setiri
僵尸程序Gatslag
僵尸程序Zeus
3.7 可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以,作者为Raul Siles & David Perez。
环境条件是:直接输入RaDa -authors命令、直接反编译该脱壳文件、使用监听工具Process Explorer
4.任务四:分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。回答下列问题

4.1 IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC(Internet Relay Chat):因特网中继聊天,是一种应用层的协议。其主要用于群体聊天,但同样也可以用于个人对个人的聊天。IRC使用的服务器端口有6667(明文传输,如 irc://irc.libera.chat )、6697(SSL加密传输,如ircs://irc.libera.chat:6697 )等。IRC服务器明文传输通常在6667端口监听,也会使用 6660—6669 端口。当攻击者滥用IRC构建僵尸网络时,可能使用任意的端口构建IRC僵尸网络控制信道。
4.2 僵尸网络是什么?僵尸网络通常用于什么?
-
僵尸网络(BotNet)是指攻击者(botmaster)出于恶意目的,传播僵尸程序(Bot)控制大量主机(Zombie,傀儡主机、肉鸡),并通过一对多的命令与控制信道所组成的网络。
-
僵尸网络构成了一个攻击平台,利用这个平台可以有效地发起各种各样的攻击行为,可以导致整个基础信息网络或者重要应用系统瘫痪,也可以导致大量机密或个人隐私泄漏,还可以用来从事网络欺诈等其他违法犯罪活动。
-
可以用来窃取秘密,Botnet的控制者可以从僵尸主机中窃取用户的各种敏感信息和其他秘密,例如个人帐号、机密数据等。同时bot程序能够使用sniffer观测感兴趣的网络数据,从而获得网络流量中的秘密。
-
利用Botnet发动DDos攻击是当前最主要的威胁之一,攻击者可以向自己控制的所有bots发送指令,让它们在特定的时间同时开始连续访问特定的网络目标,从而达到DDos的目的。
4.3 蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
使用Wireshark打开数据文件botnet_pcap_file.dat,根据题目要求应该过滤源IP地址为172.16.134.191,又因为是IRC通信,所以应该过滤目的端口为6667或6697。具体过滤条件如下:
ip.src == 172.16.134.191 && tcp.dstport == 6667 || tcp.dstport == 6697

4.4 在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
在Kali上对捕获到的数据包进行分流,指令如下
tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667‘

cat 209.196.044.172.06667-172.016.134.191.01152 | grep --text '^: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

总共有3461台不同的主机访问了以209.196.44.172为服务器的僵尸网络
4.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 > honey.txt;wc -l honey.txt
输出165表示共有165个IP被用于攻击蜜罐主机


4.6 攻击者尝试攻击了那些安全漏洞?
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

筛出的TCP端口有:
135(rpc)、139(netbios-ssn)、25(smtp)、445(smb)、 4899(radmin)、 80(http)、UDP端口有:137端口
4.7 那些攻击成功了?是如何成功的?
依次通过命令过滤对指定端口的数据流量进行分析
针对135端口,仅仅正常握手

针对139端口,与多个蜜罐主机建立连接,但都被主机识别并发RST数据包

对于端口25,没有发现攻击行为

端口445,有psexesvc.exe文件,是进行远程连接的工具

端口4899,是Radmin远程控制工具控制蜜罐主机

端口80,发现缓冲区溢出攻击相关数据

端口137,是netblogs名称服务器,获取用户信息。

三、学习中遇到的问题及解决
-
问题1:在使用Metasploitable2-Linux,攻击机无法Ping通靶机IP。
问题一 -
问题1解决方案:将Metasploitable2-Linux接入桥接网卡,然后通过命令 sudo /etc/rc.local ,修改其中包含ipconfig的命令使得IP地址符合桥接网络的IP范围并使网关为桥接网络的网关。
-
问题二:一开始我用kali连接靶机的时候ping不通,无法进行漏洞攻击
问题二 -
问题二解决方案:结果后来我发现是因为之前在教室为了连接校园网,我在笔记本的网络配置里面将VMware的虚拟网络全部禁用了,导致msfconsole功能无法使用,我将它们全部开启就完成了本次实验。
四、学习感悟与思考
通过本次实验,我对恶意代码分析和网络流量分析有了更深入的理解。在分析 rada 恶意代码时,我意识到静态和动态分析的结合是关键,脱壳和字符串提取能够帮助快速定位样本的用途和作者信息。而在 Crackme 程序的分析中,我体会到逆向工程的复杂性,需要耐心和逻辑推理才能找到正确的破解输入。僵尸网络的分析让我认识到网络流量中隐藏的威胁,以及 IRC 协议在僵尸网络中的重要性。
除此之外,我掌握了多种分析工具的使用方法,如 IDA Pro、脱壳软件、Snort,并加深了对恶意代码行为和网络攻击的理解。通过这些实验,我认识到安全分析不仅需要技术能力,还需要对协议、漏洞和攻击行为的全面了解。

浙公网安备 33010602011771号