实验四 恶意代码分析实践

一.实验过程

任务一 恶意代码文件类型标识、脱壳与字符串提取

查看文件类型

接着我们随便查找一个字符串

Windows下输入

find "a" RaDa.exe//查找含有a的字符串

如图可见全是乱码,我们推测是加壳导致的

使用工具PEiD对文件RaDa.exe进行查壳

使用脱壳工具进行脱壳,生成了文件RaDa_unpacked.exe

现在我们再次查看字符串

Windows下输入

find "a" RaDa_unpacked.exe

可以发现不是乱码了

打开工具idag,选择脱壳后的文件

成功查看到了文件的作者信息,如邮箱。

任务二 使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。

crackmel1

随便输入一些参数,试探一下输入格式

可以看到有两种返回情况

打开idag,分析该程序

可以看出,第一个和第三个我们都触发过。

第一个为参数不对的返回情况。第三个为参数数量对但内容不对的返回情况

我们查看函数调用图

接着查看401280函数段,查看其汇编代码

猜测是要输出的正确参数,即“I know the secret”。

现在我们再出输入

crackme1.exe "I know the secret"

可以看到,返回的是输入正确参数的情况。

总结:

“I think you are missing something”为参数不对的返回情况

“Pardon? What did you say?”为参数数量对但内容不对的返回情况

“You know how to speak to programs, Mr. Reverse-Engineer”为参数数量对且内容对的返回情况

crackmel2

随便输入一些参数,试探一下输入格式

可以看到有两种返回情况

打开idag,分析该程序,可见如下返回情况

接着查看函数调用图

依然是查看401280函数段,我们查看其汇编代码

猜测首先程序名要正确,即改为crackmeplease.exe

然后就是和程序1一样,输入正确的参数,即“I know the secret”

现在我们来进行验证,首先将程序名改为crackmeplease.exe

总结:

“I think you are missing something”为参数不对的返回情况

“I have an identity problem.”为程序名不对的返回情况

“Pardon? What did you say?”为程序名对,参数数量对但内容不对的返回情况

“We have a little secret: Chocolate”为程序名对,参数数量对且内容对的返回情况

任务三 分析一个自制恶意代码样本rada

1.对文件进行摘要,我选用MD5摘要

Windows下输入

certutil -hashfile RaDa.exe MD5

查看文件类型

可知该二进制文件是32位,并带有图形化界面的windows PE文件

更改样本的文件名并再次进行md5摘要,发现结果没有发生变化,即摘要值是一个文本的识别标志。


2.分析文件

用IDA打开RaDa_unpacked.exe并切换到strings页面

可以看出,这是作者信息以及发布时间

如图是一个网页地址和两个本地地址

网页地址即:连接到IP地址为10.10.10. 10的目标主机下的一个名为RaDa_commands的网页上,下载,上传cgi,同时还创建了文件夹tmp在c盘中

可以看到这就是程序在我电脑中创建的文件夹

第三个网址下还能发现可以发起DDOS远程攻击

继续往下看,可以看见还能实现截屏,休眠,上传,下载等操作

下图是一个SQL语句

这句话大概意思是先对网卡配置信息的查询(SELE CT * FROM Win32_NetworkAdapterConfigurat),如果true,则确认dword_40C070对应 的字符是否存在,并进行了Mac地址查询,注册表的查看等### 操作(Wscript.shell),即判断vmware tools是不是在注册表里面

如下图是3个网段

应该是判断是否处于这3个网段上,然后执行相应命令。

我们打开另一个工具Process Explorer并运行RaDa_unpacked.exe

在Process Explorer中找到程序RaDa_unpacked.exe,点开选择strings

因为有了IDA的解释,我们能够看懂这些字段的意义。

http://10.10.10.10/RaDa //访问10.10.10.10主机下的一个网页

download.cgi//下载

upload.cgi//上传

C:\RaDa\tmp//下载地址

RegWrite//对注册表进行写操作

RegRead//对注册表进行读操作

RegDelete//对注册表进行删除操作

exe//执行指定程序

get//下载指定文件

put//上传指定文件

screenshot//截屏

sleep//休眠

3.回答问题

(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;

答:摘要为caaa6985a43225a0b3add54f44a0d4c7,是32位,并带有图形化界面的windows PE文件

(2)找出并解释这个二进制文件的目的

答:这应该是一个后门程序,通过访问某个网页,然后进行一系列入侵操作。

(3)识别并说明这个二进制文件所具有的不同特性

答:能够在c盘下创建一个文件目录,并且能够访问网站http://10.10.10.10/Rada/Rada_command.html,然后进行上传和下载操作,并且能够执行一些命令,如截屏,休眠等。

(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术

答:利用了加壳免杀技术。

(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由

答:我认为它是一个后门程序,因为它不具备传播和感染的性质,即不是蠕虫和病毒;也不是良性程序(伪装),即不是木马。

(6)给出过去已有的具有相似功能的其他工具

答:木马Bobax、木马Setiri。

(7)可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限 定条件下?

答:在分析文件中,我们利用IDA打开RaDa_unpacked.exe并切换到strings页面,找到了作者信息。

可以看出作者是Raul Siles和David Perez, 分析这些的条件是先对程序进行脱壳处理,否则为乱码。

任务四 取证分析实践——Windows 2000系统被攻破并加入僵尸网络

问题:数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:

(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?

答:

IRC(互联网中继聊)天,类似微信和qq。

注册时需发送的消息有三种,分别是口令,昵称和用户信息,注册完成后,客户端就需要 使用JOIN信息来加入频道Channel 。IRC服务器当使用明文传输时通常在6667端口监听。使用密文传输时通常在#### 6697端口监听

(2)僵尸网络是什么?僵尸网络通常用于什么?

答:

僵尸网络是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。

僵尸网络最常见的两种用途是发送垃圾邮件活动,并进行分布式拒绝服务(DDoS攻击)。

(3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?

我们打开wireshark,打开文件botnet_pcap_file.dat,输入“ip.src == 172.16.134.191 && tcp.dstport == 6667 || tcp.dstport == 6697”

进行简单过滤

我们发现蜜罐主机分别和66.33.65.58、63.241.174.144、217.199.175.10、209.196.44.172、209.126.161.29这五个IRC服务器进行了通信。

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

在kali环境下输入命令

apt-get install tcpflow(root权限下执行)

tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667'//抓包(-r是为了能够读取该数据包)

得到3个文件

使用管道命令

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

所以有3461个主机访问了以209.196.44.172为服务器的僵尸网络

(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 > ljj.txt//生成一个文件,记录了连接主机ip的地址

wc -l ljj.txt//统计文件内容行数

查看文件内容,如下为被用于攻击蜜罐主机的部分IP地址

注:由于有165个ip地址,不一一列出了

(6)攻击者尝试攻击了那些安全漏洞?

输入命令

snort -r botnet_pcap_file.dat -c /etc/snort/snort.conf -K ascii

可见有53323个tcp端口,186个udp端口

筛选tcp端口

输入命令

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,139,25,445,4899,80

然后我们用wireshak一一查看

135:只进行了TCP连接

139:发现了NBSS包和SMB包(两者都跟NetBIOS有关) 以及一些TCP流

25:只进行了TCP连接

445:PSEXESVC.EXE的可执行文件,这是可以利用远程控制运行被害主机,并且获取其权限,常用于内网渗透

4899:只进行了TCP连接

80:

查看到了很多字符“C”,猜测是否攻击者想利用缓冲区溢出攻击来获取主机权限.

接着我们筛选源地址:ip.src == 218.25.147.83

找到蠕虫字段“worm”

筛选udp端口

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端口:137

137:发现了大量NBNS(名称服务器)数据包

(7)那些攻击成功了?是如何成功的?

答:有问题6可知,ip地址为218.25.147.83的攻击者成功了,他利用了缓冲区溢出进行蠕虫攻击。

二.实验中遇见的问题

在本次实验中,因为有老师的视频指导,在软件使用上并未有太大的问题,但由于对于汇编语句不太熟悉,所以遇到了不少难题。

解决方法:参考大量资料,请教同学,参考学长学姐资料。

三.实验感想

本次实验,有着不少关于汇编的知识,所以我在后面的实验进度中卡了很久,通过不断的查找资料将问题一一解决,我对于汇编语句有了更深一步的了解。同时这次实验也帮我复习了关于wireshark的使用,以及对于各类数据包的分析。尤其是关于蠕虫攻击的数据包,因为有了案例进行了解,我印象十分深刻。

总的来说,本次实验虽然对于我而言有点困难,但也收获颇丰,学习了关于网络攻防的相关专业知识,学习了一些汇编知识,还巩固了以前所学的东西。感想老师的视频指导,同时也感谢帮助我的同学,期待下一次实验的到来。

posted on 2022-04-17 19:53  20192422李俊洁  阅读(86)  评论(0编辑  收藏  举报