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

1.实验介绍

1.1 恶意代码

恶意代码一般指的是对计算机有损害的计算机代码或者web脚本,这些代码或者脚本能使计算机按照攻击者的意图执⾏以达到恶意⽬标。常见的恶意代码包括:病毒(简称病毒)、特洛伊木马(简称木马)、计算机蠕虫(简称蠕虫)、后门、逻辑炸弹等。

1.2 计算机病毒

计算机病毒是编制者在计算机程序中插入的破坏计算机功能或者数据的代码,能影响计算机使用,能自我复制的一组计算机指令或者程序代码。计算机病毒具有传播性、隐蔽性、感染性、潜伏性、可激发性、表现性或破坏性。

1.3 网络蠕虫

蠕虫病毒是一种常见的计算机病毒。它是利用网络进行复制和传播,传染途径是通过网络和电子邮件。蠕虫病毒是自包含的程序或是一套程序,它能传播它自身功能的拷贝或它的某些部分到其他的计算机系统中。与一般病毒不同,蠕虫不需要将其自身附着到宿主程序,它是一种独立智能程序。网络蠕虫是一种智能化、自动化,综合网络攻击、密码学和计算机病毒技术,无须计算机使用者干预即可运行的攻击程序或代码,它会扫描和攻击网络上存在系统漏洞的节点主机,通过局域网或者国际互联网从一个节点传播到另外一个节点。

 

2.实验过程

2.1 动手实践任务一

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

-使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
-使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
-使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
2.1.1 在winXPattacker中打开cmd,切换到rada文件夹目录下,使用file指令查看文件的信息

可以看到此文件是32位可执行程序,并且带有GUI界面

image-20220505215343574

2.1.2 使用winXPattacker提供的工具PEiD检查此文件是否加壳

可以看到此文件存在一个版本位0.89.6的UPX外壳

image-20220505215801077

image-20220505215832091

2.1.3 使用strings 指令查看此文件中可打印出来的字符串

发现打印出来的字符串都是乱码,印证了此文件已经加壳

image-20220505220110843

2.1.4 使用超级巡警虚拟机脱壳器对此文件进行脱壳

image-20220505220253000

image-20220505220422167

2.1.5 再次使用strings指令打印中文件中的字符串

发现输出很多类似函数名称的字符串

image-20220505220643762

2.1.6 打开监视工具的同时运行已经脱壳的文件,查看该文件在运行中的信息

可以看到此文件编写者的信息

image-20220505221028662

 

2.2 动手实践任务二

分析Crackme程序
在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息
2.2.1 使用file指令查看文件信息

可以看到两个文件都是32位可执行程序,是控制台命令行程序

image-20220505224354070

2.2.2 尝试运行这两个程序

发现提示缺少参数

image-20220505224625540

于是随意输入参数进行测试

发现两个参数的时候有不同的提示

image-20220505224851030

2.2.3 使用IDA pro工具对文件crackme1进行分析

可以看到我们测试找到的字符串

image-20220505225234447

2.2.4 查看函数调用关系图

根据函数调用图可以看到字符串输出相关的函数都被函数sub_401280调用,所以函数sub_401280与函数的运行有很大关联,当然作为子函数的sub_401840与函数sub_401280的运行也有很大关联

image-20220505230032978

2.2.5 查看函数sub_401280的运行流程图

根据流程图可知,运行此函数后,函数会比较传入参数的个数,如果个数不等于2则输出"I think you are missing something",如果个数等于2 并且输入的参数是"I know the secret"就会输出"You know how to speak...",如果参数错误就会输出"Pardon? What did you say"

image-20220505230746754

输入正确的字符串就可以看到预期的输出

image-20220505232038375

2.2.6 使用IDA pro工具对文件crackme2进行分析

可以看到我们测试找到的字符串

image-20220505232313925

2.2.7 查看函数调用关系图

根据函数调用图可以看到字符串输出相关的函数都被函数sub_401280调用,所以函数sub_401280与函数的运行有很大关联,当然作为子函数的sub_401840与函数sub_401280的运行也有很大关联

image-20220505232425201

image-20220505232518306

2.2.5 查看函数sub_401280的运行流程图

