20212914 2021-2022-2 《网络攻防实践》第八次(第十周)作业

1.实践内容

1.1 实践介绍

动手实践任务一

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

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

动手实践任务二:分析Crackme程序

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

1.2 学习内容

(1)恶意代码定类和分类

恶意代码:恶意代码(Unwanted Code)是指没有作用却会带来危险的代码,一个最安全的定义是把所有不必要的代码都看作是恶意的,不必要代码比恶意代码具有更宽泛的含义,包括所有可能与某个组织安全策略相冲突的软件。

恶意代码的类别:

计算机病毒:是编制者在计算机程序中插入的破坏计算机功能或者数据的代码,能影响计算机使用,能自我复制的一组计算机指令或者程序代码。

蠕虫:蠕虫病毒是一种常见的计算机病毒。它是利用网络进行复制和传播,传染途径是通过网络和电子邮件。它能传播它自身功能的拷贝或它的某些部分到其他的计算机系统中(通常是经过网络连接)。与一般病毒不同,蠕虫不需要将其自身附着到宿主程序,蠕虫病毒一般是通过1434端口漏洞传播。

恶意移动代码:恶意移动代码是一段计算机程序,能够在计算机或网络之间传播,未经授权、故意修改计算机系统。一般来说,公认的恶意移动代码的变异型可以分为3类:病毒类、蠕虫类和木马程序。

后门:后门程序一般是指那些绕过安全性控制而获取对程序或系统访问权的程序方法。在软件的开发阶段,程序员常常会在软件内创建后门程序以便可以修改程序设计中的缺陷。但是,如果这些后门被其他人知道,或是在发布软件之前没有删除后门程序,那么它就成了安全风险,容易被黑客当成漏洞进行攻击。

特洛伊木马:如今黑客程序借用其名,有“一经潜入,后患无穷”之意,特洛伊木马没有复制能力,它的特点是伪装成一个实用工具,诱使用户将其安装在PC端,从而秘密获取信息。

僵尸程序:僵尸程序通过聊天室,文件共享网络感染存在漏洞的计算机。这些被感染的计算机所保存的 信息都可被黑客随意取用。

内核套件:用以获取并保持最高控制权的一类恶意代码。

(2)恶意代码发展趋势

恶意代码的复杂度和破坏力逐渐增强

恶意代码技术的创新越来越频繁

关注重点从计算机病毒转移到蠕虫和内核级攻击工具

(3)计算机病毒

定义:计算机病毒是一种能够自我复制的代码,通过将自身嵌入其他程序进行感染,而感染过程通常需要人工干预才能完成。这里必须记住:计算机病毒是借助人类帮助从一台计算机传至另一台计算机,这也是其传播机制。

特性:感染性(本质特性)、潜伏性、可触发性、破坏性、衍生性。

感染及引导机制:感染可执行文件(最为普遍的方式):前缀感染机制(病毒将自身复制到宿主程序的始端)、后缀感染机制(病毒将自身复制到宿主程序的末端)、插入感染机制(病毒在感染宿主程序时,病毒代码放在宿主程序的中间)。

(4)网络蠕虫

定义:一种通过网络自主传播、自我复制的独立恶意代码。(从这里就可以看出病毒和蠕虫的区别)

传播机制:主动攻击网络服务漏洞、通过网络共享目录、通过邮件传播。

2.实践过程

2.1 动手实践任务一

对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者。
(1)解压下载的压缩文件,将RaDa放入虚拟机Windows attck的C盘中,同时打开终端,输入file RaDa.exe,查看该文件类型,这是一个有图形化界面(GUI)的 Win32 PE(可移植可执行)程序

(2)下面来看看有没有加壳,下面使用PEiD工具(查壳)来查看加壳的类型。在这里我们可以看到这个是一个版本为0.89.6的UPX壳(压缩壳,更多内容参考UPX壳分析)。还可以看到文件的入口点、EP段、偏移、文件类型等信息。

(3)输入strings RaDa.exe,查看 RaDa.exe 中可打印字符串,发现全是乱码,这说明被加壳了

(4)我们用超级巡警这个软件进行脱壳,这里也识别出了是一个UPX壳,这个压缩壳还是比较容易脱,脱完之后输出为RaDa_unpacked.exe。

(5)再用 strings 查看脱壳后的RaDa_unpacked.exe,发现了脱壳后的恶意程序的可打印字符串

(6)这时候用 IDA Pro Free 打开这个文件,查看详细信息,可以在字符串这一栏中看到作者为Raul Siles 和 David Perze

2.2 动手实践任务二:分析Crackme程序

在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。
(1)首先检查一下两个文件的完整性,计算其 md5 值

(2)使用file命令查看其文件类型,可以看到这两个文件都是32位 windows 下 PE 文件

(3)对crackme1.exe进行执行,猜测参数执行,可以发现一个参数输入与其他的参数输入得到的输出明显不一样,所以可以猜测这个程序的输入是一个参数。

(4)接下来利用 IDA Pro 打开这个程序分析,打开我们打开通过 Strings 窗口可以查看该程序中出现的字符串。通过 Strings 窗口可以查看到该程序中出现的明文字符串,可以看到前面的两种输出信息,“I think you are missing something.” “Pardon? What did you say?”,还发现了“I know the secret”和“You know how to speak to programs, Mr. Reverse-Engineer”这两个字符串。有内容我们可以猜测,前者就是我们需要的口令,后者就是输入口令正确时程序的输出信息。

(5)接下来看函数调用图(Function Call)可以发现:关键的部分在sub_401280这里,程序是使用strcmp函数来输入的,然后利用print和fprint函数输出

(6)下面来看sub_401280,cmp [ebp+arg_0],2为判断程序是否有两个参数。在 C 语言中,主函数通常为int main(int argc,const char **argv),即第一个参数argc对应argv的大小,第二个参数对应命令行的格式。如在命令行输入crackme1.exe 1,那么参数对应的值为argc=2,argv={”crackme1.exe”,”1”}。

(7)再往下看,可以看到其他几条口令

(8)猜测正确的口令应该是I know the secret,输入命令运行改口令,可以得到这样一条回复您知道如何与项目对话,逆向工程师先生,成功

(9)程序 crackme2.exe 的分析过程与之类似,先打开Function call(函数调用图),发现关键的部分在sub_401280这里

(10)下面来看sub_401280,内容与上一个文件基本一致,大致可以判断出关键口令为I know the secret,只是从下图可以看到,代码逻辑中的程序名称改变了,因此需要对程序名称进行修改

(11)修改完后运行文件,输入crackmeplease.exe "I know the secret",发现回复为我有一个小小的秘密:巧克力,成功

2.3 分析实践任务一

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

(1)查看摘要和文件类型:md5sum RaDa.exe指令得到其md5摘要。利用file RaDa.exe识别出这是32位GUI文件。

(2)接下来使用 IDA 对RaDa_unpacked.exe进行分析(该程序在第一个实践中已经被脱壳了),进入 Strings 对话框,在菜单栏中的Edit中点击Setup,设置类型为 Unicode。查看命令行参数:可以看到作者。

(3)找到一个 IP 地址,一些大佬们用wireshark发现该程序被执行后访问了这个地址,得到RaDa_commands.html,可以从上图中画红色圈圈的地方看到其对应的函数为sub_404FB0

(4)进入这个函数,看黄色部分的汇编代码,可以看到其被参数40C030替换,找到该位置,看到该参数对应的函数是sub_4052C0

(5)我们搜索4052C0,打开其Call Graph查看。这里我们看到三个私有网段分别为192.168.、172.16.、10.先确保服务器在私有网段中,然后到服务器去取命令文件

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

A:文件的摘要是caaa6985a43225a0b3add54f44a0d4c7,这是一个PE可执行文件,同时也是一个UPX加壳文件。

Q:找出并解释这个二进制文件的目的。

A:这个二进制文件是一个后门程序,攻击者可以利用其完全控制该系统。

Q:识别并说明这个二进制文件所具有的不同特性。

A:它会自动安装到C盘中,并修改注册表跟随系统开机启动:访问http://10.10.10.10/Rada/Rada_command.html,还可以解析指令并执行指令。

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

A:UPX 加壳技术

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

A:不具有传播和感染的性质,故不属于病毒和蠕虫,同时也未将自己伪装成良性程序以,不是特洛伊木马,排除各种可能后这应该是一个后门程序。

Q:给出过去已有的具有相似功能的其他工具。

A:木马Bobax、海阳顶端、木马Setiri等

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

A:2004年,由Raul siles和David Perze二人编写

2.4 分析实践任务二:Windows 2000系统被攻破并加入僵尸网络

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

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

