1.实验内容
1.1实验要求
(1)对恶意代码样本进行识别文件类型、脱壳、字符串提取操作。
(2)使用IDA Pro静态或动态分析所给的exe文件,找到输出成功信息的方法。
(3)分析恶意代码样本并撰写报告,回答问题。
(4)对于Snort收集的蜜罐主机5天的网络数据源进行分析,回答问题。
1.2学习内容
恶意代码、僵尸网络、病毒、蠕虫等的概念,恶意代码及普通软件的静态或动态分析方法,PEID、IDA Pro、Process Explorer等软件的使用,对网络流量的分析方法。
2.实验过程
2.1恶意代码文件类型标识、脱壳与字符串提取
2.1.1分析rada样本的文件格式、运行平台和加壳工具
利用kali的file
命令,分析可得文件的格式是可执行文件exe(executable),运行平台是win32(PE32、for MS Windows),文件运行时有图形界面(GUI),文件包含三个节(3 sections)。
利用软件PEID可以发现文件使用了UPX加壳工具。
2.1.2对rada样本进行脱壳处理
利用软件PEID自带的脱壳工具对RaDa.exe进行脱壳,该工具会自动检测入口点。
脱壳完成后,得到RaDa.exe.unpacked.exe文件。
2.1.3利用字符串提取工具对脱壳后的样本进行分析
打开IDA Pro,选择第一个选项PE Executable,选择脱壳之后的样本,一直点击确定,然后打开Strings界面,在该界面发现疑似作者名称的字符串[c] Raul Siles && David Perez,同时也可以发现软件制作时间为2004年9月。
2.2利用IDA Pro静态或动态分析所给的exe文件
2.2.1分析crackme1.exe
直接运行crackme1.exe在输入少于或多于一个参数时会输出“I think you are missing something.”在输入一个参数时会输出“Pardon?What did you say”,由此可以推断应该输入一个参数,关键在于找到这个正确的参数。
打开IDA Pro,选择选项PE Executable,选择crackme1.exe,打开IDA View-A页面。
点击View->Graphs->Function calls,打开函数调用图,发现sub_401280调用了strcmp、printf等这些有关字符串处理的函数,可以合理推测它在参数判断中有重要作用。
在Functions页面点击sub_401280。
点击View->Graphs->Flow chart,打开函数流程图。
对函数流程图进行如下分析,可以合理推测正确的输入参数是“I know the secret.”
按分析输入相应的参数,程序输出了成功信息。
2.2.2分析crackme2.exe
直接运行crackme2.exe,发现它像上一个exe文件一样,需要输入一个参数,但是此时还会有认证问题。
按照上次的方式打开函数调用图,发现sub_401280调用了strcmp、fprintf、putchar、puts这些字符串处理函数,推测它具有重要作用。
在Functions页面点击sub_401280,再打开函数流程图。
这一流程和crackme1.exe中看到的流程类似,但多了一个第一个参数的判断流程,由此可以推断出函数需要将第一个参数改成特定名称。
按分析结果改变文件的名称为crackmeplease.exe,再次运行,程序输出了成功信息。
2.3分析恶意代码样本rada,并撰写报告
2.3.1信息获取过程
使用file命令和md5sum命令,得到RaDa.exe的摘要和基本信息。
打开process explorer,然后运行脱壳后的Rada,双击进程,查看Strings窗口。在Strings窗口中,可以看到如下图的一些重要信息。
对这些信息进行合理分析,其操作可能是:
(1)网络访问和CGI脚本
http://10.10.10.10/RaDa
可能是恶意软件尝试访问的某个Web服务器。
RaDa_commands.html
、cgi-bin
、download.cgi
、upload.cgi
可能是该Web服务器上的资源或脚本,用于数据传输或执行命令。
(2)文件系统操作
C:\RaDa\tmp
、C:\RaDa\bin
可能是恶意软件在创建目录,用于存放一些内容,比如字符串中包含的RaDa.exe
。
(3)注册表操作
HKLM\Software\Microsoft\Windows\CurrentVersion\Run\
这是Windows注册表中的一个路径,用于存储启动时自动运行的程序。
RaDa
、REG SZ
、C:\Rada\bin
、RaDa.exe
这表明恶意软件可能已经或试图将RaDa.exe添加到系统的启动项中,以便每次系统启动时自动运行。
HKLM\Software\VMware, Inc.\VMware Tools\InstallPath
这个注册表路径与VMware Tools的安装路径有关,可能被恶意软件用于检测或修改VMware环境。
(4)DDos攻击
Starting DDoS Smurf remote attack...
这明确指出了恶意软件尝试启动一种名为Smurf的DDoS攻击。这种攻击中,攻击者通过向一个或多个计算机网络发送带有欺骗性源地址的ICMP请求,这些网络在响应这些请求时,实际上是在帮助攻击者放大初始攻击流量,从而可能压倒目标服务器,使其无法正常访问。
(5)脚本和注册表操作代码
Scripting.FileSystemObject
、Wscript.Shell
这些是VBScript中用于文件操作和脚本执行的对象。
RegWrite
、RegRead
、RegDelete
这些是VBScript中用于修改注册表的函数。
2.3.2问题回答
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
摘要:caaa6985a43225a0b3add54f44a0d4c7。
基本信息:格式是可执行文件exe,运行平台是win32,文件运行时有图形界面,包含三个节。
(2)找出并解释这个二进制文件的目的;
根据上述的分析,这个恶意程序的目的可能是在系统上安装恶意软件,使其在启动时自动运行,并发起DDoS攻击。
(3)识别并说明这个二进制文件所具有的不同特性;
①它会在注册表中进行修改操作。②它会在文件系统中进行创建目录、下载文件等操作。③它会发动DDoS攻击。
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
这个文件采用了UPX壳。UPX会在可执行文件的头部插入一段壳代码,这段壳代码负责在程序运行时解压原始程序的代码,并跳转到原始程序的入口点执行。UPX的本意是进行压缩,然而也可以用于混淆,防止被分析或逆向工程。
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
它是后门程序。①它没有呈现出自我复制和传播的特点,所以不是病毒或蠕虫。②它没有依赖于特定的宿主程序,所以不是病毒。③它没有伪装成正常程序,所以不是木马。
(6)给出过去已有的具有相似功能的其他工具;
①msfvenom②veil。它们都可以生成后门程序。
(7)可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以,上述实验过程中已使用IDA Pro发现了开发作者名称,在process explorer的Strings窗口,也可以找到这一信息。
①需要有特定的技术环境支持,比如各种字符串提取工具。②文件需要未经过混淆处理(加密/压缩等),本次实验中对未脱壳的文件进行分析只能得到乱码。③作者需要留下自己的相关信息。
(8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
①基于特征码的检测
在特征码库中记录实现发动DDoS、连接某些特定网站等不良行为的一段或多段数据,当这一恶意软件中有相关信息与之匹配,就可以实现检测。
②基于行为的恶意软件检测
对软件运行过程进行检测,则当软件进行修改文件、连接某些特定网站等行为时,就可以判定其为恶意软件。
③沙箱检测法
先让软件运行在一个隔离的、受限的执行环境,用于模拟真实系统的运行。若在运行过程中发现异常,则判定其为恶意软件。
④完整性校验法
在官方网站上下载哈希值或数字签名,对软件进行验证,若不同则说明软件被篡改,该软件大概率就是恶意软件。
⑤基于网络流量的检测方法
恶意软件在感染系统后,通常会进行网络通信,以接收指令、上传数据或下载其他恶意组件。这些网络通信行为会产生特定的网络流量特征,如特定的端口号、协议类型、数据包大小、数据内容等,可以基于此进行检测。
2.4取证分析实践
2.4.1IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
①IRC(Internet Relay Chat)是互联网中继聊天协议,允许用户通过特定客户端软件,在不同频道中进行实时文本交流。②当IRC客户端申请加入网络时,会发送JOIN消息来加入频道,该消息包含频道名称和用户昵称等信息。③IRC使用的服务器端口有6667(明文传输)、6697(SSL加密传输)等,也会使用6660-6669端口。
2.4.2僵尸网络是什么?僵尸网络通常用于什么?
①僵尸网络是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。
②拒绝服务攻击,攻击者可以向自己控制的所有主机发送指令,让它们在特定的时间同时开始连续访问特定的网络目标,从而达到DDos的目的;
发送垃圾邮件,攻击者可以利用被控制的主机发送大量的垃圾邮件,同时很好地隐藏自身的信息;
窃取秘密,攻击者可以从僵尸主机中窃取用户的各种敏感信息和其他秘密,例如个人账号、机密数据等;
滥用资源,攻击者利用被控制主机从事各种需要耗费网络资源的活动,从而使用户的网络性能受到影响,甚至带来经济损失。
2.4.3蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
将文件botnet_pcap_file.dat拖入wireshark中,将过滤条件设置为ip.src == 172.16.134.191 and tcp.dstport == 6667
,根据过滤得到的数据包,得到蜜罐主机与IP地址为209.126.161.29
、66.33.65.58
、63.241.174.144
、217.199.175.10
、209.126.161.29
的这些IRC服务器进行过通信。
2.4.4在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
先安装软件tcpflower,输入命令apt-get install tcpflow
即可下载成功。
下载完后,输入命令tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"
,这一命令筛选了指定的IP地址和端口。
该目录下新增了三个文件。
我们关心的是访问IP地址为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
命令解释:
grep -a "^:irc5.aol.com 353"
:查找以 :irc5.aol.com 353 开头的行。sed "s/^:irc5.aol.com 353 rgdiuggac @ #x[^x]*x ://g"
在文本中查找所有以 :irc5.aol.com 353 rgdiuggac @ #x 开头,后跟零个或多个不是 x 的字符,然后以 x (x 后跟一个空格)结尾的字符串,并将这些字符串删除。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 > 20222408.txt;wc -l 20222408.txt
,将攻击蜜罐主机的ip筛选出来并输出至文件中。
命令解释
tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191'
筛选保存的数据包,不要解析ip地址和端口号。awk -F " " '{print $3}'
使分隔符为空格,筛选出所有源地址。cut -d '.' -f 1-4
将输出整理为ip地址的格式。sort | uniq | more > 20222408.txt
排序,删除重复行,按页显示,输出。wc -l 20222408.txt
计数。
总计有165个IP地址用于攻击蜜罐主机,下图中截取了文件的开头和结尾。
2.4.6攻击者尝试攻击了那些安全漏洞?
点击wireshark的统计->协议分级,可以看到有tcp包和udp包,tcp包占了大部分。
在kali终端中输入命令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(RPC远程过程调用)、139(NetBIOS/SMB)、25(SMTP简单邮件传输协议)、445(SMB,用于文件、打印机等的共享)、4899(Radmin,用于远程控制)、80(HTTP)。
再使用命令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端口。
命令大致意思为“筛选ip地址和协议->整理出端口号->删除重复行”
从中可以看出响应的端口有137(NetBIOS)。
2.4.7那些攻击成功了?是如何成功的?
①135
输入筛选条件tcp.port == 135 &&ip.dst == 172.16.134.191
(下面的筛选条件也是类似)
发现只是普通地建立了一个连接。
②139
未发现有什么异常。
③25
建立了连接,普通地发了几个数据包,没有什么异常。
④445
发现61.111.101.78往主机发送了PSEXESVC.EXE。PSEXESVC.EXE作为PsExec服务的一部分,允许用户远程执行命令或运行程序,也可以应用于攻击。
但这个文件最后也被删除了,在此期间没有特别可疑的行为。
⑤4899
有大量的PSH包,表现出攻击行为。
⑥80
有大量包含一长串“c”的包,表现出缓冲区溢出攻击的行为。此后也有大量数据交互包,表现出攻击成功。
⑦137
未发现有什么异常。
综上所述,实现了攻击的应该是tcp的4899和80端口。
3.问题及解决方案
- 问题1:对于如何利用tcpflower处理数据包不是很了解。
- 问题1解决方案:通过交流、搜索、学习的方法得知了合理的数据包处理方式,得到了正确的结果。
- 问题2:缺乏根据数据包分析网络攻击行为的能力。
- 问题2解决方案:也是通过不断地搜索与学习,获取一些知识再进行分析。
4.学习感悟、思考等
在本次实验过程中,我巩固了恶意代码、僵尸网络、病毒、蠕虫等概念,掌握了多种分析恶意代码和普通软件的方法,以及PEID、IDA Pro、Process Explorer等软件的使用技巧。
在利用IDA Pro进行静态或动态分析时,我学会了如何通过函数调用图、函数流程图等工具来推断程序的逻辑和行为,锻炼了我的逻辑思维能力。
在分析恶意代码样本rada时,我逐渐掌握了如何利用Process Explorer等工具来提取和分析恶意代码中的关键信息。
在取证分析实践中,我通过Wireshark和tcpflow等工具对蜜罐主机的网络数据源进行了分析。这个过程让我意识到,通过对网络流量的分析和监控,我们可以及时发现和防范各种网络攻击和威胁。
这次实验的操作不算复杂,但流程较多,且理解内容也较多较困难。完整做完这一次实验,不仅锻炼了我的实践能力,也让我对网络安全有了更广泛更深刻的认识。我将在今后的学习和工作中,继续努力提升自己的专业技能,为网络安全事业贡献自己的力量。