根据流程图可知,运行此函数后,函数会比较传入参数的个数,如果个数不等于2则输出"I think you are missing something",如果个数等于2 并且文件名称是"crackmeplease.exe" 的话,如果接受的参数为"I know the secret"则输出最后的结果,如果此时的参数不是"I know the secret"则输出"Pardon? What did you say"

image-20220505233642084

image-20220505233437420

 

2.3 分析实践任务一

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

-提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
-找出并解释这个二进制文件的目的;
-识别并说明这个二进制文件所具有的不同特性;
-识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
-对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
-给出过去已有的具有相似功能的其他工具;
-可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
2.3.1 通过md5sum和file文件查看文件信息

image-20220505234713542

2.3.2 为了分析从而对文件进行脱壳处理

image-20220505234913088

2.3.3 打开监视工具与wireshark并运行已经脱壳的文件,查看文件运行后的信息

查看监视到的属性可以看到很多命令

image-20220505235435120

wireshark捕获到的数据包

image-20220505235609622

2.3.4 使用IDA pro工具对已经脱壳的文件进行分析

可以看到打印出来的字符串

image-20220505235957754

可以看到unicode字符串中出现"VMware Tool"等,查看相关函数sub_404FB0

image-20220506000825293

查看函数404FB0的运行流程图,发现此字符串被复制到dword_40C070中

image-20220506001153522

查找dword_40C070,发现和函数sub_40AAA0有关

image-20220506001545011

查看函数sub_40AAA0的运行流程图,发现查询网卡列表的命令

image-20220506001751578

再往下看,可以看到输出作者的流程,调用函数sub_40AAA0,进行比较,是就输出作者信息,不是就输出"Unknow argument"

image-20220506002211293

2.3.5 根据收集到的信息回答问题

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

image-20220506002615357

-找出并解释这个二进制文件的目的

用户成功连接互联网后,如果该文件正在运行,后台进程就会连接到指定主机并获取攻击者的指令,攻击者通过此方法对用户主机进行控制,根据以上的特征可知这应该是一个后门程序。

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

在此文件安装的时候,首先会添加注册表,并且移动文件位置到C盘,最后搭建网络接收环境。
在文件运行的时候,首先会连接攻击者指定的服务器,接受攻击者的指令,解析并执行网络指令。

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

首先在文件中添加0.89.6的UPX壳,其次查看网卡信息判断是否在虚拟机环境下运行。

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

此文件不具有自主传播模块,不属于病毒和蠕虫。
此文件没有进行伪装,而是直接给出安装包,不属于木马。
如果攻击者仅用此程序进行远程控制,那么可以分类为后门程序。
如果在此攻击方式的基础上加入僵尸网络,那么可以分类为僵尸程序。

-给出过去已有的具有相似功能的其他工具

Setiri GatSlag

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

通过--authors参数可以查到作者信息Authors: Raul Siles & David Perez, 2004
环境:网卡的MAC地址来自VMware虚拟机

 

2.4 分析实践任务二

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

回答下列问题:
-IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
-僵尸网络是什么?僵尸网络通常用于什么?
-蜜罐主机(IP地址:172.16.134.191)与哪些IRC服务器进行了通信?
-在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
-哪些IP地址被用于攻击蜜罐主机?
-攻击者尝试攻击了那些安全漏洞?
-哪些攻击成功了?是如何成功的?
2.4.1 IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC是因特网中继聊天(Internet Relay Chat)的简称。
当IRC客户端申请加入一个IRC网络时申请加入前要先注册,注册时需要用户信息USER、口令PASS、昵称NICK。
IRC使用6660-6669端口,一般使用6667端口进行明文通信,如果是SSL加密通信则使用6697端口。
2.4.2 僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络Botnet 是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。 攻击者通过各种途径传播僵尸程序感染互联网上的大量主机,而被感染的主机将通过一个控制信道接收攻击者的指令,组成一个僵尸网络。
僵尸网络通常用于发动分布式拒绝服务攻击(DDoS)刷点击量、发送海量垃圾邮件等一系列操作。
2.4.3 蜜罐主机(IP地址:172.16.134.191)与哪些IRC服务器进行了通信?

