[ English ]
[ English ]
2015年4月16日 初稿
2015年4月18日 第二次更新
安天安全研究与应急处理中心(Antiy CERT)
安天分析团队从2月启动“方程式(EQUATION)”分析工作,在形成了第一篇分析报告后,后续整体分析没有取得更多的进展和亮点。基于这种情况,我们首先尝试对部分组件中的加密技巧进行了分析树立,以利后续工作,我们将相关工作进行分享,希望得到业内同仁的批评指点。
DoubleFantasy组件
DoubleFantasy是用于环境认证的前导模块,其他分析机构认为该组件活跃时间约为2004年至2012年,之后被TripleFantasy替代。DoubleFantasy针对资源、注册表存储和网络通讯中均使用了加密技巧。
资源加解密算法:DoubleFantasy自带的资源为密文,采用异或算法,密钥有两个,为0x3C(xor 0x3C)和0x7F(xor 0x7F),如图:
注册表存储配置和网络通讯加密算法:
DoubleFantasy组件中的注册表存储配置信息和网络通讯加密算法均为对称加密算法RC6。组件代码生成一组长度0x44*4的密钥,随后使用该密钥,对一些配置数据和网络通讯进行加密,由于是对称加密算法,加解密方法相同。DoubleFantasy没有预设密钥,保证对不同目标的采用的加密密钥都不相同。
解读:是一种分组加密算法,其由RSA实验室以RC5算法为基础改进提出,并参加了AES的遴选,成为最终入围的5种候选算法之一,但最终被比利时的Rijandael击败。 |
函数共5个参数,其中4个参数
Decode
{
Lpdata1 ;密文地址
Lpdata2 ;解密后明文地址
Lenth ;密文长度
Lpkey ;密钥地址
}
密钥长度为:4*49=196(bytes),各部分数据示例如下:
Sk1 |
Sk 2 |
Sk 3 |
Sk 4 |
…… |
…… |
…… |
|
Sk 37 |
Sk 38 |
Sk 39 |
Sk 40 |
Sk 41 |
Sk 42 |
Sk 43 |
Sk 44 |
Sk 45 |
Sk 46 |
Sk 47 |
Sk48 |
Sk 49 |
|
|
|
其中sk45-48为二级密钥,sk49为修正标志。
R1 |
R2 |
R3 |
R5 |
二级密钥计算密码表
参数名 |
参数值 |
L1 |
R2 |
L2 |
R4 |
L3 |
R1 |
L4 |
R3 |
L5 |
R1 |
L6 |
R2 |
L7 |
R4 |
L8 |
R2 |
L9 |
R3 |
L10 |
R1 |
L11 |
R3 |
L12 |
R4 |
L13 |
R2 |
L14 |
R3 |
该加密算法比较对安全研究人员分析增加了一定困难,由于没有预设的密钥,除非分析人员有完整的数据流,否则无法解密加密的数据。
EquationDrug是一个复杂的攻击组件,其是Fanny/Fantasy系列前导验证模块,的一个手续枢纽模块,可以完成相关的信息上传和后续组件下载工作。
资源加解密算法:采用了是异或和移位混合使用的方式。
下面是将资源中数据获取,并对其解密的一段操作,解密得到多个字符串。
在EquationDrug的msnadt.exe模块中,我们发现释放可执行程序相关解密操作,所使用的加密方式多为移位、异或操作,下图为主要的解密部分。
GrayFish组件是方程式攻击组织使用组件中最为复杂的组件之一,其自身依托注册表进行分块存储,借助Bootkit完成无文件载体的加载。其资源、配置中广泛使用了加密技术。
资源加解密算法:
解密的数据使用RtlCompressBuffer修复即得到明文
GrayFish的资源解密代码
配置数据解密算法:
GrayFish配置字符串解密算法和密码对照表
此篇文章是我们完成《修改硬盘固件的木马——探索方程式(EQUATION)组织的攻击组件》一文后,取得的一些有限的进步与心得。我们自身并算不擅长的加密算法,但对此进行梳理,有利于为后续分析扫清障碍。
方程式对于安全研究者和用户来说,无疑都是一个强大的对手,而我们的资源非常有限,但也许更为重要的是,我们并未放弃。
参考链接