1 实践内容
2 实践过程
2.1 恶意代码文件类别识别、脱壳与字符串提取
-
使用
file RaDa.exe
命令,查看RaDa.exe的文件类型,可知这是一个32位Windows PE可执行文件,并且有图形化窗口。
-
使用
strings RaDa.exe
命令查看RaDa.exe中可打印字符串,发现都是乱码,有可能是加壳导致的。
-
【开始->所有程序->PE->PEiD->PEiD_cn】使用PEiD工具来查看加壳的类型。
-
用超级巡警进行脱壳,这一个UPX壳,脱完之后输出为RaDa_unpacked.exe。
-
脱壳后,再一次提取字符串。但是还没有找到所需要的信息。
-
打开IDA Pro Free选择RaDa_unpacked.exe查看。可以得到作者信息等。
2.2 分析Crackme程序
分析crackme1.exe
-
执行crackme1.exe进行,试探输入格式。一个参数输入与其他的参数输入得到的输出不一样,猜测这个程序的输入格式是一个参数。
-
来利用IDA Pro打开这个程序分析。
-
查看程序中的明文字符串,前四项中,
I think you are missing something
和Pardon? What did you say?
已经见过。然后对这四项对应的具体功能就行探究。
-
【View->Graphs->Function call】查看函数调用图,查找字符串操作相关的函数,发现了
strcmp
,用来匹配字符串进行密码的匹配。那么调用其的程序段401280就尤其重要。
-
打开此程序,【View->Graphs->Flow chart】查看汇编代码
-
猜测如下。
-
在命令行中进行验证。注意在输入密码时要加双引号。
I know the secret
为密码,You know how to speak programs,Mr.Reverse-Engineer
为输入正确的输出。
分析crackme2.exe
-
同样的,先对参数进行一下猜测。也是一位,并且初步判定也是一个身份认证功能。
-
来利用IDA Pro打开这个程序分析。
-
查看程序中的明文字符串,前五项中,
I think you are missing something
和I have a identity problem
已经见过。然后对这五项对应的具体功能就行探究。
-
【View->Graphs->Function call】查看函数调用图,查找字符串操作、输出的相关的函数,发现了
strcmp
等函数,用来匹配字符串进行密码的匹配。那么调用其的程序段401280就尤其重要。
-
猜测如下。
-
接下来进行验证。所有验证通过后得到非明文的输出。
-
试验结束。
2.3 样本分析实践:分析一个自制恶意代码样本rada并攥写分析报告
-
使用MD5对该恶意程序进行摘要信息分析
md5sum Rada.exe
。 -
执行file RaDa.exe分析该恶意程序的运行环境,在前面已经讲过的,不再赘述。
-
打开process explorer 和wireshark,点击运行恶意程序脱壳后的RaDa.exe。
-
在process explorer 中,查看strings进行分析。
-
该使用http连接到目标为10.10.10.10的主机下的一个名为
RaDa_commands
的网页上,然后下载上传文件,并且在靶机上创建一个文件夹“C:/RaDa/tmp”来保存其下载的文件。 -
该恶意程序中可执行DDos拒绝服务攻击。
-
发现该恶意程序对主机注册表进行了读写和删除操作
-
发现了一些应该是指令的字符
-
发现了一条和数据库查询语句相关的信息。
-
接下来看在Wireshark中捕获的包。
-
在以上分析中发现了IP
10.10.10.10
,那么使用过滤器ip.src == 10.10.10.10 or ip.dst == 10.10.10.10
。追踪数据流没有发现有用信息。
1.这个二进制文件摘要信息:md5摘要值为caaa6985a43225a0b3add54f44a0d4c7,为32位PE GUI可执行程序,同时使用一个UPX加壳。
2.恶意文件的目的:其是一个http后门程序,当连接上互联网时,该程序就会通过http请求连接到指定主机,攻击者可以完全控制该系统。
3.所具有的不同特性:该程序运行后会在C盘下创建了一个RaDa目录,里面包含bin和tmp文件夹,tmp前面分析过是用来临时存储从目标主机下载到受害主机的文件和从受害主机获取的文件信息,在bin文件夹发中有一个RaDa.exe可执行文件,运行时没有任何提醒信息,具有隐蔽性。
4.所采用的防止被分析或逆向工程的技术:该文件使用了UPX加壳。
5.对恶意代码样本进行分类:本恶意程序为后门程序。该程序执行需要通过攻击者远程发送指令且该程序没有自我复制和传播,也没有将伪装成其他程序。
6.给出过去已有的具有相似功能的其他工具:木马Bobax,Setiri,使用HTTP协议从指定的服务器下载命令文件,然后解析并执行其中的指令。
7.可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?可以,使用监视工具分析该恶意程序。
2.4 取证分析实践:Windows2000系统被攻陷并加入僵尸网络
问题一
因特网中继聊天(Internet Relay Chat),一般称为互联网中继聊天,简称为IRC。IRC的工作原理非常简单,您只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。IRC上的信息交流采用请求与应答的模式. 请求是由服务器或客户端发出的,其目的是请求(另)一个服务器执行某个操作或提供某些信息; 应答是服务器对一个请求的回应信息。注册时需要发送的消息有三种,分别是口令
USER <username> <hostname> <servername> <realname>
,昵称PASS <password>
和用户信息NICK <nickname>
。注册完成后,客户端就使用JOIN信息JOIN <channel>
来加入频道。IRC服务器明文传输通常在6667端口,SSL加密传输在6697端口。
问题二
僵尸网络是采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序),从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。僵尸程序可以是一种木马、病毒、蠕虫等等,黑客利用某些用户主机的系统漏洞、发送钓鱼邮件或者社工等手段抓取了一定数量的肉鸡后,就对肉鸡们植入僵尸程序,这样僵尸网络就慢慢组成了。组成的僵尸网络可以用来当做二级服务器进行病毒样本的散播,也可以用来进行一些DDoS攻击、CC攻击等一些需要大量服务器进行的大规模分布式攻击。
问题三
使用Wireshark打开数据文件,已知IRC通过6667端口,则设置过滤条件ip.src == 172.16.134.191 && tcp.dstport == 6667
。
66.33.65.58
63.241.174.144
217.199.175.10
209.126.161.29
209.196.44.172
问题四
-
观察期间不同昵称出现个数来判断有多少主机访问了以 209.196.44.172为服务器的僵尸网络。
-
打开终端,读取文件,筛选 host 和端口 6667 后进行分流,生成一个 report 文件和两个分流的文件。
tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"
。我们要看的是209.196.44.172的主机,故看其分流文件。
-
执行
export LC_COLLATE='C',export LC_CTYPE='C'
避免出现字符编码问题。 -
使用管道命令进行筛选。
cat 命令,连接209.输出文件。
grep 搜索获取昵称输出行。
sed 去除前缀,最后的 g 是全局的意思。
tr 将空格转换为换行。
tr -d 删除
。
grep -v 就是NOT指令,去除空行。
sort -u 排序并去除重复。
wc -l 输出行数
cat 209.196.044.172.06667-172.016.134.191.01152 | grep "^:irc5.aol.com 353" | sed "s/^:irc5.aol.com 353 rgdiuggac @ #x[^x]*x ://g" | tr ' ' '
' | tr -d "15" | grep -v "^$" | sort -u | wc -l
问题五
-
认为进入蜜罐的流量都是攻击,在Wireshark中筛选目的地址为蜜罐主机
ip.dst == 172.16.134.191
。
-
筛选出的数据不容易观察,在Wireshark中对源地址进行统计。
问题六七
-
首先要了解攻击端口,使用
snort -r botnet_pcap_file -c /etc/snort/snort.conf -K ascii
查看网络流分布情况。 -
大部分都是TCP包,小部分UDP包,所以首先应该筛选出响应的TCP端口和UDP端口。
-
利用
tcpdump -r botnet_pcap_file -nn 'src host 172.16.134.191' and tcp[tcpflags]== 0x12 | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq
筛选出蜜罐主机相应的TCP端口。同理,筛选出UDP端口。如下。
//TCP
135(rpc)
139(netbios-ssn)
25(smtp)
445(smb)
4899(radmin)
80(http)
//UDP
137(netbios-ns)
-
udp 137:在局域网中提供计算机的IP地址查询服务,处于自动开放状态。访问该端口为了NetBIOS查点。
-
tcp 13525:只进行了连接,没有发送和接收数据。所以能是进行了connect扫描。
-
TCP 80访问该端口的IP有:
-
连接最多的就是
24.197.194.106
,不停的用脚本在攻击IIS服务器的漏洞,从而获取系统权限,正是因为用的脚本,所以才会有这么多连接。 -
210.22.204.101
访问的80端口,发现一堆C,攻击者是想通过缓冲区溢出攻击来获得命令行。
-
68.169.174.108
访问的80端口是正常的HTTP访问。 -
218.25.147.83
发现c: otworm
,这是一个红色代码蠕虫攻击。
-
192.130.71.66
访问的80端口是正常访问。 -
66.8.163.125
访问的80端口是正常访问。 -
通过蜜罐主机80端口向外的流量进行分析,发现蜜罐主机做的几次回应均为一个iis服务器的默认页面,所以80端口的这些攻击均失败。
-
-
TCP 139有很多连接到此端口的,但有很多空会话,这个应该是SMB查点,同样没有成功。
-
TCP 445发现了
PSEXESVC.EXE
字符串,这是一种Dv1dr32蠕虫,是通过IRC进行通信。发现每个IP地址连入的连接都有响应的回应,并且返回信息中含有PIPE tsvcs远程调用,所以攻击者肯定是获得了权限,因此这个攻击成功的。
-
TCP 4899只有
210.22.204.101
访问。该端口是一个远程控制软件radmin服务端监听端口,应该是上面攻击成功后上载的软件方便控制。
3 遇到的问题及解决办法
- Kali主机突然不能上网,域名解析出现问题。尚未解决。更换虚拟机做实验。
4 总结及感悟
靠着老师给的材料和同学的博客,磕磕绊绊算是写完了作业。但很多地方思路还不是很清晰,期待下节课同学的讲解。