使用指令 ip.addr == 172.16.134.191 && tcp.dstport == 6667查看过滤后的数据包

image-20220506102908150

可以发现蜜罐主机与 209.126.161.29 66.33.65.58 63.241.174.144 217.199.175.10 209.196.44.172,其中与209.196.44.172 通信最为频繁

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

在kali中使用工具tcpflow,输入指令tcpflow -r 蜜罐主机记录文件 "host 209.196.44.172 and port 6667"对数据文件进行分流,得到分流后的两个数据文件和一份报告

image-20220506104612507

image-20220506104815335

使用grep命令计算209.196.044.172.06667-172.016.134.191.01152文件中访问以209.196.44.172为服务器的主机数目。

cat 209.196.044.172.06667-172.016.134.191.01152 | grep -a "^:irc5.aol.com 353" | sed "s/^:irc5.aol.com 353 rgdiuggac @ #xx*x ://g" | tr ' ' '\n' | tr -d "\15" | grep -v "^$" | sort -u | wc -l

发现有3462台主机访问了以209.196.44.172为服务器的僵尸网络

image-20220506111553541

2.4.5 哪些IP地址被用于攻击蜜罐主机

过滤所有目的主机为蜜罐主机172.16.134.191的数据包

image-20220506112029346

查看统计可以看到有172台主机被用于攻击蜜罐主机

image-20220506113224255

2.4.6 攻击者尝试攻击了那些安全漏洞?

使用Tcpdump工具,输入命令 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 查看蜜罐主机的哪些端口被访问了。

可以看到135 139 25 445 4899 80端口都被访问了。

image-20220506113623106

在wireshark中依次过滤所查出的端口号,根据这些端口号传输的数据包反推实施了哪些攻击。

135号端口:

数据包不多,只是建立通信,并没有传输数据,所以很可能只是扫描端口是否打开。

image-20220506114156670

139号端口:

存在大量数据包,但是数据包长度都很小,可能只是进行SMB查点

image-20220506114414368

25号端口:

数据包不多,也只是建立通信,没有进行数据传输,所以可能也只是扫描端口。

image-20220506114631412

445号端口:

存在大量数据包,其中主机61.111.101.78向蜜罐发送了PSEXESVC.EXE,这是一种通过命令行环境和目标机器进行连接进而控制目标机器的程序,并且不需要通过RDP远程桌面协议进行图形化控制,所以很难被发现。

image-20220506114815262

image-20220506114932699

4899号端口:

4899端口是Radmin的默认端口,具有远程控制功能,通常杀毒软件是无法查出。根据后面的数据包可以看出有远程控制使用cmd.exe的行为。

image-20220506115622816

80号端口:

存在大量的数据包,分析发现只有24.197.194.106和207.172.16.150两个IP进行了80端口的访问。

image-20220506160943804

并且发现了数据量很大的包,推测攻击者可能在做缓冲区溢出攻击。

image-20220506161411614

此外还发现一些操纵命令行的的数据

image-20220506161725584

也存在和445号端口一样的远程控制文件

image-20220506161926687

再查看80端口向外发送的数据包,发现一直发送的是IIS服务器的默认页面,推测攻击没有成功。

image-20220506162635378

image-20220506162837376

2.4.7 哪些攻击成功了?是如何成功的?
由2.4.6的分析可知,只有注入远程控制PSEXESVC.EXE的攻击成功,成功的原因是向445端口未关闭进而被植入远程控制程序。

 

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

  • 问题1:汇编代码没有看懂

  • 问题1解决方式:通过网上查阅资料

4.学习感悟

通过这次实验,我见识了很多网络攻防使用的工具,比如实验中用到的分析工具以及监视工具,这些工具我从来没有接触过,一开始使用起来确实不利索,但是后面随着实验的深入,慢慢熟悉了操作。这次实验的分析部分十分复杂,但是也让我了解到了渗透攻击的多样性,增强了我对网络安全防护的意识,也让我学到了很多网络攻防的知识。

参考资料

posted @ 2022-05-06 16:47  20211904  阅读(35)  评论(0编辑  收藏  举报