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

一、实践内容

(一)恶意代码(Malicious Code)是指没有作用却会带来危险的代码,一个最安全的定义是把所有不必要的代码都看作是恶意的,不必要代码比恶意代码具有更宽泛的含义,包括所有可能与某个组织安全策略相冲突的软件。具有如下共同特征:
(1) 恶意的目的
(2) 本身是计算机程序
(3) 通过执行发生作用
有些恶作剧程序或者游戏程序不能看作是恶意代码。对滤过性病毒的特征进行讨论的文献很多,尽管它们数量很多,但是机理比较近似,在防病毒程序的防护范围之内,更值得注意的是非滤过性病毒。
(二)恶意代码分类
恶意代码的分类标准主要是代码的独立性和自我复制性,独立的恶意代码是指具备一个完整程序所应该具有的全部功能功能,能够独立传播、运行的恶意代码,这样的恶意代码不需要寄宿在另一个程序中。非独立恶意代码只是一段代码,必须嵌入某个完整的程序中,作为该程序的一个组成部分进行传播和运行。对于非独立恶意代码,自我复制过程就是将自身嵌入宿主程序的过程,这个过程也称为感染宿主程序的过程。对于独立恶意代码,自我复制过程就是将自身传播给其他系统的过程。不具有自我复制能力的恶意代码必须借助其他媒介进行传播。
病毒(Virus):很小的应用程序或一串代码,能够影响主机应用。两大特点:繁殖(propagation)和破坏(destruction)。繁殖功能定义了病毒在系统间扩散的方式,其破坏力则体现在病毒负载中。
特洛伊木马(Trojan Horses):可以伪装成他类的程序。看起来像是正常程序,一旦被执行,将进行某些隐蔽的操作。比如一个模拟登录接口的软件,它可以捕获毫无戒心的用户的口令。可使用HIDS检查文件长度的变化
内核套件(Root工具):是攻击者用来隐藏自己的踪迹和保留root访问权限的工具
逻辑炸弹(Logic Bombs):可以由某类事件触发执行,例如某一时刻(一个时间炸弹),或者是某些运算的结果。软件执行的结果可以千差万别,从发送无害的消息到系统彻底崩溃。
蠕虫(Worm): 像病毒那样可以扩散,但蠕虫可以自我复制,不需要借助其他宿主
僵尸网络(Botnets):是由C&C服务器以及僵尸牧人控制的僵尸网络。
间谍软件(Spyware ):间谍软件就是能偷偷安装在受害者电脑上并收集受害者的敏感信息的软件。
恶意移动代码:移动代码指可以从远程主机下载并在本地执行的轻量级程序,不需要或仅需要极少的人为干预。移动代码通常在Web服务器端实现。恶意移动代码是指在本地系统执行一些用户不期望的恶意动作的移动代码。
后门:指一类能够绕开正常的安全控制机制,从而为攻击者提供访问途径的一类恶意代码。攻击者可以通过使用后门工具对目标主机进行完全控制。
广告软件( Adware):自动生成(呈现)广告的软件。
上述分类只是个大概,各种恶意代码常常是你中有我,我中有你。而且在实际中,攻击者经常会将多种恶意代码组合起来使用。

(三)不同恶意代码的区别
病毒侧重于破坏系统和程序的能力;
木马侧重于窃取敏感信息的能力;
蠕虫侧重于网络中的自我复制能力和自我传染能力。

