方程式(EQUATION)部分组件中的加密技巧分析

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击败。

 

  1. 解密函数参数

函数共5个参数,其中4个参数
Decode
{
Lpdata1   ;密文地址
Lpdata2   ;解密后明文地址
Lenth     ;密文长度
Lpkey     ;密钥地址
}

  1. 密钥结构分析

密钥长度为: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为修正标志。

  1. 解密数据的方法
  2. 根据密钥,计算二级密钥(二级密钥长度为16bytes)
  3. 将密文前16位与二级密钥进行逐byte进行异或操作。结果为明文。
  4. 将计算后的二级密钥按顺序替换密钥中的k45-k48共16个bytes
  5. 重新计算下一级密钥。再对后面16个bytes进行解密。
  6. 循环直到未解密的密文长度不足16bytes
  7. 修正标志为剩余密文byte数。
  8. 继续计算下级密钥并更新密钥,逐byte解密。
  9. 二级密钥计算方法
  10. 二级密钥共16个bytes,4个bytes为一个参数。结构图如下:

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

  1. 二级密钥计算方法
  2. R2=K1+K46;R4=K2+K48
  3. (L1+L1+1)*L1=M1;(L2+L2+1)*L2=M2
  4. M1环左移5位得到结果M1;M2环左移5位得到结果M2
  5. M1和L3进行异或操作;M2和L4进行异或操作
  6. 分别取M1和M2的低8位:N1和N2
  7. 将M1循环左移N2位得到Z1;将M2循环左移N1位得到Z2
  8. Z1+K3写入到L3对应的地址中
  9. Z2+K4写入到L4对应的地址中
  10. 步骤2-8循环4次。其中L下标每次加3,K下标每次加2
  11. 步骤2-9重复循环5次,L下标不变,K下标依次向后增加。
  12. K43+R1=R1;K44+R3=R3

         该加密算法比较对安全研究人员分析增加了一定困难,由于没有预设的密钥,除非分析人员有完整的数据流,否则无法解密加密的数据。

EquationDrug组件:

EquationDrug是一个复杂的攻击组件,其是Fanny/Fantasy系列前导验证模块,的一个手续枢纽模块,可以完成相关的信息上传和后续组件下载工作。

资源加解密算法:采用了是异或和移位混合使用的方式。
下面是将资源中数据获取,并对其解密的一段操作,解密得到多个字符串。


在EquationDrug的msnadt.exe模块中,我们发现释放可执行程序相关解密操作,所使用的加密方式多为移位、异或操作,下图为主要的解密部分。

GrayFish组件

GrayFish组件是方程式攻击组织使用组件中最为复杂的组件之一,其自身依托注册表进行分块存储,借助Bootkit完成无文件载体的加载。其资源、配置中广泛使用了加密技术。

资源加解密算法:

  1. GrayFish还原为执行体后,其资源节的前4字节为解密密钥
  2. X =0xDD483B8F - 0x6033A96D *密钥
  3. 逐字节读取后面的数据与X进行异或

解密的数据使用RtlCompressBuffer修复即得到明文

GrayFish的资源解密代码

配置数据解密算法:

  1. 密码对照表在偏移0x0042010C处
  2. 根据密文的16进制数作为偏移,从密码对照表中读取数据
  3. 逐字节读取拼接成明文数据

GrayFish配置字符串解密算法和密码对照表

小结

    此篇文章是我们完成《修改硬盘固件的木马——探索方程式(EQUATION)组织的攻击组件》一文后,取得的一些有限的进步与心得。我们自身并算不擅长的加密算法,但对此进行梳理,有利于为后续分析扫清障碍。
方程式对于安全研究者和用户来说,无疑都是一个强大的对手,而我们的资源非常有限,但也许更为重要的是,我们并未放弃。

 

参考链接

 
  1. 安天实验室:修改硬盘固件的木马探索方程式(EQUATION)组织的攻击组件 http://www.antiy.com/response/EQUATION_ANTIY_REPORT.html
  1. 卡巴斯基实验室:Equation: The Death Star of Malware Galaxy http://securelist.com/blog/research/68750/equation-the-death-star-of-malware-galaxy
  1. 卡巴斯基实验室:A Fanny Equation: "I am your father, Stuxnet" http://securelist.com/blog/research/68787/a-fanny-equation-i-am-your-father-stuxnet
  1. 卡巴斯基实验室:Equation Group: from Houston with love http://securelist.com/blog/research/68877/equation-group-from-houston-with-love
  1. 翰海源:Equation Group硬盘固件后门修改模块浅析 http://blog.vulnhunt.com/index.php/2015/03/20/equation-group-firmware-backdoor-analysis

文章分享二维码: