实践八 恶意代码分析实践
一、实践内容
1、动手实践任务一
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
- (1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
- (2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
- (3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
2、动手实践任务二:分析Crackme程序
在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。
3、分析实践任务一:
分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
(2)找出并解释这个二进制文件的目的;
(3)识别并说明这个二进制文件所具有的不同特性;
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
(6)给出过去已有的具有相似功能的其他工具;
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
4、分析实践任务二:
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)那些攻击成功了?是如何成功的?
二、实践内容
1、动手实践任务一
将下载好的rada.rar解压,将rada_dump.exe和RaDa.exe文件复制到winXP虚拟机中
打开终端,使用命令cd 桌面,进入桌面,然后使用命令file RaDa.exe查看文件文件类型
接着使用PEiD工具查看文件加壳类型。加壳的目的是为了增加逆向难度。可以看到这个是一个版本为0.89.6的UPX壳(压缩壳)
在终端使用命令 strings RaDa.exe,查看 RaDa.exe中可打印字符串,发现全是乱码,说明被加壳了
接下来使用超级巡警进行脱壳
选择相应的路径,发现支持脱壳
按下 “给我脱”,脱壳成功,在桌面生成了一个新文件RaDa_unpacked.exe(脱壳文件)
再使用 strings RaDa_unpacked.exe,查看脱壳后的恶意程序的可打印字符串
打开IDA Pro Free
在IDA Pro Free 打开这个文件
切换到strings window,鼠标右键打开set up ,点选Unicode
然后便能查看代码,便能发现Authors:Raul Siles & David Perez,2004
2、动手实践任务二
下载crackme1.exe和crackme2.exe,复制到winXP虚拟机中
(1)crackme1.exe
尝试,试探输入格式
无参数输入,输出I think you are missing something
一个参数输入,输出Pardon? What did you say?
两个以上参数输入,输出I think you are missing something
所以确认程序仅带一个参数
接下来利用IDA Pro打开这个程序分析,打开我们打开通过Strings窗口可以查看该程序中出现的字符串。通过Strings窗口可以查看到该程序中出现的明文字符串,
看到前四项有两项是刚才输出过的,另外两种是“I know the secret”和“You know how to speak to programs, Mr. Reverse-Engineer”。基本猜测,一个是密码,一个是成功的提示语,密码为I know the secret
通过View ->Graphs->Function calls,打开Function calls
放大,C语言编写,通过字符串匹配密码,所以可知关键程序段401280
通过Functions,找到程序段401280
沿着true路线向下,找到关键函数strcmp,是通过与“I know the secret”对比进行判定,确认了猜测
正确着会回复“You know how to speak to programs, Mr. Reverse-Engineer”
(2)crackme2.exe
与crackme1.exe类似,使用IDA Pro打开这个程序
strings window有5个字符串输出
猜测“I know the secret”是密码,crackmepllease.exe意义不明
打开Function calls,找到关键程序段
再用Functions,找到程序段401280
这里我们可以看到程序输入的参数是一个,若输入两个以上参数回复"I think you are missing something",我们尝试输入
我们在尝试输入一个参数
可以看到通过第一道判定
我们尝试"crackmeplease.exe"
也不对,我们发现第二个判定与第三判定相比,开头只少了add eax,4这条代码,我们知道第三条判定是对比输入参数,那么与之相差4,对比的会不会是程序名呢,我们尝试修改程序名copy crackme2.exe crackmeplease.exe
在尝试输入
发现通过了第二次判定
这回我们输入密码“I know the secret”,正确
3、分析实践任务一:
查看摘要和文件类型:md5sum RaDa.exe指令得到其md5摘要,利用file RaDa.exe识别出这是32位GUI文件
运行程序,打开监听工具process explorer对RaDa.exe进行检测
发现该程序用http连接到目标为10.10.10.10的主机下名为RaDa——commands的网页上,创建文件夹C:\RaDa\tmp保存下载文件,进行DDOS拒绝服务攻击,将RaDa.exe复制到C:\RaDa\bin
发现程序还依次读、写和删除注册表,打开注册表查看发现没有信息,则表示已删除
接下来执行exe(执行指定命令)、put(将宿主主机中的指定文件上传到服务器)、get(将服务器中的指定文件下载到宿主主机中)、screenshot(截取宿主主机的屏幕并保存到tmp文件夹)、sleep(停止活动一段时间)
使用IDA对RaDa_unpacked.exe进行分析,在strings windows右键点击Setup,点选 Unicode,查看可找到作者信息
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息
文件的摘要是caaa6985a43225a0b3add54f44a0d4c7,这是一个PE可执行文件,同时也是一个UPX加壳文件
(2)找出并解释这个二进制文件的目的
这个二进制文件是一个后门程序,攻击者可以利用其完全控制该系统,并且只要用户上网,就可以得到到攻击者的攻击指令
(3)识别并说明这个二进制文件所具有的不同特性
该程序运行的时候建立远程连接并修改注册表,将下载的文件存储到C:\RaDa\tmp,并修改注册表跟随系统开机启动:访问http://10.10.10.10/Rada/Rada_command.html,还可以解析指令并执行指令
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术
UPX加壳,同时手动修改进行防范脱壳,一些干扰的误导选项,如没有用到的sql语句SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True,无意义的starting DDOS smurf remote attack
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
样本不具有传播和感染的性质,同时没有将自己伪装成有用的程序以欺骗用户运行,因此不属于病毒、蠕虫、木马,应当是一个后门程序或者僵尸程序
(6)给出过去已有的具有相似功能的其他工具
木马Bobax、特洛伊木马Setiri、GatSla等
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
使用IDA中的strings能查看可以发现,作者为Raul siles 和 David Perze
4、分析实践任务二:Windows 2000系统被攻破并加入僵尸网络
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
1)因特网中继聊天(Internet Relay Chat),简称IRC。IRC的工作原理非常简单,客户端软件通过因特网以IRC协议连接到IRC服务器上即可。IRC特点是通过服务器中继与其他连接到这一服务器上的用户交流。
2)注册时需要发送的消息有三种,分别是口令,昵称和用户信息。格式如下:USER 、PASS 、NICK 。注册完成后,客户端就使用JOIN信息来加 入频道,格式如下:JOIN 。
3)IRC服务器明文传输通常在6667端口监听,也会使用6660—6669端口。SSL加密传输在6697端口。
注意:攻击者滥用IRC构建僵尸网络时,可能使用任意的端口构建IRC僵尸网络控制信道,那么基于端口识别服务不再可靠,要进行基于应用协议特征进行识别(如USER/NICK)。
(2)僵尸网络是什么?僵尸网络通常用于什么?
1)僵尸网络是攻击者出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。
2)僵尸网络,是互联网上受到黑客集中控制的一群计算机,往往被黑客用来发起大规模的网络攻击,如分布式拒绝服务攻击(DDoS)、海量垃圾邮件等,同时黑客控制的这些计算机所保存的信息也都可被黑客随意“取用”。
(3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
下载文件botnet_pcap_file.dat,通过Wireshark打开数据文件botnet_pcap_file.dat,设置过滤条件ip.src == 172.1.16.134.191 && tcp.dstport ==6667,可以找到所有与蜜罐主机进行通信的五个 IRC 服务器:分别为 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为服务器的僵尸网络?
用命令apt-get install tcpflow安装tcpflow
输入tcpflow -r botnet_pcap_file.dat ‘host 209.196.44.172 and port 6667’,得三个文件,172.016.134.191.01152-209.196.044.172.06667、209.196.044.172.06667-172.016.134.191.01152和report.xml,report.xml
查询主机个数主要看是 209. 开头的文件,从这个文件中找到有多少个主机访问了209.196.44.172,包裹数过于庞大,使用管道连接指令筛选
命令:
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
(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 > ip.txt;wc -l ip.txt
(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
用wireshark打开文件botnet.pcap,逐个筛选TCP端口
使用 ip.addr == 172.16.134.191 and tcp.port ==135 筛选端口135的数据。可看出端口135的数据很少,且并没有实际数据交互,推测是在探测。
使用ip.addr == 172.16.134.191 and tcp.port ==25端口筛选,情况类似
端口139的情况有些不同,出现了SMB协议,但并未有实际数据交互,应当是SMB查点
端口80数据量很大,在浏览中发现http协议中异常字段,类似于缓冲区溢出攻击的特征
追踪tcp数据流,可以看到代表蠕虫攻击的c:\notworm
80端口遭受了大量多种攻击,但向外流量均为一个iis服务器的默认页面,所以80端口的这些攻击均失败
端口445中多次出现了SMB协议,而且Path:\172.16.134.191\ADMIN$等多次重复组合出现,筛选浏览,发现61.111.101.78发送了PSEXESVC.EXE,这是一种Dv1dr32蠕虫,这种蠕虫正是通过IRC进行通信。
445的出口流量,发现每个IP地址连入的连接都有响应的回应,所以攻击者肯定是获得了权限,因此这个攻击成功的
最后的端口4899,只看到单个地址,查得4899端口是一个远程控制软件radmin服务端监听端口,这个软件不是木马,应该是上面攻击成功后上载的这个软件方便控制
三、学习中遇到的问题及解决
问题:输入命令tcpflow -r botnet_pcap_file.dat ‘host 209.196.44.172 and port 6667’错误
解决方案:命令中的引号应使用英文,使用中文导致错误
四、学习感想和体会
本次实验内容较多,有难度,通过本次实验了解了一些有关恶意代码的知识,通过实验实践了恶意代码文件类型识别、脱壳、反汇编等。分析了两个程序crackme,进一步了解了取证分析的细节,加深了对于所学知识的理解。通过通过实践和查阅资料提高了动手能力和实践能力。同时还存在许多不足之处,需要继续学习。