(四)恶意代码基本技术
1、隐蔽技术
(1)本地隐藏
防止本地系统管理人员觉察而采取的隐蔽手段。
文件隐蔽:将恶意代码的文件命名为与系统的合法程序文件名相似的名称,或者干脆取而代之,或者将恶意代码文件附加到合法程序文件中。
进程隐蔽:附着或替换系统进程,使恶意代码以合法服务的身份运行,从而隐蔽恶意代码。还可以通过修改进程列表程序,修改命令行参数使恶意代码进程的信息无法查询。也可以借助RootKit 技术实现进程隐蔽。
网络连接隐蔽:借用现有服务的端口实现网络连接隐蔽,如使用80端口,攻击者在自己的数据包设置特殊标识,通过标识识别连接信息,未标识的WWW 服务网络包仍转交给原服务程序处理。
编译器隐蔽:由编译器在对程序代码进行编译时植入恶意代码,从而实现恶意代码在用户程序中的隐藏和原始分发攻击。恶意代码的植入者是编译器开发人员。
RootKit隐蔽:利用适当的Rootkit工具,可以很好的隐蔽自身或指定的文件、进程和网络连接等,很难被管理员发现。
(2)网络隐藏
网络隐藏主要是指通信内容和传输通道的隐藏。
通信内容隐蔽:使用加密算法对所传输的内容进行加密能够隐蔽通信内容。
传输通道隐藏:利用隐蔽通道技术,实现对传输通道的隐蔽。(隐蔽通道(Covert Channel)是一个不受安全机制控制的、利用共享资源作为通信通路的信息流。包括有:存储隐蔽通道和时间隐蔽通道。)
2、生存技术
恶意代码的生存技术主要包括四种类型:
反跟踪技术:通过提高恶意代码分析难度,减少被发现的可能性
加密技术:利用加密技术,提高恶意代码自身保护能力
模糊变换技术:利用模糊变换技术,恶意代码可以躲避基于特征码的恶意代码检测系统,提高生存能力
自动生产技术:利用自动生成技术,在已有的恶意代码的基础上自动生成特征码不断变化的新的恶意代码,从而躲避基于特征码的恶意代码检测。
3、攻击技术
进程注入技术:恶意代码程序将自身嵌入到操作系统和网络系统的服务程序中,不但实现了自身的隐藏,而且还能随着服务的加载而启动。
三线程技术:恶意代码进程同时开启三个线程,其中一个为主线程,负责远程控制的工作。另外两个辅助线程分别是监视和守护线程。一旦发现主线程被删除,则立即设法恢复。
端口复用技术:重复利用系统或网络服务打开的端口(如80端口),可以欺骗防火墙,具有很强的欺骗性。
超级管理技术:恶意代码采用超级管理技术对反恶意代码软件系统进行攻击,使其无法正常运行。
端口反向连接技术:指使恶意代码的服务端(被控制端)主动连接客户端(控制端)的技术。
缓冲区溢出技术:恶意代码利用系统和网络服务的安全漏洞植入并且执行攻击代码,造成缓冲区溢出,从而获得被攻击主机的控制权。
(五)恶意代码传播方式及防范手段
1、传播方式
传播途径
利用操作系统和应用软件的漏洞进行传播
通过网站传播
在网页上挂载恶意代码
如:主机流览该网页时,恶意代码会自动下载到主机执行。
将恶意代码与正常应用软件捆绑
如:主机下载正常软件运行时,恶意代码也随之自动运行。
利用移动媒介传播
如:主机访问U盘和硬盘时,恶意代码可以自动执行。
利用用户之间的信任关系传播
如:冒充用户发送虚假链接、图片、邮件等。
总的来说,恶意代码的传播是因为用户的软件出现了漏洞、操作不慎或者是两者的结合造成。
(1)病毒。病毒具备有自我复制能力,一般嵌入主机的程序中。当被感染文件执行操作,如,用户打开一个可执行文件时,病毒就会自我繁殖。病毒一般都具有破坏性。
(2)木马。这种程序从表面上看没有危害,但实际上却隐含着恶意的意图和破坏的作用。一些木马程序会通过覆盖系统中已经存在的文件的方式存在于系统之中;另外有的还会以软件的形式出现,因为它一般是以一个正常的应用程序身份在系统中运行的,所以这种程序通常不容易被发现。
(3)蠕虫。蠕虫是一种可以自我复制的完全独立的程序,它的传播不需要借助被感染主机中的程序和用户的操作,而是通过系统存在的漏洞和设置的不安全性来进行入侵,如通过共享的设置来侵入。蠕虫可以自动创建与它的功能完全相同的副本,并能在无人干涉的情况下自动运行,大量地复制占用计算机的空间,使计算机的运行缓慢甚至瘫痪。
2、攻击机制
恶意代码的行为表现各异,破坏程度千差万别,但基本作用机制大体相同,其整个作用过程分为6个部分。
(1)侵入系统。侵入系统是而已代码实现其恶意目的的必要条件。恶意代码入侵的途径很多,包括前面传播方式的各种途径。如:从互联网下载的程序本身就可能含有而已代码;接收已感染恶意代码的电子邮件;从光盘或U盘往系统上安装软件;黑客或者攻击者故意将恶意代码植入系统等。
(2)维持或提升权限。恶意代码的传播与破坏必须盗用用户或者进程的合法权限才能完成。
(3)隐蔽策略。为了不让系统发现恶意代码已经侵入系统,恶意代码可能会改名、删除源文件或者修改系统的安全策略来隐藏自己。
(4)潜伏。恶意代码侵入系统后,等待一定的条件,并具有足够的权限时,就发作并进行破坏活动。
(5)破坏。恶意代码本质具有破坏性,其目的是造成信息丢失,泄密,破坏系统完整性等。
(6)重复(1)至(5)对新的目标实施攻击过程。

