20211906 2021-2022-2 《网络攻防实践》第八周作业

1.实践内容

1.1 恶意代码基础知识

恶意代码定义:指的是使计算机按照攻击者的意图执行以达到恶意目标的指令集。

恶意代码分类:计算机病毒、蠕虫、恶意移动代码、后门、特洛伊木马、僵尸网络、内核套件。

1.2 恶意代码分析方法

恶意代码分析技术主要问题:不能事先知道恶意代码的目的是什么
恶意代码具有恶意的攻击目的
恶意代码在绝大多数时候不会具有原代码
恶意代码会引入大量的对抗分析技术

恶意代码分析技术主要包括:静态分析和动态分析
静态分析技术:

动态分析技术:
基于快照对比的方法和工具
系统动态行为监控方法
网络协议栈监控方法
沙箱技术
动态调试技术

2.实践过程

2.1实践任务一

对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:

(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?

首先我们在kali中,打开命令终端,然后先进入桌面,然后使用file命令分析RaDa.exe

可以看到 Rada.exe的运行环境为RaDa.exe: PE32 executable (GUI) Intel 80386, for MS Windows
然后使用程序PEiD.exe进行扫描。在扩展信息中可以看到加壳的工具为UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo

对于脱壳使用超级巡警脱壳机

然后这里将上面脱壳之后的程序使用strings进行字符串提取,可以看到有大量的函数调用名

使用winxpattack里的process explorer软件,查看程序属性,找到copyright(版权)发现作者名字Raul siles&David Perze,时间2004年。

2.2 实践二 分析Crackme程序

在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息

还是使用file命令,这次直接在winxp的命令行用,之前以为只能在linux用file命令

可以看出其是32位Windows下的PE文件,没有图形界面,是命令行文件。

然后在cmd中直接运行该程序查看输出,先猜测该程序带有一个参数。

使用IDA pro工具打开crackme1.exe,选择文件类型为PE

首先直接查看程序中的明文字符串,发现了两个测试程序时没有出现过的字符串“I know the secret”、“You know how to speak to programs,Mr Reverse Engineer”。猜测前者为我们需要的口令,后者为口令成功输入的反馈。


验证一下

在IDA pro工具页面的菜单处:点击view——>graphs——>function calls,查看函数调用

可以得出结论:程序是用 C 语言写的,可以发现字符串比较函数 strcmp 和输出函数 fprintf 和 printf ,估计是使用 strcmp 函数来比较口令。那么关键部分就在 sub_401280 函数中。
首先打开sub_401280函数的流程图

cmp [ebo+arg_0],2为判断程序是否有两个参数。如在命令行输入 crackme1.exe 1 ,那么参数对应的值为 argc=2,argv={”crackme1.exe”,”1”} 。如果有两个参数,那么进行下一步判断,程序用 I know the secret 对应的字符串和用户输入的口令相比较,通过比较的结果反馈口令是否正确。

接着分析分析crackme2.exe

之前步骤同上

使用IDA pro工具来打开crackme2.exe,可以看到明文字符串如下

再来看函数调用图,发现核心函数还是sub_401280。

然后再看



进行测试,通过

分析实践任务一:

分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:

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

2、找出并解释这个二进制文件的目的;

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

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

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

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

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

首先利用md5sum RaDa.exe指令得到其md5摘要值为

接着打开Process Explorer 软件对RaDa_unpacked.exe进行监测(先打开再运行RaDa_unpacked.exe)可以看到如下图

首先通过HTTP协议请求 10.10.10.10\RaDa\RaDa_commands.html,连接到目标为10.10.10.10的主机下的一个名为RaDa_commands的网页
然后又下载和上传文件到 C:/RaDa/tmp
将文件 RaDa.exe 复制到了 C:\RaDa\bin 目录下并激活了自启动,还试图从一个HTML页面获取并解析命令,故猜测这应该是一个后门程序。
由starting DDos smurf remote attack,可以猜测该恶意程序可能对主机实行了DDos拒绝服务攻击。
再往下看

可以看到该恶意程序对主机的注册表进行了读写和删除操作。
之后打开wireshark

可以看到受害主机向目标主机(10.10.10.10)发送了大量数据包(我这里的网络适配器设置成了桥接模式故ip地址与之前的192.168.192.2不一样)
回到IDA工具查看脱壳后的文件,(注意这里要进入 Strings 对话框,在Type 右键点击Setup,设置类型为 Unicode。),也可以找到作者信息


在view中找到ip地址,该程序被执行后可能访问了这个地址。

根据上图ip地址往下,发现得到RaDa_commands.html。寻找这个字符串对应的函数sub_404FB0,(双击sub_404FB0)进入这个函数,看黄色部分的汇编代码,得知是被拷贝到dword_40C030这个变量中。


然后进入这个函数,打开其Call Graph查看

这里我们看到判断了三个网段分别为192.168.、172.16.、10.,

(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息。
MD5摘要信息:caaa6985a43225a0b3add54f44a0d4c7;是一个32位PE GUI可执行程序,同时这是一个UPX加壳文件。
(2)找出并解释这个二进制文件的目的。
通过上面的分析可知,连接互联网时,该恶意程序就会通过http请求连接到指定主机,进行接受攻击者指令操作,并且攻击者可以完全控制该系统,故这应该是一个后门程序或者僵尸程序。。
(3)识别并说明这个二进制文件所具有的不同特性。
该程序启动之后将自己复制到c盘之中,并且每过一段时间就会尝试与10.10.10.10连接
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术。
使用了UPX加壳工具进行了加壳处理
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由。
猜测是后门程序,因为该恶意代码不具有自主传播模块,也不具有传播和感染的性质,故不属于病毒和蠕虫,也并未进行伪装,故不是木马,并且该程序执行需攻击者远程发送指令。
(6)给出过去已有的具有相似功能的其他工具。
Bobax——2004也是使用HTTP协议从指定的服务器下载命令文件,然后解析并执行其中的指令。
(7)可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以,通过Process Explorer 软件对脱壳后的文件:RaDa_unpacked.exe进行监测,在strings窗口发现是Raul siles和David Perze于2004年编写的。(见实践一最后)

分析实践任务二:

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、那些攻击成功了?是如何成功的?

问题一:IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用哪些TCP端口?

因特网中继聊天(Internet Relay Chat),一般称为互联网中继聊天,简称:IRC。它是由芬兰人Jarkko Oikarinen于1988年首创的一种网络聊天协议。经过十年的发展,世界上有超过60个国家提供了IRC的服务。IRC的工作原理非常简单,您只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。所有用户可以在一个被称为"Channel"(频道)的地方就某一话题进行交谈或密谈。每个IRC的使用者都有一个Nickname(昵称)。
注册时需要发送的消息有三种,分别是口令,昵称和用户信息。格式如下:USER 、PASS 、NICK 。注册完成后,客户端就使用JOIN信息来加 入频道,格式如下:JOIN
IRC服务器明文传输通常在6667端口监听,也会使用6660—6669端口。SSL加密传输在6697端口。

问题二:僵尸网络是什么?僵尸网络通常用于什么?

僵尸网络是互联网上受到黑客集中控制的一群计算机,往往被黑客用来发起大规模的网络攻击,如分布式拒绝服务攻击(DDoS)、海量垃圾邮件等,同时黑客控制的这些计算机所保存的信息,譬如银行帐户的密码与社会安全号码等也都可被黑客随意“取用”。

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

把下载的文件用wireshark打开,然后输入ip.src == 172.16.134.191 and tcp.dstport == 6667过滤条件。
我们可以找到五个IRC服务器,分别为:
209.126.161.29
66.33.65.58
63.241.174.144
217.199.175.10
209.196.44.172

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

使用kali环境,输入sudo apt install tcpflow

使用tcpflow分流(筛选指定host与端口),命令tcpflow -r 1.dat "host 209.196.44.172 and port 6667",产生了三个文件,<209.196.044.172.06667-172.016.134.191.01152>、<172.016.134.191.01152-209.196.044.172.06667>、<report.xml>(在桌面出现)


查看report.xml文件,可以看到上述双方的ip地址,端口,mac地址,通信时间等等。

接下来查看209.196.044.172.06667-172.016.134.191.01152。在当前主机进入到IRC的频道之后,频道会将当前频道中所有的主机的信息都发送过来,我们可以从其中的数据包中计算当前频道共有多少主机。这个计算分为两部分。(接下来代码是参考同学的,我自己实现总是出问题。。。)
首先我们计算在当前主机加入IRC时刻,IRC中主机的个数,使用的PY代码如下所述,主机的个数是 3457。这仅仅是第一步的计算。然后我们在计算截至结束嗅探的时候的不断有主机加入和退出IRC频道,我们在补充上这个过程中的主机个数,共计 3608个。具体使用的代码如下:

问题五:那些IP地址被用于攻击蜜罐主机?

因为蜜罐的特殊性,只要是进入蜜罐的流量都应该被认为是攻击。所以首先明确被攻击的端口。使用指令tcpdump -n -nn -r 1.dat 'dst host 172.16.134.191' | grep -v 'reply' | cut -d '.' -f 10 | cut -d ':' -f 1 | sort | uniq | more >1.txt; wc -l 1.txt查找端口并输出到1.txt中,
如图所示,查找到148个被攻击的端口。其中cut -d是指定字段的分隔符,uniq命令用于检查及删除文本文件中重复出现的行列,一般与sort命令结合使用。


接着使用如下指令找出所有的可能连接的主机的 IP 地址。这个指令的作用就是将连接IP地址输出到2.txt中。
tcpdump -n -nn -r 1.dat 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq | more > 2.txt;wc -l 2.txt
其中 awk -F 就是指定分隔符,可指定一个或多个, print 后面做字符串的拼接。)可以看到一共有165个主机被用于蜜罐入侵

问题六:攻击者尝试攻击了那些安全漏洞?

先snort -r 1.dat -c /etc/snort/snort.conf -K ascii指令先查一下网络流分布情况。我们发现大部分都是TCP包,有一部分UDP包,所以我们首先应该筛选出响应的TCP端口和UDP端口。
再用tcpdump -r 1.dat -nn 'src host 172.16.134.191' and tcp[tcpflags]== 0x12 | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq

将协议部分改为 udp ,同样可以筛选出 udp 端口137(netbios-ns)
tcpdump -r 1.dat -nn 'src host 172.16.134.191' and udp | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq

然后分析端口
首先是137,这个是在局域网中提供计算机的IP地址查询服务,处于自动开放状态,所以访问这个端口是 NetBIOS 查点。

tcp 135号端口和25号端口,我们看到只是进行了连接,但是是没有数据的交互的(len=0),所以这攻击者可能是对这两个端口进行了connect扫描。

然后看TCP 80端口,首先利用Wireshark进行筛选tcp.dstport==80 && ip.dst == 172.16.134.191,首先连接最多的就是24.197.194.106这个IP,他的行为就是不停的用脚本在攻击IIS服务器的漏洞,从而获取系统权限,正是因为用的脚本,所以才会有这么多记录

然后是210.22.204.101访问的80端口,可以看到超多的C,可能攻击者是想通过缓冲区溢出攻击来获得一个命令行。

最后一个访问80端口的是218.25.147.83,看到这么多N以为是缓冲区溢出攻击,但是继续往下看会看到c:\notworm,通过百度可以发现这是一个红色代码蠕虫攻击。


我们通过蜜罐主机80端口向外的流量进行分析,发现蜜罐主机做的几次回应均为一个iis服务器的默认页面http/1.1,所以80端口的这些攻击均失败。

接下来是TCP 139号端口。这个也比较简单,虽然有很多连接到这个端口的,但是基本都是一样的,大部分都是连接,然后很多空会话,同样这个也没有成功,这个应该是个SMB查点。

下面分析与139端口关系极其密切的TCP 445端口。这个端口连接非常多,同时我们也能看到许多\samr, \srvsvc,这些都是基本的查点,这里确实不好找,建议用strings查询相关的字符串进行分析,或者就像我一样硬看,查询字符串后很容易发现一个PSEXESVC.EXE字符串,同时你在Wireshark中也能找到,是由61.111.101.78发起的,通过对这种字符串的搜索,发现这是一种Dv1dr32蠕虫,这种蠕虫正是通过IRC进行通信。那么我们怎么判断是不是攻击成功了呢?我们同样找出口流量,发现每个IP地址连入的连接都有响应的回应,并且返回信息中含有\PIPE\ntsvcs,通过搜索可知,这是一个远程调用,所以攻击者肯定是获得了权限,因此这个攻击成功的。


最后还剩一个TCP 4899端口。只有一个IP访问过,即210.22.204.101。可以查得4899端口是一个远程控制软件radmin服务端监听端口,这个软件不是木马,应该是上面攻击成功后上载的这个软件方便控制。

3.问题总结

问题1.rada打不开

方案:结果发现不需要打开也可以分析???。没懂
问题2:代码能力差,还需加强

4.学习总结

这次实践内容多,难度较大,花了我两个晚上才做好,期间参考了很多资料和别的同学的实践过程,也讨论了不少,收获很大。

5.参考资料

https://www.cnblogs.com/xiongjia/p/12791743.html
https://www.cnblogs.com/charlesxie/p/12776522.html#实践三样本分析分析一个自制恶意代码样本
https://book.douban.com/subject/6558082/

posted @ 2022-05-06 17:47  itumes  阅读(118)  评论(0编辑  收藏  举报