A:因特网中继聊天(Internet Relay Chat),简称 IRC。IRC 的工作原理非常简单,只需要在自己的 PC 上运行客户端软件,然后通过因特网以IRC 协议连接到一台 IRC 服务器上即可。IRC 特点是通过服务器中继与其他连接到这一服务器上的用户交流。注册时需要发送的消息有三种,分别是口令,昵称和用户信息。IRC 服务器明文传输通常在 6667 端口监听,也会使用 6660—6669 端口。SSL 加密传输在 6697 端口。

Q:僵尸网络是什么?僵尸网络通常用于干什么?

A:僵尸网络是指攻击者(称为botmaster)出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。僵尸网络主要用于:发动DDOS攻击、发送垃圾邮件、 监听用户敏感信息、记录键盘输入信息、 扩散新的恶意软件 和 伪造点击量,骗取奖金或操控网上投票和游戏,同时黑客控制的这些计算机所保存的信息也都可被黑客随意“取用”。

Q:蜜罐主机(IP:172.16.134.191)与哪些IRC服务器进行了通信?

A:通过Wireshark打开数据文件,并设置过滤条件ip.src == 172.16.134.191 && tcp.dstport == 6667,因为我们知道 IRC 服务通过6667端口,可以找到所有与蜜罐主机进行通信的 IRC 服务器:分别为209.126.161.29,66.33.65.58、63.241.174.144、217.199.175.10、209.196.44.172

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

A:这里一般需要装一下sudo apt-get install tcpflow,然后输入命令tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667'获取209.196.44.172与172.016.134.191之间的所有的 IRC 数据包,得三个文件,
172.016.134.191.01152-209.196.044.172.06667、209.196.044.172.06667-172.016.134.191.01152和report.xml,report.xml

Q:哪些IP地址被用于攻击蜜罐主机?

A:使用以下命令查找端口并输出到1.txt 中(tcpdump -nn: 指定将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示;grep -v:排除指定字符串;cut -d '.' -f 10:截取以'.'为分隔符的第 10 列;uniq命令用于检查及删除文本文件中重复出现的行列; wc -l 用于统计文件的行数),总共148个端口

tcpdump -n -nn -r botnet_pcap_file.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

Q:攻击者尝试了哪些安全漏洞?

A:输入snort -r botnet_pcap_file.dat -c /etc/snort/snort.conf -K ascii查看一下网络流分布情况。大部分都是TCP包,所以我们首先应该筛选出响应的TCP端口

使用指令筛选出蜜罐主机相应的TCP端口。指令为:

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打开文件,分析个端口,wireshark中使用条件tcp.dstport==80 && ip.dst == 172.16.134.191进行筛选,这些是目标地址为172.16.134.191、目标端口为80的数据包。个人未发现攻击现象

再看80端口下一个ip地址218.25.147.83,在tcp流中看到c:\notworm(蠕虫攻击)

输入tcp.dstport==139 && ip.dst == 172.16.134.191查看139号端口。可以看到有很多主机连接到这个端口的,但是基本都是一样的,大部分都是连接,个人未察觉到异常

tcp.dstport==445 && ip.dst == 172.16.134.191来看TCP 445号端口,发现一个PSEXESVC.EXE字符串,是由61.111.101.78发起的,这似乎是一个类似于telnet的远程控制程序,某些反病毒扫描程序会报告其中的一个或多个工具感染了“远程管理”病毒。这些 PsTools 都不带病毒,但是如果病毒使用了这些工具,则它们可能触发病毒通知。

再看,通过字符串信息可以知道主机210.22.204.101对蜜罐使用了LAN Manager口令猜测,并且成功攻击

而接下来的135 25 137端口经过检查均未发现养鸡场

Q:哪些攻击成功了?是如何成功的?

A:通过上面的分析可知,成功的攻击发起者是218.25.147.83(蠕虫攻击)和 61.111.101.78( LAN Manager 口令猜测)

3.学习中遇到的问题及解决

  • 问题1:虚拟机中没有安装tcpflow
  • 问题1解决方案:输入命令sudo apt install tcpflow、sudo apt install tcpflow-nox进行安装

4.实践总结

通过本次实验,动手实践了恶意代码文件类型识别、脱壳与字符串提取,分析了恶意样本,学会了如何对恶意代码和病毒程序进行分析。了解了IDA、超级巡警、PEID等工具的使用方法,掌握了如何使用系统监控工具监控应用程序的运行。

posted @ 2022-05-08 21:00  是过客啊  阅读(56)  评论(0编辑  收藏  举报