20211908 孟向前 2021-2022-2 《网络攻防实践》第八周作业

实践八 恶意代码分析实践
1.实践内容
恶意代码的定义
恶意代码(Malware,或 Malicious Code)指的是使计算机按照攻击者的意图执行以达到恶意目标的指令集。
分析一下这个定义,首先恶意代码是一组指令集,而并不一定是二进制执行文件。恶意代码的实现方式可以多种多样,如二进制执行文件、脚本语言代码、宏代码,或是寄生在其他代码或启动扇区中的一段指令流。
其次,恶意代码的执行目标是由编写者所决定的,满足他们心理上或利益上的一些需求。典型的攻击目标包括但不局限于:
1、单纯的技术炫耀,或恶作剧;
2、远程控制被攻击主机,使之能为攻击者的傀儡主机,满足其实施跳板攻击或进一步传播恶意代码的需要;
3、窃取私人信息(如用户账号/密码,信用卡信息等)或机密信息(如商业机密、政治军事机密等);
4、窃取计算、存储、带宽资源;
5、拒绝服务、进行破坏活动(如破坏文件/硬盘/BIOS等)。
恶意代码类型
恶意代码可以根据其执行方式、传播方式和对攻击目标的影响分为计算机病毒、蠕虫、恶意移动代码、特洛伊木马、后门、僵尸程序、内核套件等,表9-1给出了主流类型恶意代码的特性及典型实例。需要注意的是,一些恶意代码会综合使用多种技术,所以具有多种分类的特性,可以归为融合型恶意代码。计算机病毒作为最早出现的恶意代码类型,其
概念已经广为接受和传播,而媒体和工业界在报道、宣传和命名之后出现的恶意代码形态时,经常称为“计算机病毒”,因而造成了目前业界经常将计算机病毒等价于恶意代码,作为全部各种恶意代码形态的总称。

恶意代码的发展趋势
从图9-2可以归纳出以下几点恶意代码的发展趋势。
(1)恶意代码的复杂度和破坏力不断增强:从早期简单感染DOS操作系统的Brain病毒到复杂的内核级后门工具和破坏力强大的蠕虫,恶意代码在快速传播、隐蔽性、破坏力和对抗性上都在不断的发展。
(2)恶意代码技术的创新越来越频繁:特别是在最近的几年中,大量的新概念被不断地提出,同时验证这些新概念和新技术的恶意代码也频繁地公布与众。
(3)关注重点从计算机病毒转移到蠕虫和内核级的攻击工具:在20世纪80至90年代,恶意代码的关注重心在于感染可执行程序的计算机病毒,但从最近几年的发展趋势看来,更多的关注焦点已经转移到对整个互联网造成严重危害的僵尸网络、网页木马,以及内核级的高级攻击技术。

2.实践过程
动手实践任务一
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?

1.从云班课上下载rada软件并移植到虚拟机上。cd到rada所在目录。

2.首先查看文件类型,直接用file命令就可以file RaDa.exe。可以看出来是一个PE文件(PE文件的全称是Portable Executable,意为可移植的可执行的文件),还有图形界面(GUI),运行平台是32位的windows.

3.接着使用PEiD工具查看文件加壳类型,PEiD是用来查看Windows PE文件基本信息的工具。可以看到文件的入口点、偏移、EP段等信息和加壳的类型(UPX)。

4.使用strings命令查看脱壳前的RaDa.exe中可打印的字符串,可以发现有大量的是一些乱码。

5.使用自动化脱壳工具,超级巡警工具对文件进行脱壳,生成了脱壳软件。

6.使用strings命令查看脱壳后的RaDa.exe中可打印的字符串,脱壳成功可以发现有大量的调用函数。

7.利用IDA进行脱壳软件的字符提取,用IDA打开脱壳之后的文件(未找到作者信息)。

8.运行rada程序,使用软件process explorer进行监控,查看程序属性,在find里面输入copyright查找到编写者名字Raul Siles & David Perez,出版于2004年。

动手实践任务二:分析Crackme程序
任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。

1.首先查看文件类型,直接用file命令就可以,file crackme1.exe查看文件类型。

2.首先运行crackme1.exe。猜测参数执行,当一个参数输入与其他的参数输入得到的输出明显不一样(多个参数:I think you are missing something,一个参数:Pardon? What did you say?)所以猜测这个程序的输入不止有一个参数。

3.然后使用IDA打开程序,关注字符串窗口。

4.直接查看程序中的明文字符串strings,前两个为已经执行过的命令,后两者为没有出现过的字符串I know the secret、You know how to speak to programs,Mr Reverse Engineer。猜测前者为我们需要的口令,后者为口令成功输入的反馈。

5.查看整个程序的 call flow:

6.注意到c语言匹配和打印函数,寻找上层函数sub_401280的字符串。可以发现输入对应命令后的输出。

7.注意"I know the secret"这个字符串,输入程序,成功。

8.分析crackme2.exe,程序的过程同上。查看Strings一共有五条输出命令。Strings window界面,明文字符串如下图所示:

9.查看Function call,主要查看 sub_401280

10.注意到sub_401280流程图中操作接着用strcmp 函数对 argc 里面的第一个字符串,即程序名,和“crackmeplease.exe”进行判断(直接输入crackmeplease.exe命令失败,所以不是这个口令)。

11.通过程序名判断后,用户输入的口令与“I know the secret”判断。

12.注意到.exe的后缀可能需要先对比程序的程序名,再对比字符串“I know the secret”,将程序复制,改名为crackmeplease.exe,再输入参数,成功。

分析实践任务一:
分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
2、找出并解释这个二进制文件的目的;
3、识别并说明这个二进制文件所具有的不同特性;
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
6、给出过去已有的具有相似功能的其他工具;
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?

1.使用md5sum命令查看摘要信息, md5摘要值为caaa6985a43225a0b3add54f44a0d4c7。

2.使用process explorer工具动态分析如图所示,一共顺序进行了以下四步,
1、尝试与10.10.10.10建立tcp连接;
2、将文件RaDa.exe复制到了C:\RaDa\bin目录下;
3、将自己添加到了自动启动之中(HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run即为控制计算机启动项的注册表信息);
4、开启远程ddos攻击、smurf攻击。

3.通过以上可以猜测这个软件应该是一个后门程序,其建立网页连接是为了远程获取指令或者下载某文件。

1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
md5摘要值为caaa6985a43225a0b3add54f44a0d4c7
2、找出并解释这个二进制文件的目的;
下载后门到目标主机,发动拒绝服务攻击,远程与目标主机通信。
3、识别并说明这个二进制文件所具有的不同特性;
隐蔽性好,不易被发现,还能与其他主机通信。
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
UPX 压缩技术。
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
恶意代码样本程序是一个后门程序。不具有传播和感染的性质,所以不是病毒和蠕虫;没有将自己伪装成有用的程序以欺骗用户运行,所以不是木马。
6、给出过去已有的具有相似功能的其他工具;
Bobax,Setiri、GatSla.
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
在实践一已经分析过,作者为Raul siles 和 David Perez,2004年。

分析实践任务二:
Windows 2000系统被攻破并加入僵尸网络
任务:分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。回答下列问题:

1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC是Internet Relay Chat 的英文缩写,中文一般称为互联网中继聊天。IRC的工作原理非常简单,只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。IRC明文传输使用的端口6667,偶尔也会使用6660—6669SSL加密。使用的端口6697。

2、僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络是一组以协调方式连接的计算机,用于恶意目的。僵尸网络中的每台计算机都称为僵尸网络。这些机器人形成受损计算机网络,由第三方控制并用于传输恶意软件或垃圾邮件或发起攻击。

3、蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
1.下载botnet_pcap_file.dat,导入到wireshark。
2.输入过滤器筛选, ip.src == 172.16.134.191 and tcp.dstport == 6667,加密和明文传输。
3.可以发现与IRC服务器都为明文传输,而且一共和5个IP进行了通信。分别为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为服务器的僵尸网络?

1.打开kali虚拟机,输入命令sudo apt-get install tcpflow安装tcpflow。输入tcpflow -r botnet_pcap_file "host 209.196.44.172 and port 6667"指令进行读取文件指定host和端口6667的信息分流。桌面生成了三个文件。209.196.044.172.06667-172.016.134.191.01152、172.016.134.191.01152-209.196.044.172.06667、report.xml。重点看第一个从209.196.44.172,6667端口通信的流量。

2.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 ' ' '\n' | tr -d "\15" | grep -v "^$" | sort -u | wc -l
grep获取昵称输出,sed去除前缀,tr将空格转换为新行,tr -d去除\r,grep -v "^$"去除空行,sort -u排序并去重,wc计算行数,输出的个数为104.

5、那些IP地址被用于攻击蜜罐主机?
1.输入tcpdump -n -nn -r botnet.pcap 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq | more > 1.txt;wc -l 1.txt,筛选目标地址为172.16.134.191的连接者个数和ip,并输出为txt二五年间。

6、攻击者尝试攻击了那些安全漏洞?
7、那些攻击成功了?是如何成功的?
1.查看tcp响应过的端口,tcpdump -r botnet.pcap -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;udp端口有137。445和80端口为smb和HTTP端口容易被列为攻击目标。

2.用wireshark筛选通过80端口的数据包,tcp.dstport==80 && ip.dst == 172.16.134.191,连接最多的就是24.197.194.106这个IP,不停在http协议上尝试web探测,不过也都是回应正常的页面(没成功)应该是lls漏洞(远程执行代码漏洞)。

3.接下来分析445端口,也就是smb协议端口。tcp.dstport == 445 && ip.dst == 172.16.134.191,发现加载了一个动态库。

4.这个端口连接非常多,可以看到许多 \samr, \srvsvc 字符串,发现PSEXESVC.EXE字符串,是由61.111.101.78发起的,通过对这种字符串的搜索,发现这是一种Dv1dr32蠕虫,这种蠕虫正是通过IRC进行通信。

5.该IP地址与蜜罐建立了会话,说明攻击成功.

6.IP为210.22.204.101的主机,查询支持的smb协议应该是想尝试远程登录。

7.最后也成功建立了连接,还有知道了登陆账户。

8.TCP 139号端口。虽然有很多主机连接到这个端口的,但是基本都是一样的,大部分都是连接,然后很多空会话,同样也没有成功,所以应该是 SMB 查点.

3.学习中遇到的问题及解决
问题:在安装tcpflow时,总是安装不成功。
解决:把Kali官网的源换成其他源,安装成功。

4.学习感想和体会
学习了恶意代码分析的相关知识,练习使用了PEiD、超级巡警、IDA、tcpflow等工具,查阅了许多相关博客和文档,对恶意代码分析有了更深入的理解。

参考文献
网络攻防技术与实践——诸葛建伟

posted on 2022-05-05 15:43  仰望星空dream  阅读(100)  评论(0编辑  收藏  举报