3、防范手段
通用恶意代码检测技术包括静态和动态检测技术:
(1)基于特征的扫描技术
建立恶意代码的特征文件,在扫描时根据特征进行匹配查找
(2)校验和法
对需要监控的文件生成校验,周期性的生成新校验和并与原始值比较
(3)沙箱技术
根据程序需要的资源和拥有的权限建立运行沙箱,可以安全地检测和分析程序行为
(4)基于蜜罐的检测技术
将主机伪装为运行着脆弱的服务或系统,同时安装强大的监测系统。
其中基于特征的扫描技术和校验和法是静态检测技术,沙箱技术和基于蜜罐的检测技术属于动态检测技术。

部分知识参考来源:https://blog.csdn.net/fullbug/article/details/122549463

二、实践过程

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

  • 使用file命令看RaDa.exe文件的格式和运行平台,打开该exe文件所在的文件夹,输入file /home/user/桌面/RaDa.exe 。可以从下图中看出是windows系统,Intel 80386。

  • Windows XP系统下使用peid查壳工具对RaDa.exe进行查壳

  • 使用PEID unpacker for UPX插件对rada.exe去壳

  • 使用Linux上的strings命令对脱壳后的RaDa.exe文件提取字符串

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

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

  • 使用IDA打开crackme1.exe文件,查壳这个文件的函数调用

  • 先看crackme1.exe的主函数,对各种参数进行赋值之后,使用了cmp [ebp+argc], 2的命令,这是在判断参数是否有两个,若是只有一个,例如在命令行只输入了.\crackme1.exe,就会输出I think you are missing something,如果参数有两个,例如.\crackme1.exe 1就会跳转到loc_4012D2这个模块。

  • 进入loc_4012D2模块,判断第二个参数是否为I have an identity problem.,如果不是则输出Pardon? What did you say?,如果是,则进入loc_401310模块,并输出You know how to speak to programs, MrReverse-Engineer。

对crackme2.exe文件进行分析

  • 使用IDA打开crackme2.exe文件,查看这个程序的函数调用情况

  • 可以看到crackme2.exe的主函数与之前的crackme1.exe相似,上来也是判断是否有两个参数。若只有一个参数,则输出I think you are missing something,如果有两个参数则跳转到loc_4012D5模块。

  • 进入到loc_4012D5模块,会判断第一个参数也就是程序命是不是crackmeplease.exe:如果不是,将会输出I have an identity problem.;如果是,则会进入loc_401313模块。

  • 进入loc_401313模块,会判断第二个参数是不是I know the secret:如果不是,则输出Pardon? What did you say?;如果是,则进入loc_401351模块。

  • 进入loc_401351模块后,程序进入一个循环,设置变量ebp+var_4的值为0,然后让ebp+var_4与21h比较,若不大于则输出一串字符,具体是 unk_403080 中的字符串分别与0x42h 进行异或运算。

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

  • 提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
    先对恶意代码进行静态分析,利用md5sum RaDa.exe命令得到恶意代码的摘要
    使用file RaDa.exe命令查看文件格式和操作环境
    使用strings RaDa.exe命令提取字符串,这个文件是带壳的,提取出来的是乱码,要对代码经行查壳与脱壳。
    使用Peid工具查壳,超级巡警脱壳工具脱壳。

  • 使用IDA打开脱壳后的unpacked.exe进行分析,先访问了某个站点,下载了一些文件到受控主机,又在C盘创建了一个文件夹RaDa\tmp。

