学习笔记-第十三章 恶意代码分析实战

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Yes_butter/article/details/88788680

第13章 数据加密

	在恶意代码分析中,术语数据加密是指以隐藏真是意图为目的的内容修改。由于恶意代码
	使用加密技术隐藏它们的恶意活动,作为分析人员,要全面的了解恶意代码,就需要掌握
	这些技术。
	
	1.分析加密算法的目的
	- 隐藏配置信息。如:命令和控制服务器域名
	- 窃取信息之前将它保存到一个临时文件。
	- 存储需要使用的字符串,并在使用前对其加密。
	- 将恶意代码伪装成一个合法的工具,隐藏恶意代码活动中使用的字符串。

	2.简单的加密算法。简单的加密技术已经存在了数千年。虽然你可能认为现在的计算机强大
	的计算能力让这些简单的加密算法灭绝了,但是情况并非如此。简单的加密技术常被用来
	隐藏内容,从而让内容看起来不明显,不可读,或者将它的数据转换成另一种字符集。
	
	- 因为它们足够小,所以可以用在受限的环境中。例如漏洞利用的(exploit)shell code。
	- 它们没有复杂加密算法那么明显。
	- 开销低,它们对性能几乎没有影响
	
	<1>凯撒密码
	<2> xor,异或。使用ida pro识别xor循环
	<3>其他的一些简单加密策略。
	<4>Base64
	3.常见的加密算法。使用标准加密存在一些潜在的漏洞,特别是对于恶意代码来说:
	- 加密库很大,所以恶意代码需要静态的集成或者链接到已有的代码中。
	- 链接主机上现有的代码可能降低可移植性。
	- 标准加密库比较容易探测(通过函数导入,函数匹配或者加密常量表示)
	- 对称加密算法需要考虑如何隐藏密钥。
	很多标准加密算法都依赖于一个强大的密钥来存储它们的秘密。算法是公开的。
	
	可以通过以下的方法尝试解密。
	<1>识别字符串和导入
	<2>查找加密常量
	<3>查找高熵值内容。 识别加密算法另一方法是查找高熵值的内容,除了识别潜在的明显的加密常量
	或者加密密钥外,这种技术也可以识别加密内容本身。
	
	4.自定义加密。自创加密方案,组合简单加密方法。
	
	5.解密。查找并且分离加密函数是恶意代码分析过程中很重要的一部分,但是通常情况下,你还想继续解
	密隐藏的内容。有俩种基本的方法来重现恶意代码中的加密或者解密函数。
	- 重新编写函数
	- 使用恶意代码中存在的函数
	
	<1>自解密。 无论算法是否已知,让程序正常活动期间自己完成解密。我们称这种方法为自揭密。自揭密
	廉价且有效的解密方法。
	
	<2>手动执行解密函数。对于简单的加密和编码方法,通常你可以使用编程语言提供的标准函数。
	来解密字符串
	
	<3>使用同游的解密规范。 
	

实验

Lab13-1
分析恶意代码文件Lab13-01.exe
问题

1.比较恶意代码中的字符串(字符串命令的输出)与动态分析提供的有用的信息,基于这些比较,那些元素可能被加密?
在这里插入图片描述
2.使用IDA Pro搜索恶意代码中字符串’xor’,以此来查找潜在的加密,你发现了那些加密类型?
  发现异或信息,推测是简单加密。

3.恶意代码使用什么密钥加密。加密了什么内容?
  使用异或加密资源节中的内容。加密主机名字的前12个字符

4.使用静态工具 FindCrypt2,KryPto,ANALyzer以及IDA熵插件识别一些其他类型的加密机制,你发现了什么?
  没有什么发现
5.什么类型的加密被恶意代码用来发送部分网络流量?
  base64
6.Base64编码函数在反汇编的何处?
  经过识别发现。
在这里插入图片描述
7.恶意代码发送Base64加密数据的最大长度是什么?加密了什么内容?
在这里插入图片描述
8.恶意代码中,你是否在Base64加密数据中看到了填充字符(=或者==)?
在这里插入图片描述
9.这个恶意代码做了什么?
  这个恶意程序用于加密主机名称,发送一个特定的信号,知道接受特定的回应后退出。

Lab13-2

分析恶意代码文件Lab13-02.exe.
问题

1.使用动态分析,确定恶意代码创建了什么?
  创建了很多文件,数据不易识别。

2.使用静态分析技术,例如xor搜索指令,FindCrypt2,KANAL以及IDA熵插件,查找潜在的加密,你发现了什么?
  搜索xor指令发现程序的加密函数

3.基于问题1的回答,那些导入函数将是寻找加密函数比较好的一个证据?
  writefile,查看是在哪里写入的文件。
在这里插入图片描述
4.加密函数在反汇编的何处?
在这里插入图片描述
5.从加密函数追溯原始的加密内容,原始加密内容是什么?
  程序调用了获取用户的桌面,创建bitmap对象,加密放在桌面。
在这里插入图片描述
6.你是否能够找到加密算法?如果没有,你如何解密这些内容?
  假设加密和解密算法是一致的也就是对合运算,调用俩次恢复数据,或者不调用加密函数。
在这里插入图片描述
7.使用解密工具,你是否能够恢复加密文件中的一个文件到原始文件?
  通过补丁再次调用这个函数。调用俩次即可恢复数据。

Lab13-3

分析恶意代码文件Lab13-03.exe
问题
下面的是观看视频才发现的。

1.使用动态分析,确定恶意代码创建了什么?
  可以通过查看字符串,查看到自定义的base64编码,error,和一个dns网站

2.使用静态分析技术,例如xor指令搜索。通过这种方法,你发现什么类型的加密?
  查找到六个疑似加密函数

3.使用静态工具,如FindCrypt2,KANAL以及IDA熵插件识别一些其他类型的加密机制,发现的结果和搜索字符xor结果比较如何?
  查看到作者使用了AES加密(Rijndael),其中俩个调用加密常量,俩个调用解密常量。

4.恶意代码使用哪俩种加密技术?
  base64,AES
5.对于每一种加密技术,它们的密钥是什么?
  base64 CDEFGHIJKLMNOPQRSTUVWXYZABcdefghijklmnopqrstuvwxyzab0123456789+/
  AES ijklmnopqrstuvwx
6.对于加密算法,它的密钥足够可靠吗?另外你必须知道什么?

7.恶意代码做了什么?
  使用base64加密算法加密传入的命令,使用AES加密传输shell命令相应来建立反向链接命令shell。

8.构造代码来解密动态分析过程中生成的一些内容,解密后的内容是什么?
  可以查到到一些简单的命令提示。

猜你喜欢

转载自blog.csdn.net/Yes_butter/article/details/88788680
今日推荐