20212810 2021-2022-2 《网络攻防实践》实践八报告

20212810 2021-2022-2 《网络攻防实践》实践八报告

一. 实践内容

实践任务一

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

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

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

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

二.实践过程

* 实践任务一

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

本实验使用winXP虚拟机进行,解压rada.rar(解压密码rada)后把文件夹复制进XP的C盘中

我们使用使用file命令查看file RaDa.exe的文件类型,下图可知RaDa.exe是一个32位的Windows PE可执行文件,GUI表示这个程序是一个有图形界面的程序,intel 80386表示处理器架构

执行指令strings RaDa.exe来查看该程序可打印字符串

执行指令后发现可打印的字符串为乱码,无法分析出有效信息,所以判断该程序采用了加壳防止反汇编的技术.
可以使用PEiD工具查看RaDa.exe的基本信息,如下图:


这里可以看到文件的入口点、偏移、文件类型、EP段、汇编程序以及加壳类型。UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo即为该程序使用的加壳工具

我们对RaDa.exe进行脱壳:

指定脱壳文件

点击给我脱,结果如下:

发现在恶意程序同目录下生成了一个脱壳以后的程序:

再次使用PEiD工具来查看脱壳后的程序,可以看到编写该程序所使用的语言和开发工具为VB6.0

再用strings查看脱壳后的RaDa_unpacked.exe

我们可以看到有很多程序的交互字符串和程序的函数调用的函数名。
我们打开IDA Pro Free

new:

菜单栏“file”-“open”打开RaDa_unpacked.exe


显示结果如图

我们从中可以看到作者的信息DataRescue sa/nv,还有作者的邮箱 ida@datarescue.com

关闭

* 实践任务二

  • Windows 2000系统被攻破并加入僵尸网络

我们首先使用file命令查看crackme的文件类型:file crackme1.exe和file crackme2.exe


我们可以看到两个文件均为windows系统下运行的32位可执行程序,且没有图形界面,仅使用控制台操作(console),是命令行程序。

crackme1.exe

我们先对crackme1.exe进行破解。一开始是尝试运行该程序,试探其输入格式

我们可以发现,在接受1个参数时,程序的反馈与众不同,所以我们猜测该程序接受一个参数。

目前为止,我们已经发现了程序的两种反馈信息。一种是“I think you are missing something.”,这个猜测是参数数目不对的提示;另一种是“Pardon? What did you say?”,对于这种反馈信息,我们猜测是参数错误的提示。

接着我们使用IDA pro工具来打开文件,尝试阅读其汇编语言,验证我们的猜想。

菜单栏“file”-“open”打开crackme1.exe

放大右侧的Strings Window窗口

通过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”这两个字符串。有内容我们可以猜测,前者就是我们需要的口令,后者就是输入口令正确时程序的反馈信息。

此外,可以看到有“GCC”,说明该恶意程序是用C语言编写的

查看函数结构,点击View-Graphs-Function calls

点击放大,看的更清晰

所以我们可以得出结论,程序是用C语言写的,程序估计是使用strcmp函数来比较口令的,关键的部分在sub_401280
接下来我们开始查看sub_401280的汇编代码

cmp [ebo+arg_0],2为判断程序是否有两个参数
c语言中,main函数通常为int main(int argc,const char **argv),即第一个参数argc对应argv的大小,第二个参数对应命令行的格式。

如在命令行输入crackme1.exe 1,那么参数对应的值为argc=2,argv={”crackme1.exe”,”1”}

如果argc=2,那么去往loc_4012D2进行下一步判断

如输入"I know the secret",则继续前往loc_401310

我们来测试验证猜想crackme1.exe "I know the secret"(此处应用英文状态下的双引号)

crackme2.exe

crackme2.exe的操作同理


猜测该程序同样是接受一个参数
String界面,发现明文字符串“I know the secret”和“crackmeplease.exe”

我们可以直接大胆输入"I know the secret"测试,与前者错误提示相同

查看整个程序的call flow

关键的部分还是在sub_401280这里,查看汇编代码

通过cmp [ebp+arg_0],2判断程序参数是否为两个
通过参数个数的判断后,接着去loc_4012D5用strcmp函数对argc里面的第一个字符串,即程序名“crackme2.exe”和“crackmeplease.exe”进行判断


通过判断后,前往loc_401313将用户输入的口令与”I know the secret”判断。

通过判断后,经由loc_401351和loc_401358前往loc_401381、unk_403080(双击跳跃过去)

通过口令判断后,通过一定规则输出通过测试的信息

具体是unk_403080中的字符串分别与0x42h进行异或运算


测试验证:

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

1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
MD5摘要值:caaa6985a43225a0b3add54f44a0d4c7
基本信息:PE32 executable(GUI) Intel 80386 ,for MS Windows
2、找出并解释这个二进制文件的目的;
是一个后门程序。可以进行http请求,使攻击者远程连接被控主机并进行一些指令操作,同时还修改了注册表使得文件具有开机自启动功能
3、识别并说明这个二进制文件所具有的不同特性;
程序被执行时会将自身安装到系统C盘中,并创建文件夹用来存放从攻击主机下载到受控主机的文件和从受控主机获取的文件;同时通过修改注册表的方式使得程序能够开机自启动;具有一定的隐蔽性
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
使用0.89.6版本的UPX壳进行加壳处理;通查看网卡地址判断系统是否运行在虚拟机上,若是则隐藏作者信息
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
后门程序。因为该程序不能自主传播,且没有伪装成正常功能的程序,可以供攻击者远程连接并用指令操纵被控主机
6、给出过去已有的具有相似功能的其他工具;
Bobax – 2004、Windows Update、海阳顶端等后门。
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可能。在非VMware的虚拟机或者Windows下输入--authors参数可以显示作者名字,通过ida或者Process Explorer查看strings也可以找到作者名字是Raul Siles & David Perze,写于2004年。

分析实验任务二

分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。回答下列问题:
1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC指的是因特网中继聊天(Internet Relay Chat)。IRC用户使用特定的用户端聊天软件连接到IRC服务器,通过服务器中继与其他连接到这一服务器上的用户交流。
申请时需要发送口令,昵称和用户信息。格式如下:USER 、PASS 、NICK 。
IRC服务器明文传输通常在6667端口监听,也会使用6660—6669端口。SSL加密传输在6697端口。
2、僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络 Botnet 是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。攻击者通过各种途径传播僵尸程序感染互联网上的大量主机,而被感染的主机将通过一个控制信道接收攻击者的指令,组成一个僵尸网络。
可以一对多地执行相同的恶意行为,往往被黑客用来发起大规模的网络攻击,如分布式拒绝服务攻击(DDoS)、海量垃圾邮件等,使得攻击者能够以极低的代价高效地控制大量的资源为其服务。
3、蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
3.1 本实验使用虚拟机为kali,下载云班课的botnet_pcap_file.dat文件,复制进虚拟机

3.2 用Wireshark打开数据文件
由第一问可知,IRC服务器明文传输通常在6667端口监听,所以设置过滤条件ip.src == 172.16.134.191 && tcp.dstport == 6667


我们可以找到五个IRC服务器,分别为:

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为服务器的僵尸网络?


接着执行如下两条问题,避免出现字符编码问题,导致计数不准确

利用如下指令进行搜索有多少主机连接(grep获取昵称输出,sed去除前缀,tr将空格转换为换行,tr -d删除\r,grep -v去除空行,sort -u排序并去除重复,wc -l输出行数)

3457个

5、那些IP地址被用于攻击蜜罐主机?
使用下面的指令找出所有的可能连接的主机的IP地址:

cut -d是指定字段的分隔符,uniq命令用于检查及删除文本文件中重复出现的行列,一般与sort命令结合使用.使用下面的指令查找端口并输出到2.txt中.

查找到165个被攻击的端口
6、攻击者尝试攻击了那些安全漏洞?
使用snort -r botnet.pcap -c /etc/snort/snort.conf -K ascii指令先查一下网络流分布情况

发现大部分都是TCP包,有一部分UDP包,所以我们首先应该筛选出响应的TCP端口和UDP端口。

7、那些攻击成功了?是如何成功的?
wireshark打开pcap文件,首先查看TCP的135和25端口,设定筛选条件tcp.port135 || tcp.port25

发现这俩端口只是用来进行连接,没有发生数据的交互

接下来分析445端口,445端口是SMB端口,设置过滤条件ip.dst172.16.134.191 and tcp.dstport445

在61.111.101.78发起的请求中发现了PSEXESVC.EXE,这是一种Dv1dr32蠕虫,这种蠕虫正是通过IRC进行通信。

为判断是否成功,查找从蜜罐发往61.111.101.78的信息ip.dst==61.111.101.78


发现每个IP地址连入的连接都有响应的回应,并且返回信息中含有\PIPE\ntsvcs,这是一个远程调用,所以攻击者肯定是获得了权限,攻击是成功的

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

查看整个程序的call flow”中,对着界面那些小按钮一一试了好久,还去网上找了IDA使用教程才搞明白。
因为是分好几次做完作业的,所以里面有些顺序比较混乱。

四.学习感想和体会

此次实验任务量比较重,看到题目这么多问题就不想做了,分了好几天做完,最后慢慢做完。
自己的基础还是太欠缺了,特别是最后一道题的时候,感觉无处下手,最后请教了同学才算完成。

posted @ 2022-05-08 12:34  bzhuihui  阅读(138)  评论(0编辑  收藏  举报