可以看到这里设置了三个网段,分别为192.168. 172.16. 10. 且都是私有网段,应该使用来隐藏服务器的,上面的RaDa_command.html可能也是在这三个网段之中

往下分析看到几个我们提取字符串时看到的字符串,而且这几个字符串都放在函数模块sub_405E40里面。可能这个模块用来设置命令行

往后分析发现一个设置mac地址的地方,双击模块查壳函数调用结构图,可以发现这里对mac地址进行了判断,只有符合其中一个就可以继续往下进行,通过对mac地址的查询,发现这几个mac地址都是属于VM的,可能这个恶意代码运行环境必须为VM。

  • 双击红框中的命令就可以看到这些字符串再什么地方被调用过,以--authors为例子。双击之后可以看到,在两个函数中调用了这个字符串,分别是 sub_405E40和sub_40B010,点开第二个发现是具体的处理过程,点开第一个函数。

  • 回到上述的string列表,几个IP地址中唯一完整的为http://10.10.10.10/RaDa。打开wireshark,使用过滤器筛选ip.src == 10.10.10.10 or ip.dst == 10.10.10.10。
    可以发现,部分ICMP报文也进入了过滤器。据此得知与10.10.10.10建立的连接是长连接,也就是说即可能是一条信道。

  • 得到10.10.10.10是指令传输接口之后,回到IDA,查看IDA中对应的指令的处理代码。能看到有两个函数回调用这个字符串,分别是sub_4052C0和sub_404FB0。重点看第一个函数,在函数中发现还调用了其他字符串,如name exe、get、put、screenshot和sleep这几个指令函数

  • 回到string列表,点击对应的字符串进行跳转,发现sql语句并没有被调用,但是mac语句被执行了。对三个mac地址进行判断,只要符合其中任意一个,程序就将向下执行。而MAC地址是IEEE唯一分配的,通过查询我们知道这些MAC地址均属于VM。

回答问题:
1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
·再linux下调用程序md5sum $path$/rada.exe计算程序的md5码作为同一样本的标识。caaa6985a43225a0b3add54f44a0d4c7为程序的MD5码
·此外通过上文我们可以知道这个程序的加壳方式是UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo、
·运行平台:RaDa.exe: PE32 executable (GUI) Intel 80386, for MS Windows这三者联合起来可以作为一个这个文件的基本信息身份标识。

2、找出并解释这个二进制文件的目的;
这个二进制程序通过网络获取指令,并执行,不具备自主传播模块,由此可知,这个应该是后门程序或僵尸网络程序。

3、识别并说明这个二进制文件所具有的不同特性;
·初次安装的时候会进行初始化的相关操作,添加注册列表、移动文件位置至C盘,建立网络连接接收指令。
·持续运行阶段:维持与服务器的网络连接,解析网络指令,执行网络指令,等待一段时间继续执行。

4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
·首先采用了UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo的加壳方式,直接被一键脱壳,未详细理解
·二进制程序的相关代码片段只在特定的环境下才可以执行,例如--authors参数必须在vm的网卡中才会执行。
·一些干扰的误导选项,如没有用到的sql语句SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True,无意义的starting DDOS smurf remote attack。

5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
·首先此二进制程序不具有自主传播模块,所以它不属于病毒和蠕虫
·此程序未进行伪装,所以也不是木马
·若攻击者仅仅用此程序进行远程控制,那么就是后门程序;若再次基础上加入僵尸网络,则就是僵尸程序。

6、给出过去已有的具有相似功能的其他工具;
·从服务器下载指令并执行具备组件僵尸网络的能力,可以参考linux下的开源Zeus,
·Setiri及其前辈GatSlag。

7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
·可以通过--authors参数获取相关作者信息Authors: Raul Siles & David Perez, 2004
·网卡的MAC地址必须属于VM公司,必须在虚拟机中运行。

Windows 2000系统被攻破并加入僵尸网络
任务:分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。回答下列问题:
1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
·IRC是因特网中继聊天(Internet Relay Chat)的简称。
·申请加入前要先注册,注册时需要发三种信息:用户信息USER、口令PASS 以及昵称NICK、注册完成后,客户端就可以使用JOIN 信息来加入频道。
·IRC通常使用6660-6669端口,其中一般使用6667端口进行明文通信,如果是使用SSL进行加密通信则使用6697端口。

