20199131 2019-2020-2 《网络攻防实践》第9周作业
1.实践内容
1.1 恶意代码定义与分类
- 恶意代码定义:恶意代码指的是计算机按照攻击者的意图执行以达到恶意目标的指令集;其中恶意代码是一组指令集,它的实现方式可以是二进制执行文件、脚本语言代码、宏代码、或是寄生在其他代码或启动扇区的一段指令流。
- 恶意代码类型:
1.2 恶意代码发展史
1.3 计算机病毒
- 计算机病毒的定义:计算机病毒是一种能够在我复制的代码,通过将自身嵌入其他程序进行感染,而感染过程通常需要人工干预才能完成。
- 计算机病毒的基本特性:感染性、潜伏性、可触发性、破坏性、衍生性
- 计算机病毒的感染及引导机制:
(1)可执行文件
(2)引导扇区
(3)支持宏指令的数据文件
宏指令实际上是有多条指令打包而成的一组指令的集合。
- 计算机病毒的传播机制:
计算机病毒的传播渠道包括移动存储、电子邮件及下载、共享目录等。
1.4 网络蠕虫
- 网络蠕虫的定义:蠕虫病毒,一种常见的计算机病毒。它的传染机理是利用网络进行复制和传播,传染途径是通过网络和电子邮件。最初的蠕虫病毒定义是因为在DOS环境下,病毒发作时会在屏幕上出现一条类似虫子的东西,胡乱吞吃屏幕上的字母并将其改形。
- 网路蠕虫的基本特性:
- 网络蠕虫的组成结构:
网络蠕虫的内部组成结构如图:
(1)弹头
最常用的技术包括:缓冲区溢出攻击、文件共享攻击、利用电子邮件传播、利用其它普遍的错误配置
(2)传播引擎
(3)目标选择算法和扫描引擎
蠕虫可以选择如下多种不同目标选择算法:电子邮件地址、主机列表、被信任的系统、网络邻居主机、域名服务、通过特定规则任意选择IP目标地址
(4)有效载荷
蠕虫的有效载荷就是附加的攻击代码,为攻击者在目标系统上执行一些特殊目的的操作。
1.5 后门和木马
- 后门:后门程序一般是指那些绕过安全性控制而获取对程序或系统访问权的程序方法。
- 木马:木马病毒是指隐藏在正常程序中的一段具有特殊功能的恶意代码,是具备破坏和删除文件、发送密码、记录键盘和攻击Dos等特殊功能的后门程序。
1.6 僵尸程序和僵尸网络
- 僵尸程序和僵尸网络的演化过程
1.7 Rookit
1.8 恶意代码分析方法
- 恶意代码分析技术主要问题
不能事先知道恶意代码的目的是什么
恶意代码具有恶意的攻击目的
恶意代码在绝大多数时候不会具有原代码
恶意代码会引入大量的对抗分析技术 - 恶意代码静态分析技术
反病毒扫描:通过匹配现有的已知的病毒进行判断病毒的种类、家族和变种信息。
文件格式识别:获得恶意软件执行的平台等信息
字符串提取:获取恶意代码实例名、帮助或命令行选项、用户会话、后门口令、相关URL、E-mail信息和包含库文件和函数调用。
二进制结构分析:获取程序的头部摘要信息、目标文件运行架构、重定位入口、符号表入口、不同的代码段、编译代码时使用的程序等。
反汇编与反编译:将二进制程序,转化成汇编代码和高级语言代码。
代码结构与逻辑分析:获取函数调用关系图和程序控制流图。
加壳识别与代码脱壳:对代码进行加密、多样性、多态和变形的机制。
- 恶意代码动态分析技术
基于快照对比的方法和工具
系统动态行为监控方法
网络协议栈监控方法
沙箱技术
动态调试技术
2.实践过程
动手实践一 恶意代码文件类型识别、脱壳和字符串提取
实践任务:对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码进行脱壳处理。
(3)使用字符串提取工具,对脱壳后的rada代码进行样本分析,从中发现rada恶意代码的编写作者是谁
- 实验环境:WinXP Attacker虚拟机
- 首先利用file RaDa.exe命令查看RaDa.exe的文件类型,可知这是一个32位Windows PE可执行文件,并且有图形化窗口。
- 下面来看看有没有加壳,下面使用PEiD工具(查壳)来查看加壳的类型。在这里我们可以看到这个是一个版本为0.89.6的UPX壳(压缩壳,更多内容参考UPX壳分析)。还可以看到文件的入口点、EP段、偏移、文件类型等信息
- 如图用strings RaDa.exe查看RaDa.exe中可打印字符串
- 使用实验工具平台提供的超级巡警自动脱壳即可实现程序脱壳,并在恶意程序同目录下生成了一个脱壳以后的程序,请使用strings RaDa_unpacked.exe查看,发现脱壳成功
- 此时再次使用PEiD工具来查看脱壳后的程序,可以看到编写该程序所使用的语言和开发工具为VB6.0
- 进一步使用IDA分析,打开脱壳文件后如下图所示:
实践二:分析Crackme程序
任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。
- 实验环境:WinXP Attacker虚拟机
- 首先使用file命令来分析该恶意程序的大概信息,切换到恶意程序所在目录,分别执行file crackme1.exe和file crackme2.exe来查看两个文件信息,两个文件均为windows系统下运行的32位可执行程序,且没有图形界面,仅使用控制台操作
- 题目要求寻找特定输入,使其能够输出成功,那么也就是提示了我们这俩程序是有输入值得,但是不知道有几个输入值和输入值的数据类型,我们开始一个一个尝试,分别尝试了输入一个整数,两个整数,一个字符串,多个字符串和数字;观察其输出,只有两种,当输入为一个值时,输入是一样的,当输入多个值时(2个3个...个)输出反馈是一致的,可以断定该程序的输入为一个参数,但是不清楚输入值数据类型为字符还是数字
- 接下来用IDA打开该恶意程序进行分析,分析该恶意程序字符串信息,可以看出来除了上面输出反馈的两句话,还有另外两句,但是当我们输入参数时,一直不显示,此外,可以看到有“GCC”,说明该恶意程序是用C语言编写的
- 分析了一圈该恶意程序的字符串,并没有发现更多有用的信息,只能尝试一下另外那两个未输出过的字符串,这里我猜想其中一句是正确的,恶意程序通过用户输入一段字符串来进行匹配,若匹配正确则输出正确的反馈信息,首先输入其中一句,然后发现反馈信息跟随便输入的参数一样,于是排除该字符串,尝试另外一个字符串作为输入,发现其反馈信息为另外一个从未出现过的字符串,故判定输入的字符串为正确的输入信息,由于未学过汇编语言,没看出啥有用的信息,暂时只能这么猜了。
- 同理分析第二个恶意程序,每次运行输入不同数目的参数,观察其反馈值,可以看到当输入两个三个等多个参数时,其输出没有变化,初步判定该程序输入值只有一个
- 同样使用IDA工具来分析第二个恶意程序,也是用C语言开发的,这里不同的是多个几个字符串,我把每个字符串都作为输入去看反馈值,遗憾的是发现每次输出都不正确,后来在网上查询了关于这个恶意软件的分析博客,发现需要首先复制,然后再执行,就会输出一个新的反馈信息,而这个反馈信息在该恶意程序中是找不到的,这里一直没搞懂为啥这样。
实践三:样本分析,分析一个自制恶意代码样本
任务:现在你作为一名安全事件处理者的任务(如果你接受的话)就是深入分析这个二进制文件,并获得尽可能多的信息,包括它是如何工作的,它的目的以及具有的能力,最为重要的,请展示你获取所有信息所采取的恶意代码分析技术。
- 首先使用MD5对该恶意程序进行摘要信息分析
- 执行file RaDa.exe分析该恶意程序的运行环境,结果为win32位程序,有图形界面
- 如前面的实验已经分析过的,该恶意程序已经经过加壳,所以经过脱壳后对其分析,其过程前面已经写过,这里不再赘述,主要讲分析的部分;同样的,我们打开之前用过的监视工具process explorer 和wireshark开启监听,点击运行恶意程序RaDa.exe,然后首先分析其程序运行详细信息如下:该恶意程序使用http连接到目标为10.10.10.10的主机下的一个名为RaDa_commands的网页上,然后分别下载和上传某些文件,并且在受害主机C盘目录下创建一个文件夹“C:/RaDa/tmp”来保存其下载的文件,往下分析发现该恶意程序中可执行DDos拒绝服务攻击
- 继续往下分析,发现该恶意程序对主机注册表进行了读写和删除操作,然后我们打开注册表查看并未发现有关于RaDa的信息,可能是该恶意程序已经删除了注册表信息
- 往下分析发现了一些看似指令的字符,其中就认识几个,put,get,sleep,screenshot猜想其指令意思分别是上传,下载,休眠,屏幕截图
- 接着发现了一条和数据库查询语句相关的信息
- 然后分析完了恶意程序,把wireshark监听的数据分析一下,可以看到受害主机向目标主机10.10.10.10发送了大量的数据包,但是使用追踪数据流,并没有发现任何信息
- 现在可以来回答一下题目中的问题:
1.这个二进制文件摘要信息:
MD5摘要信息:caaa6985a43225a0b3add54f44a0d4c7
PE格式:运行在Windows 2000, XP and 2003及以上版的操作系统中
使用了UPX加壳工具进行了加壳处理
2.这个恶意文件的目的
该文件是一个http后门程序,当连接上互联网时,该程序就会通过http请求连接到指定主机,进行接受攻击者指令操作
3.识别并说明这个二进制文件所具有的不同特性
在分析该文件的时候,发现当我点击其运行以后,在实验主机的C盘下创建了一个RaDa目录,里面一个bin文件夹,一个tmp文件夹,tmp前面分析过是用来临时存储从目标主机下载到受害主机的文件和从受害主机获取的文件信息,而我打开bin文件夹发现里面安装了一个RaDa.exe可执行文件,并且我点击运行的文件在桌面上没有任何提醒信息,只有通过查看进程才能发现,具有较好的隐蔽性。
4.识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术
该文件使用了UPX加壳,不经过脱壳处理是无法进行反编译分析的,直接提取的字符串信息为乱码。
5.对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
判定其为后门程序,该程序执行需要通过攻击者远程发送指令,此外,并未发现该程序会自我复制和传播,也没有将自己伪装成其他程序,不符合木马和病毒的特征,因此判定为后门。
6.给出过去已有的具有相似功能的其他工具
例如海阳顶端、Bobax – 2004等都是使用http方式来同攻击者建立连接,我在上周的Linux攻防后门植入也是使用这种方式,首先在攻击机上搭建Apache服务,然后通过漏洞控制靶机使用wget http请求来访问攻击机下载后门程序。
7.可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以,操作方法见第一个实验,使用进程监视工具分析该恶意程序即可找到作者信息。
3.实践总结
学会快速浏览教材知识点