第13章 数据加密
在恶意代码分析中,术语数据加密是指以隐藏真是意图为目的的内容修改。由于恶意代码
使用加密技术隐藏它们的恶意活动,作为分析人员,要全面的了解恶意代码,就需要掌握
这些技术。
1.分析加密算法的目的
- 隐藏配置信息。如:命令和控制服务器域名
- 窃取信息之前将它保存到一个临时文件。
- 存储需要使用的字符串,并在使用前对其加密。
- 将恶意代码伪装成一个合法的工具,隐藏恶意代码活动中使用的字符串。
2.简单的加密算法。简单的加密技术已经存在了数千年。虽然你可能认为现在的计算机强大
的计算能力让这些简单的加密算法灭绝了,但是情况并非如此。简单的加密技术常被用来
隐藏内容,从而让内容看起来不明显,不可读,或者将它的数据转换成另一种字符集。
- 因为它们足够小,所以可以用在受限的环境中。例如漏洞利用的(exploit)shell code。
- 它们没有复杂加密算法那么明显。
- 开销低,它们对性能几乎没有影响
<1>凯撒密码
<2> xor,异或。使用ida pro识别xor循环
<3>其他的一些简单加密策略。
<4>Base64
3.常见的加密算法。使用标准加密存在一些潜在的漏洞,特别是对于恶意代码来说:
- 加密库很大,所以恶意代码需要静态的集成或者链接到已有的代码中。
- 链接主机上现有的代码可能降低可移植性。
- 标准加密库比较容易探测(通过函数导入,函数匹配或者加密常量表示)
- 对称加密算法需要考虑如何隐藏密钥。
很多标准加密算法都依赖于一个强大的密钥来存储它们的秘密。算法是公开的。
可以通过以下的方法尝试解密。
<1>识别字符串和导入
<2>查找加密常量
<3>查找高熵值内容。 识别加密算法另一方法是查找高熵值的内容,除了识别潜在的明显的加密常量
或者加密密钥外,这种技术也可以识别加密内容本身。
4.自定义加密。自创加密方案,组合简单加密方法。
5.解密。查找并且分离加密函数是恶意代码分析过程中很重要的一部分,但是通常情况下,你还想继续解
密隐藏的内容。有俩种基本的方法来重现恶意代码中的加密