1.实验内容
本次实验主要是通过各种工具,对目标恶意代码进行文件类型的分析,通过脱壳软件将恶意代码的upx壳脱去,并对恶意代码进行字符串分析,通过逆向技术将二进制代码转换为汇编代码进行分析。了解代码中不同函数之间的调用和流程运行图。通过流程图及相关信息去推测恶意代码的运行条件,学习使用IDA Pro等专业逆向工具。通过WireShark进行僵尸网络等分析取证,从数据包中观察僵尸网络的攻击方式和具体漏洞。
2.实验过程
刚上来就遇到了一个大问题,我的PD不能拖拽文件和复制粘贴,PD tools也无法下载。
之后我在网上苦苦寻找,Royal TSX这个软件可以实现远程连接,所以本次实验都是在这个新开的shh连接终端上进行的。
2.1 恶意代码文件类型标识、脱壳与字符串提取
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
从学习通资源区下载rada.rar压缩包
使用file命令查看文件的格式和类型信息,file命令是Kali(Linux内核)自带的。
如下图所示,RaDa.exe文件是32位PE文件,80386处理器,微软Windows操作系统
,有三个节。
使用peid进行扫描
从这里我预感到本次实验可能又要做不出来了,啊啊啊macos网络攻防实验一生之敌。
与实验三相同,使用FourEye对这个RaDa.exe进行加壳操作。
然后需要使用一个arm64架构能使用的文件分析工具,我在网上查找了很多,最后选择使用radare2
https://gitcode.com/gh_mirrors/aw/awesome-radare2/overview?utm_source=artical_gitcode&index=bottom&type=card&webUrl&isLogin=1
下载官网:https://www.radare.org/n/radare2.html
成功下载了这个软件包,可以在终端执行命令,进行分析。
输入r2 shellcode.exe
然后aaa
然后输入v
有点高级,有点看不懂。
这是他能分析的功能。
这部分列出了该二进制文件中的符号(函数、变量等)。从中我们可以看到一系列全局函数及其所在的地址,程序中的 C 或 C++ 源代码的反汇编语言。
__mingw_invalidParameterHandler、pre_c_init、WinMainCRTStartup、main 等函数:这些是程序中的函数,通常与 Windows 程序的初始化、启动相关。WinMainCRTStartup 和 mainCRTStartup 等函数是程序执行的入口点,通常由 C 运行时库(CRT)提供。
memcpy、malloc、abort、calloc 等标准 C 函数:这些是标准库函数,用于内存操作、程序终止等。
_initterm、_onexit:这些函数通常与程序的终结和清理工作相关,常用于执行全局析构函数等。
.text 节段位于较低的虚拟地址(0x140001000),并且大小为0x2000,符合一般可执行文件的结构。
从这里分析可以看出并没有明显的加壳特征。
然后我又重新针对radadump加壳前后做了一下比较
可以看出它们是有关程序的内存布局和符号表的不同内容。
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
输入strings rada_dump_.exe后可以看到输出的字符串是一堆看不懂的乱码,所以我们需要对程序进行脱壳处理。
可以直接在mac上运行这个超级巡航,但是脱壳特征库加载失败。
之后还是借助的舍友的脱壳软件,之后可以看到恢复正常。
2.2-使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息
在终端内直接输入 wine {cracklme1.exe的文件路径},可以看到得到的反馈是
‘‘I think you are missing something.’’
之后分别加入1,2,3个参数试试
可以看到分别输出
‘‘Pardon? What did you say?’’
‘‘I think you are missing something.’’
‘‘I think you are missing something.’’
我们通过IDA Pro for Mac打开这个crackme.exe文件,就可以直接看到程序的流程图,图中的每一个框框表示一个函数,不同框框间有有向线段连接,有些线段是红色的,有些线段是绿色的,还有些线段是蓝色的。可以发现,红色线段和绿色线段总是成对出现的,并且两条线段指向了不同的函数,而根据刚刚测试的结果,可以推测,绿色线段表示程序判断正确的走向,红色线段表示程序判断错误的走向。所以我们跟着绿色线段走到底,就看到了I know the secret这句话,我们将这句话作为参数输入到终端中成功输出了You know how to speak to programs, Mr. Reverse-Engineer这个正确的结果.
同理我们来分析crackme2.exe的正确输入,用IDA Pro for Mac打开文件,可以看到文件的流程控制图要更加复杂,同时绿色路线上第一个框框中显示的是crackmeplease.exe这个信息,说明在终端中的第一个参数是crackmeplease.exe而不是crackme2.exe,所以要将文件重命名,第二个参数依然是I know the secret。在cmd中输入即可成功返回We have a little secret: Chocolate这个正确结果。
但是却失败了,没有看到自己想看到的结果。
2.3 分析一个自制恶意代码样本rada,并撰写报告
2.3.1-提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息
ljt@root20222308:~/Desktop/rada_1$ md5sum RaDa.exe
caaa6985a43225a0b3add54f44a0d4c7 RaDa.exe
就可以生成文件对应的Hash值, caaa6985a43225a0b3add54f44a0d4c7 .
2.3.2-找出并解释这个二进制文件的目的
先使用之前安装的radare2 进行分析,好像看不出来什么。
还是使用IDE for mac
md5值和sha1都在头部
通过IDA Pro for Mac对文件进行逆向,可以看到http://10.10.10.10/RaDa的网址,还有RaDa_commands. html的网页。后面还有C: \RaDa\tmp的路径,应该是从上述网站上下载文件然后保存在这个文件夹中。同时还有C: \RaDa\bin文件夹,一般来说bin文件夹都是放置二进制可执行文件的。还有Starting DDoS Smurf remote attack…的信息,说明会执行分布式拒绝服务攻击。还有RegWrite,RegRead和RegDelete等信息,说明会去对注册表进行相关读写删除,注册表一般是Windows下自运行的一些方式,说明程序在准备自启动等功能。
除此之外还显示了Upload file using http And multipart/fo…说明文件会去上传靶机中的一些数据到指定的服务器上,完成信息的窃取。
还看到MACAddress,说明文件会去读取本地的MAC地址,可以推测攻击方获取到MAC地址之后就可以使用靶机的MAC地址去进行连接,就算被屏蔽也不会导致攻击机的断网。
(2)找出并解释这个二进制文件的目的;
这个文件首先使用了upx进行加壳,使得通过普通的逆向并不能够直接获取到文件的信息,同时查询运行环境和运行计算机的相关信息,该程序连接到10.10.10.10的主机下名为RaDa_commands.html的网页上,程序会自动创建文件夹C:\RaDa\tmp,保存下载文件,进行DDOS Smurf远程攻击。
(3)识别并说明这个二进制文件所具有的不同特性;
基于上述信息,我猜测这个文件具有自动将自己运行安装的能力,可以去获得靶机的一些权限并进行DDoS等攻击,会将靶机的数据上传到互联网上去。
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
upx加壳,在strings中加入干扰信息,如SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True是一句没有用的SQL语句(这压根也涉及不到数据库查询)。
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
自动执行,但是不具备感染性,可以自我复制,会反弹连接,综上这个恶意代码的样本更像是后门,因为首先这个文件中并没有找到能够自我复制及传播的相关信息。不太符合病毒和蠕虫的特点,同时这个文件能够去更改注册表,并将自己的运行程序放到bin文件夹中去,同时获取截屏等,和远程控制等,更像是后门程序监控并远程操控的样子。
(6)给出过去已有的具有相似功能的其他工具;
之前用的msf
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以,脱壳之后,使用Process Explorer查看文件中的字符串就可以找到作者信息,在非虚拟机的环境下。
(8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
1️⃣ 可以使用常见的反病毒软件进行扫描,可以检测并组织恶意代码的攻击。
2️⃣ 利用反汇编与逆向技术,比如这次实验,使用IDA等可以逆向分析的软件,发现恶意软件的端倪。
3️⃣ 放到一个虚拟的环境中测试检验,监控它是否向远程服务器发送或接收数据或者修改系统注册表或文件系统(如新增恶意任务调度、注册启动项等)。但是我通过上网查询学习发现有很多的恶意代码编写者经常使用反虚拟机技术逃避分析,恶意代码可以使用这种技术探测自己是否运行在虚拟机中。如果恶意代码探测到自己运行在虚拟机中运行,它会执行与其本身行为不同的行为,其中更简单的行为是停止自身运行。
4️⃣ 使用 Wireshark 或 tcpdump 来捕获和分析网络流量,观察是否有存在不明的出站流量。
5️⃣ 完整性验证法:这种方法主要是检查程序关键文件(比如重要的SYS和DLL)的CRC或者MD5的值与正常值进行比较。 恶意代码感染、破坏其他目标的过程,也是破坏这些目标的完整性的过程。
尝试在我的本机上运行进行验证,但是运行报出的错误消息中的 00cc:err:module:import_dll Library MSVBVM60.DLL (which is needed by
L"Z:\Users\lili\Downloads\rada\RaDa.exe") not found 表明 Wine 无法找到这个 DLL 文件,导致程序无法启动。
2.4 取证分析实践
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC-Internet Relay Chat1988年起源于芬兰,现已广泛应用于全世界60多个国家。它是多用户、多频道的讨论系统,许多用户可以在一个频道内就某一话题进行交谈或私谈,每个用户都有一个不同的昵称。IRC允许任意的因特网用户之间做即时的交谈。用户在申请加入IRC时需要发送口令,昵称和用户信息。IRC服务器通过6667端口进行明文传输,同时也可以通过6660~6669端口进行数据传输,但如果是基于SSL的加密数据传输,则需要通过6697端口进行传输。参考RFC。
- 信道是由一个或多个客户端组成的命名组,这些客户端将接收到发送给该信道的消息。当第一个客户端加入信道时,信道隐式地创建,当最后一个客户端离开信道时,信道停止存在。当信道存在时,任何客户端都可以使用信道名引用信道。
(2)僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络 Botnet 是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。僵尸网络通常是构建出一个大量的DDoS攻击,通过整个僵尸网络对某一个目标主机进行流量洪泛,导致目标主机无法支持大量通信导致无法提供正常的服务。
(3)蜜罐主机(IP地址:172.16.134.191)与那 (哪)些IRC服务器进行了通信?
我们可以通过WireShark对dat文件进行分析。
输入的筛选信息为ip.src == 172.16.134.191 and tcp.dstport == 6667
有五个主机与蜜罐主机进行通信了
209.126.161.29
66.33.65.58
63.241.174.144
217.199.175.10
209.196.44.172
(4)在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
下载tcpflow工具。TCPFlow是一个功能强大的、基于命令行的免费开源工具,用于在Linux上分析网络流量。它能够捕获通过TCP连接接收或传输的数据,并将这些数据存储在文件中以供后续分析,它支持丰富的过滤条件。
这一步看的是学长学姐的实验报告学到的,完全是按照他们的方式进行的实践。
sudo apt-get install tcpflow
结果是3461台主机。
(5)哪些IP地址被用于攻击蜜罐主机?
165台,这段指令的意思是从 botnet_pcap_file.dat 文件中筛选出所有目标地址为 172.16.134.191 的数据包并把这些ip都放在2.txt文件里。
(6)攻击者尝试攻击了那些安全漏洞?
可以看到TCP相应的端口有135,139,25,445,4489和80,UDP相应的端口只有137一个。
接下来就依次对这些端口进行数据包的检测
按照tcp.port135 || tcp.port25过滤条件对bat包进行过滤,
过滤条件 tcp.port139 and ip.dst172.16.134.191
主要的包也都是ACK和SYN,好像都没有进行攻击。
过滤条件改为tcp.dstport445 and ip.dst172.16.134.191
包数据显示这里进行了大量的基于SMB协议的数据传输和基于SVCCTL协议的数据传输,同时可以在SMB协议数据包中看到\System32\PSEXESVC.EXE,查询相关资料发现这是一个Dv1dr32蠕虫病毒,通过IRC进行通信。
查看具体的包信息,它请求在目标系统的 \System32\PSEXESVC.EXE 文件路径下创建或打开一个文件。这可能涉及到通过 SMB 协议在远程系统上执行一些操作(例如使用 PsExec 工具进行远程命令执行)
查看80端口,过滤条件为ip.dst172.16.134.191 and tcp.dstport80 and http
wok,眼花缭乱的这都是些什么?!
随便点进去一个,请求路径:
/Rpc/check.bat/..../..\winnt/system32/cmd.exe?/c+dir+dir+.exe?/c+dir
应该是试图访问一个名为 check.bat 的批处理文件,位于某个RPC服务下,..../..\ 这个部分表示一个路径遍历(directory traversal)攻击,攻击者试图通过相对路径跳出当前目录结构,访问服务器上不应暴露的文件。这个请求的目标应该是想利用路径遍历漏洞和命令注入漏洞,通过 cmd.exe 执行系统命令,并可能进一步执行恶意程序(如试图列出或执行 .exe 文件)。
(7)那些攻击成功了?是如何成功的?
通过PSEXESVC.EXE的蠕虫病毒成功完成了攻击,这个可执行文件被更改到了系统的目录中,通过利用SVCCTL的漏洞获取到目标主机的相应服务。
TCP port:4899攻击成功了,攻击者利用Radmin服务远程攻击,传输数据并连接cmd;
3.问题及解决方案
- 问题1:解决了我长达两年对于mac多不能运行exe的误解
- 问题1解决方案:下载了沙盒,使用wine 运行exe,但是由于本身架构以及一些windows下的dll连接库没有可能有的程序运行出来还是不可以使用,但是简单的exe都可以运行出来结果了,我现在觉得我的mac无所不能。
- 问题2:还是不能理解通过文件完整性来进行恶意代码的检测的原理。
- 问题2解决方案:看其他学长学姐的实验报告里都有一步计算hash值的操作,但是不理解为什么要这么做。
4.学习感悟、思考等
已经完成第四个实验了,进度条完成一半!对于知识点没有什么想要总结的了,前面已经写的够多了,真的心累,si一半了,本次实验主要实践的内容还是结合工具对于一个恶意代码进行各种手段的分析,奈何自己发现问题的能力很弱,有很多问题看到了也要自己一步一步查询,所以感觉对于很多问题和现象的理解还是不够全面。但是感觉这次实验比实验三参与度高了很多,一是在自己精心调试以及下载各种环境和工具之后ARM架构也显得不是那么鸡肋了,甚至IDE 也可以使用,还拓展了新的软件 radarew2 虽然还是没有使用明白,就这样一点一点的在电脑上尝试,根据结果分析问题的过程还是很有意思的,福尔摩斯上线。通过流程图分析,还是可以看到每一个函数具体是如何调用,在运行时会出现哪些寄存器数据的变化,确实可以进一步提高对于恶意代码分析的能力和对计算机指令执行的能力,看来这种编译原理的知识还是很有必要性的。
参考资料
csdn里一堆,github上也有,不列举了
标签:文件,exe,RaDa,恶意代码,可以,2024,2025,20222308,进行 From: https://www.cnblogs.com/2308ljt/p/18531839