20222324 石国力 《网络与系统攻防技术》 实验四
1.实验内容
一、恶意代码文件类型标识、脱壳与字符串提取
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
二、使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
三、分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
(2)找出并解释这个二进制文件的目的;
(3)识别并说明这个二进制文件所具有的不同特性;
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
(6)给出过去已有的具有相似功能的其他工具;
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
(8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
四、取证分析实践
Windows 2000系统被攻破并加入僵尸网络
问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
(2)僵尸网络是什么?僵尸网络通常用于什么?
(3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
(4)在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
(5)哪些IP地址被用于攻击蜜罐主机?
(6)攻击者尝试攻击了那些安全漏洞?
(7)那些攻击成功了?是如何成功的?
- 实验过程
2.1 任务一:恶意代码文件类型标识、脱壳与字符串提取
对提供的样本RaDa.exe进行分析,脱壳与字符串提取,以获得rada恶意代码的编写作者。
2.1.1 使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具
解压下载的rada文件
将文件传到kali端,使用file RaDa.exes命令查看文件的格式和类型信息。
可以看到是一个有图形化界面(GUI)的 Win32 PE(可移植可执行)程序。其中 PE32 表示这是一个32位的运行在windows操作系统上的程序, GUI 表示这个程序是一个有图形界面的程序, intel 80386 表示处理器架构。然后使用peid查看RaDa的信息。
2.1.2 使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理
在学习通下载脱壳.rar,即超级巡警脱壳软件,按路径找到并选择刚下载的RaDa.exe,进行脱壳处理。
脱壳后文件如下。
可以知道创始人的身份了
2.2 任务二:使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息
2.2.1下载crackme1.exe和crackme2.exe并拖进kali。查看一crackme1,2.exe基本信息。
console: 说明这两个是控制台程序。
for MS Windows:则表示这是一个为Microsoft Windows操作系统设计的可执行文件。
2.2.2 在命令提示符中测试
在windows的cmd中依次输入一些命令
2.2.3 利用IDA Pro分析文件
在学习通下载IDA pro.rar,解压后打开.exe文件进行安装。
可以看到除了上面输出提示的两句话,还有另外两句。
查看函数调用图
发现sub_401280调用了strcmp、printf等这些有关字符串处理的函数,可以合理推测会根据输入对比进而printf出不同的输出语句。
查看函数流程图。
可以看到最上方函数会将输入参数个数与2作比较,相同则执行下边右边的函数,不相同则执行左边;然后在判断为相同的函数中,将参数与“I know the secret”作比较,再根据是否相同输出不同结果。
在终端中按照程序中出现的明文字符串口令进行验证:
可以看到最上方函数会将输入参数个数与2作比较,相同则执行下边右边的函数,不相同则执行左边;然后在判断为相同的函数中,将参数与“I know the secret”作比较,再根据是否相同输出不同结果。
2.2.4分析crackme2.exe
直接运行crackme2.exe,发现它像上一个exe文件一样,需要输入一个参数,但是此时还会有认证问题。
按照上次的方式打开函数调用图。
发现sub_401280调用了strcmp、fprintf、putchar、puts这些字符串处理函数.
打开函数流程图。
可以看到crackme1.exe中看到的流程类似,但多了一个第一个参数的判断流程,可以推断出函数需要将第一个参数改成特定名称crackmeplease.exe。
2.3分析恶意代码样本rada,并撰写报告
2.3.1信息获取过程
输入md5sum RaDa,exe命令,得到RaDa.exe的摘要和基本信息。
在学习通下载ProcessExplorer.rar并解压打开。
然后在Process Explorer中会出现该进程,双击后可以看到下方结果。
点击string查看字符串。
分析string内容可以得到下方结果:
该程序使用HTTP协议连接到目标为10.10.10.10\RaDa\RaDa_commands.html的网页上,下载和上传某些文件。
并且在主机C盘中创建一个文件夹C:/RaDa/tmp,并且将文件RaDa.exe复制到了C:\RaDa\bin中。
添加了一个注册表项:HKLM\Software\Microsoft\Windows\CurrentVersion\Run\,激活了自启动。
还添加了一个注册表项:HKLM\Software\VMware, Inc.\VMware Tools\InstallPath,实现了对入侵主机的远程控制。
该程序还可以执行DDos攻击,对注册表内容进行更改,还可以执行其他入侵操作,作者是Raul siles和David Perze。
2.3.2问题回答
(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)相似功能工具:
实验二的msfvenom就可以生成后门文件,然后传递到被攻击者的主机上实现反弹连接,据我了解,实验三的veil也是可以的
(7)调查开发作者的可能性:
可以的,并且很容易,在上面实验的多个工具中,我们都可以查到该文件的作者是两位外国友人。只要我们有工具并且在安全的环境下保存了这个文件就可以查出文件的作者。
(8)检测该恶意软件的方法:
基于特征码的检测:
方法:在特征码库中记录已知的恶意软件特征码,当扫描到包含这些特征码的文件时,将其标记为恶意软件。
基于行为的恶意软件检测:
方法:通过监控软件在系统中的行为(如文件操作、网络通信等),判断其是否为恶意软件。
沙箱检测法:
方法:将软件运行在一个隔离的环境中,观察其行为是否异常。
完整性校验法:
方法:通过比较软件的哈希值或数字签名与官方提供的值是否一致,判断软件是否被篡改。
基于网络流量的检测方法:
方法:通过分析网络流量中的特征(如端口号、协议类型、数据包大小等),判断是否存在恶意软件的网络通信行为。
2.4取证分析实践
2.4.1IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
(1)IRC(Internet Relay Chat)是一种互联网中继聊天协议,它允许用户借助特定的客户端软件,在不同的聊天频道中与其他用户进行实时的文本信息交流。这种协议为在线社区的形成和信息的即时传播提供了便利。
(2)当IRC客户端尝试加入一个IRC网络时,它会发送一个特定的JOIN命令来请求加入某个频道。这个JOIN消息中通常包含了目标频道的名称以及用户的昵称等关键信息,以便服务器能够正确地处理用户的加入请求。
(3)IRC协议一般使用的TCP端口包括6667(用于明文传输)和6697(用于SSL加密传输),以确保数据传输的安全性和隐私性。此外,根据具体的网络配置和服务器设置,IRC也可能使用6660-6669之间的其他端口。
2.4.2僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络是由大量被恶意软件感染的计算机组成的网络,这些计算机在未被用户察觉的情况下被远程攻击者控制。僵尸网络通常用于发动分布式拒绝服务(DDoS)攻击、发送垃圾邮件、进行数据盗窃或大规模的点击欺诈等恶意活动。攻击者通过控制大量的“僵尸计算机”来协同执行这些任务,从而增加攻击的效率和效果。
2.4.3蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
下载文件botnet_pcap_file.dat,使用wireshark打开,设置过滤条件ip.src == 172.16.134.191 && tcp.dstport == 6667 and tcp.flags == 0x2观察结果:
经过分析,可以得出,蜜罐主机与如下的服务器进行通信:
209.126.161.29
66.33.65.58
63.241.174.144
217.199.175.10
209.196.44.172
2.4.4在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
首先在虚拟机中输入sudo apt install tcpflow安装tcpflow。
安装完成后,把数据包文件拖入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个
2.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 > 20222324.txt;wc -l 20222324.txt。
2.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端口。
然后我们再输入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筛选出蜜罐主机被攻击的UDP端口。
可以发现被攻击的端口结果如下:
TCP:135(rpc),139(netbios-ssn),25(smtp),445(smb),4899(radmin),80(http)
UDP:137(netbios-ns)
筛选这些端口进行分析:
135端口
只是TCP三次握手建立通信,没有数据传输。
139端口:
推断进行了SMB查点。
25端口:
推断进行了端口扫描。
445端口:
主机61.111.101.78向蜜罐发送了PSEXESVC.EXE,这是一种通过命令行环境和目标机器进行连接进而控制目标机器的程序,并且不需要通过RDP远程桌面协议进行图形化控制,所以很难被发现。
4899端口:
4899端口是Radmin的默认端口,具有远程控制功能。
80端口:
端口有一长串“A”字符的通信,应该是用了缓冲区溢出攻击,使之获取cmd的权限。
2.4.7那些攻击成功了?是如何成功的?
445端口通过可执行文件PSEXESVC.EXE对系统注入了蠕虫病毒并成功获取了远程调用。
80端口通过缓冲区溢出攻击使用了cmd.exe。
4899端口使用Radmin远程控制。
3.问题及解决方案
不知道要把botnet放进kali,后面就一直找不到有多少个主机服务。
4.学习感悟、思考等
实验心得体会
在这次实验中,我深入了解了恶意代码分析、逆向工程以及网络取证分析等多个方面的知识和技术。通过实际操作和理论分析,我不仅巩固了课堂上学到的理论知识,还掌握了更多实用的技能和方法。
在恶意代码分析部分,我首先接触到了rada恶意代码样本。通过文件格式和类型识别工具,我成功识别出了该样本的文件格式、运行平台和加壳工具。这一过程让我意识到,了解恶意代码的基本信息对于后续的分析至关重要。接下来,我使用超级巡警脱壳机对样本进行了脱壳处理,这一步骤虽然有些繁琐,但成功提取出了恶意代码的核心部分。最后,通过字符串提取工具,我发现了rada恶意代码的编写作者,这让我深刻体会到了逆向工程在恶意代码分析中的重要作用。
在IDA Pro的使用上,我通过静态和动态分析crackme1.exe与crackme2.exe,成功找到了使其输出成功信息的特定输入。这一过程不仅锻炼了我的逆向思维能力,还让我对IDA Pro这款强大的逆向分析工具有了更深入的了解。
在分析自制恶意代码样本rada时,我详细记录了该二进制文件的基本信息、目的、特性以及防止被分析或逆向工程的技术。这一步骤让我更加全面地了解了恶意代码的工作原理和构造方式,同时也让我对恶意代码的检测和防御有了更深入的认识。
在网络取证分析部分,我通过分析Snort收集的蜜罐主机网络数据源,成功回答了关于IRC、僵尸网络以及攻击者行为的一系列问题。这一过程不仅锻炼了我的数据分析和处理能力,还让我对网络攻击和防御有了更深入的了解。
通过这次实验,我深刻体会到了理论知识与实践操作相结合的重要性。在实验过程中,我不仅巩固了课堂上学到的理论知识,还通过实际操作掌握了更多实用的技能和方法。同时,我也意识到了自己在某些方面的不足,比如逆向工程和网络取证分析方面的能力还有待提高。
总的来说,这次实验是一次非常宝贵的学习经历。它不仅让我学到了很多新的知识和技能,还让我对恶意代码分析、逆向工程以及网络取证分析等领域有了更深入的认识和理解。我相信,在未来的学习和工作中,这些知识和技能将对我产生积极的影响和帮助。