2、僵尸网络是什么?僵尸网络通常用于什么?
·僵尸网络作为一种常见且有效的网络攻击手段,给当今的互联网安全带来了巨大的威胁。僵尸网络是指攻击者出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络,其僵尸控制器是IRC聊天服务器。它们有时被称为“僵尸军队”,可用于网络犯罪分子的各种活动,包括发送垃圾邮件和进行分布式拒绝服务(DDoS攻击)。
​ ·通常用于发动分布式拒绝服务攻击(DDoS)、发送垃圾邮件、窃取隐私信息、刷点击量等。任何连接互联网的设备都可以添加到僵尸网络中,包括笔记本电脑、台式电脑、智能手机、DVR播放器、无线路由器以及其他物联网(IoT)设备。僵尸网络由命令和控制(C&C)服务器控制。C&C服务器是受黑客或黑客组织控制的计算机,可以向僵尸网络中的僵尸程序发送命令,并且还可以接收僵尸程序收集的信息。僵尸网络的控制器被称为Bot Botder或Bot master。

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

  • 用wireshark打开botnet_pcap_file.dat文件,输入筛选条件ip.src == 172.16.134.191 && tcp.dstport == 6667,筛选源地址为蜜罐主机,目的端口为6667的包。可得到五个地址:
    (1)209.126.161.29
    (2)66.33.65.58
    (3)63.241.174.144
    (4)217.199.175.10
    (5)206.196.44.172

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

  • 在kali上安装tcpflow,并使用命令:tcpflow -r botnet_pcap_file.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

  • 查看报告文件,可以看到两个主机互相通信的时间,IP,mac地址,使用端口,包裹数等

  • 使用命令:cat 209.196.044.172.06667-172.016.134.191.01152 | grep -a "^: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
    计算209.196.044.172.06667-172.016.134.191.01152文件中有多少主机访问了209.196.044.172。grep取出昵称,sed去除前缀,tr将空格转换为新行,tr -d去除\r,grep -v "^$"去除空行,sort -u排序并去重,wc计算行数。

5、哪些IP地址被用于攻击蜜罐主机?
由于蜜罐的特殊作用,所有发送到蜜罐得数据包都可以被记录。
使用wireshark的统计功能,将目的地址设置为172.016.134.191,查看都有哪些IP给蜜罐发送过数据包,如下图所示。

6、攻击者尝试攻击了哪些安全漏洞?
7、哪些攻击成功了?是如何成功的?

  • 使用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。使用wireshark筛选出源地址为172.16.134.191,tcp端口为135、139、25、445、4899、80的数据包,一次分析。

  • 端口135、139、25上虽有很多数据包但是没有什么数据传输,多为在建立连接,可能是在查点或者扫描

  • 端口80上的数据包较为复杂,其中210.22.204.101发送了三个很大的的数据包,可能在做缓冲区溢出攻击

在80端口上,还发现24.197.194.106发送的消息包已经进入了主机,使用了cmd.exe,正在输入命令获得蜜罐的秘密消息

  • 端口445上的数据包发现,61.111.101.78向蜜罐放了PSEXESVC.EXE,这是一种蠕虫病毒的特征码,攻击者对系统注入了蠕虫病毒并成功获取了远程调用。

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

  • 问题1: 使用同学提供的IDA不能顺利分析unpacked.exe文件。
  • 问题1解决方案:发现电脑的虚拟机是x86的,而软件是x64的,所以不兼容。后来使用WinXPattacker自带的软件完成了分析实验。
  • 问题2: 使用Free版本的IDA看不到一些代码语句的详细信息。
  • 问题2解决方案:借用同学的电脑查看的。

四、实践总结

这次实验过程比较复杂,花了不少时间,并请教了同学才得以顺利完成。但是通过学习与实践的过程,使我对于恶意代码的作用、分析、防范等具有了一定的了解,在后续的学习中,还将继续在这方面进行探索。

posted @ 2022-05-06 14:32  白桃令  阅读(42)  评论(0编辑  收藏  举报