20222424 2024-2025-1 《网络与系统攻防技术》实验四实验报告
20222424 2024-2025-1 《网络与系统攻防技术》实验四实验报告
1.实验内容
- 恶意代码文件类型标识、脱壳与字符串提取。
- 使用IDA Pro静态或动态分析,寻找特定输入,使其能够输出成功信息。
- 分析恶意代码样本rada,并撰写报告。
- 取证分析实践——Windows 2000系统被攻破并加入僵尸网络
2.实验过程
2.1恶意代码文件类型标识、脱壳与字符串提取
2.1.1使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具
解压下载的rada压缩文件:
输入file RaDa.exe,查看该文件类型:
可以看到是一个有图形化界面(GUI)的 Win32 PE(可移植可执行)程序。其中 PE32 表示这是一个32位的运行在windows操作系统上的程序, GUI 表示这个程序是一个有图形界面的程序, intel 80386 表示处理器架构。
输入命令strings RaDa.exe查看RaDa.exe中的可打印字符:
发现全是乱码,这说明软件被加壳,需要脱壳。
输入命令RaDa --authors可以查看作者信息
使用 PEiD 工具查看 RaDa.exe 的基本信息:
可以看到文件的入口点、偏移、文件类型、EP段、首字节以及加壳类型等信息(UPX壳,版本为 0.89.6 )
2.1.2使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理
使用超级巡警工具对文件进行脱壳,选择rada.exe :
脱壳成功,恶意程序同目录下生成了一个脱壳以后的程序。
再次使用 strings RaDa_unpacked.exe 命令查看脱壳后的RaDa.exe,可以看到产生大量函数调用名以及其他有意义的字符串:
再次使用PEiD工具来查看脱壳后的程序:
2.1.3使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁
使用IDA对其进行分析,结果如下:
在string窗口中,右键setup,将Unicode勾选上:
发现作者为Raul Siles & David Perez与命令行中得到的authors信息一致:
2.2使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息
2.2.1
计算crackme1.exe和crackme2.exe的 md5 值以检查完整性:
使用 file 命令来分析恶意程序的信息:
可以看到两个文件是32位 windows 下 PE 文件,没有图形界面,是命令行程序。
运行crackme1.exe文件,通过输入不同的数字和字符串,试探其输入格式。观察输出,只有两种,根据输出的提示,可以判断该程序的输入为一个参数,但是不清楚输入值数据类型为字符还是数字。
利用 IDA Pro 打开crackme1.exe程序进行分析:
打开 Strings 窗口:
可以看到除了上面输出提示的两句话,还有另外两句。
在view->graphs->function calls中查看函数调用图:
可以看出验证的部分在sub_401280这里,它调用了strcmp函数和输出函数printf,应该适用于判断输入并打印提示信息。
在View->Graphs->Flow chart中查看流程图:
cmp [ebo+arg_0],2 为判断程序是否有两个参数。如在命令行输入 crackme1.exe 1 ,那么参数对应的值为 argc=2,argv={”crackme1.exe”,”1”} 。如果有两个参数,那么进行下一步判断,否则直接跳到004012B0,打印I think you are missing something.。程序用 I know the secret 对应的字符串和用户输入的口令相比较,通过比较的结果反馈口令是否正确。所以可以猜测“I know the secret”和“You know how to speak to programs, Mr. Reverse-Engineer”两个字符串分别是口令和输入正确口令时程序的提示信息。
在终端中按照程序中出现的明文字符串口令进行验证:
可以看到验证成功!
继续使用IDA Pro对crackme2.exe程序进行分析:
可以看到明文字符串。
再看函数调用图,发现函数还是sub_401280:
通过 cmp [ebp+arg_0],2 判断程序参数是否为两个;通过参数个数的判断后,接着用strcmp函数对argc里面的第一个字符串,即程序名,和 crackmeplease.exe 进行判断
通过对流程图分析,发现应该现将其改名为crackmeplease.exe,然后输入口令才能得到正确结果。
可以看到验证成功!说明之前的猜想是正确的。
2.3分析一个自制恶意代码样本rada,并撰写报告,回答问题。
使用MD5对该恶意程序进行摘要信息分析:
使用file命令,查看该文件相关信息:
使用IDA 对RaDa_unpacked.exe进行分析:
查看Strings,可以看到作者、日期等信息
打开Process Explorer,点击运行恶意程序脱壳后的RaDa_unpacked.exe。在Process Explorer 中,查看strings进行分析:
发现其使用http连接到目标为10.10.10.10的主机下的一个名为RaDa_commands的网页上,然后下载上传文件,并且在靶机上创建一个文件夹“C:/RaDa/tmp”来保存其下载的文件。同时该恶意程序中可执行DDos拒绝服务攻击。该恶意程序对主机注册表进行了读写和删除操作:该恶意程序对主机注册表进行了读写和删除操作。
还可以发现了和作者、数据库查询语句相关的信息。
在主机C盘目录下,看到生成的文件:
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
摘要为caaa6985a43225a0b3add54f44a0d4c7。
文件采用了PE格式,是一个图形用户界面程序,为Intel 80386处理器架构编译的程序。
(2)找出并解释这个二进制文件的目的;
HTTP请求 10.10.10.10\RaDa\RaDa_commands.html,将文件 RaDa.exe 复制到了 C:\RaDa\bin 目录下,对主机实行DDos拒绝服务攻击 。
(3)识别并说明这个二进制文件所具有的不同特性;
该文件运行会对注册表进行读写和删除操作。
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
使用了UPX加壳技术,不进行脱壳会显示乱码。
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
本恶意程序为后门程序,使用DDoS攻击使主机瘫痪,该程序执行需要通过攻击者远程发送指令且该程序没有自我复制和传播,也没有将伪装成其他程序。
(6)给出过去已有的具有相似功能的其他工具;
实验二的backdoor获取主机的shell
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以。使用IDA、ProcessExplorer。(脱壳后)
(8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
2.4取证分析实践
Windows 2000系统被攻破并加入僵尸网络
问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆.并回答问题:
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC,即Internet Relay Chat,是一种用于实时文本交流的协议,广泛用于进行群组聊天和私聊。当IRC客户端申请加入一个IRC网络时,通常会发送一个NICK消息来指定它希望使用的昵称,以及一个USER消息来提供用户的基本信息。IRC一般使用TCP端口6667。
(2)僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络是由大量被恶意软件感染的计算机组成的网络,这些计算机在未被用户察觉的情况下被远程攻击者控制。僵尸网络通常用于发动分布式拒绝服务(DDoS)攻击、发送垃圾邮件、进行数据盗窃或大规模的点击欺诈等恶意活动。攻击者通过控制大量的“僵尸计算机”来协同执行这些任务,从而增加攻击的效率和效果。
(3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
由于IRC协议使用TCP连接,要找出与蜜罐主机通讯的IRC主机,可以利用建立TCP连接的三次握手过程进行分析。IRC协议最常用的端口为6667,在WireShark中对日志文件进行分析,于是可以利用如下表达式过滤出蜜罐主机向6667端口发送的TCP包:
ip.src == 172.16.134.191 && tcp.dstport == 6667
利用此表达式进行IP Address统计,可以看到通信的IRC服务器,如下:
(4)在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
使用命令tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667分流得到两个分流后的数据文件。172.016.134.191.01152-209.196.044.172和209.196.044.172.06667-172.016.134.191和一份报告report.xml
输入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查看多少不同的主机访问了以209.196.44.172为服务器的僵尸网络:
(5)哪些IP地址被用于攻击蜜罐主机?
查找端口并输出到20222424.txt 中:tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191' | grep -v 'reply' | cut -d '.' -f 10 | cut -d ':' -f 1 | sort | uniq | more >20222424.txt; wc -l 20222424.txt,结果显示共有148个端口被攻击了:
使用命令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 > 20222424.txt;wc -l 20222424.txt,将连接IP地址输出到2.txt中。结果显示共有165个主机被用于蜜罐入侵:
(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端口:
只是TCP三次握手建立通信,没有数据传输。 - 139端口:
推断进行了SMB查点。 - 25端口:
推断进行了端口扫描。
445端口:
主机61.111.101.78向蜜罐发送了PSEXESVC.EXE,这是一种通过命令行环境和目标机器进行连接进而控制目标机器的程序,并且不需要通过RDP远程桌面协议进行图形化控制,所以很难被发现。
4899端口:
4899端口是Radmin的默认端口,具有远程控制功能。
80端口:
端口有一长串“A”字符的通信,应该是用了缓冲区溢出攻击,使之获取cmd的权限。
发现24.197.194.106发送的消息包好像已经进入了主机,使用了cmd.exe,可能正在输入什么命令获得蜜罐的机密消息。
(7)那些攻击成功了?是如何成功的?
- 445端口通过可执行文件PSEXESVC.EXE对系统注入了蠕虫病毒并成功获取了远程调用。
- 80端口通过缓冲区溢出攻击使用了cmd.exe。
- 4899端口使用Radmin远程控制。
3.问题及解决方案
- 问题1:kali虚机没有tcpflow
- 问题1解决方案:
- 问题2:在ProcessExplorer中未能找到RaDa_unpacked.exe
- 问题2解决方案:在运行RaDa_unpacked.exe后会有弹窗提示,不能点击确定或者关闭弹窗。
4.学习感悟、思考等
在这次实验中,我对恶意代码分析技术有了进一步的学习,加深了对恶意程序工作原理和常见特征的理解,进一步提高了识别和分析这些威胁的能力。使用 IDA Pro 进行静态和动态分析让我掌握了如何使用分析工具深入剖析可执行文件的内部结构,理解程序的逻辑和潜在漏洞。我意识到了取证分析在安全事件响应中的关键作用。我学习到如何使用取证工具来提取和分析系统中的重要数据,从而定位攻击者行为并维护计算环境的安全性。