LCG Kit是一个不同寻常的工具,代码使用多态shellcode和线性同余发生器(Linear Congruential Generator, LCG)来加密最后一阶段代码及payload的位置,LCG是生成伪随机数序列的算法。因为使用LCG这一特征,研究人员将其命名为LCG kit。
因为LCG kit工具创建的恶意附件在邮件攻击活动中被广泛传播,因此研究人员猜测该工具已经在暗网论坛出售了。LCG kit被小型犯罪组织用于传播RAT、窃取器,包括Loki Bot, FormBook, Agent Tesla, Remcos, AZORult, Revcode RAT, Quasar RAT。
历史活动LCG kit有许多可能的目标文档:
RTF文档
含有公式编辑器代码的OLE对象的微软Word/Excel 2007+文档
含有加载嵌入RTF文档的javascript的PDF文档
含有漏洞利用的嵌入远程RTF对象的微软Word/Excel 2007+文档
研究人员最早发现kit时,主要的攻击目标为RTF文档。之后,excel文档也被广泛使用。目前,研究人员发现了使用LCG kit创建的恶意RTF和excel文档。
Shellcode分析 LCG[3]算法是用来生成伪随机序列X0, X1, X2, … 的算法,使用的是递归关系: X0 = seedX(n+1) = (m * X[n]) + c mod MM是 2^8,2^16,2^32或2^64 。在LCG Kit中, seed 值 X0 是 0 , M 是 2^32 。乘数 m 和常数 c 是随机选择的。
然后LCG Kit会用伪随机的32位值来解密代码中的payload区,代码使用的是 XOR 。解混淆后,LCG路径是这样的:
图1: 反混淆的LCG Kit shellcode中的LCG routine
LCG Kit shellcode会用一些特征的结合使分析和逆向变得很难:
不同文档样本的Shellcode在不同的寄存器中保存LCG参数
垃圾代码( NOP, PUSH/POP pairs 等)有时是嵌套出现的(P USH x/PUSH y/POP y/ POP x ) (图2)
关联跳转(图3 and 4)
一些指令使用可选形式,比如为A DD EAX,n 使用两种不同形式的操作代码,用 XOR x, [y+0x0] 代替 XOR x, [y]最有效的反分析特征就是使用垃圾代码,这些垃圾代码最终会使混淆分析人员,导致逆向工具产生错误的结果。
如下图所示,加密payload的起始位置保存在ESI寄存器中,当前XOR seed保存在EDX中,加密payload的结束位置保存在EAX中。代码段中包含5种无用的 NOP, PUSH, POP 汇编指令。
图2: 5个误用的NOP, PUSH, POP汇编指令
下一个汇编代码段是LCG Kit在其他指令部分使用跳转指令来混淆反汇编程序。比如其中一个反汇编程序在 JMP 0x1108 指令后就给出了错误的指令:
图3: 混淆反编译器使用其在JUMP指令后产生错误代码的代码段
下面是jump指令后正确的指令:
图4: 这是JMP 0x1108指令后正确的汇编指令
下图是LCG Kit shellcode解密路径中有效代码的图像表示:
图5: 有用代码的区块表示
解密后,生成的shellcode是与位置无关的代码,它使用windows API来下载和执行payload。也有一些变种使用 URLDownloadToFile API这样的API,如下图所示:
图6:用 URLDownloadToFile API 来下载payload的解密指令
另一个final解密的shellcode变种是用 WinHTTP API 来下载payload:
图7:用 WinHTTP* API 来下载payload的解密指令
结合CVE-2018-81742018年9月底,研究人员发现一个使用不同漏洞利用的LCG kit邮件攻击活动。附件的微软Excel文档会下载一个含有VBScript和实现CVE-2018-8174漏洞的HTML文件。VBScript中的shellcode是正常的LCG Kit shellcode,会下载Agent Tesla。
HTML文件名为test4.html,说明这是一个测试的实现。
图8:含有使用CVE-2018-8174的Excel文档的邮件消息
图9:消息中包含的诱饵PDF文档
微软Word宏中的实现11月底,研究人员又发现一起使用Word附件的垃圾邮件攻击活动,其中附件中含有可以加载LCG Kit shellcode到内存中的宏,最终安装Loki Bot stealer。
这说明随着可利用的有漏洞的机器数量减少,诱使用户启用恶意宏来进行漏洞利用也是一种可行的方式。
图10: 含有恶意宏文档附件的邮件消息
图11: 使用宏来加载LCG Kit shellcode的文档
结论利用LCG Kit和ThreadKit这样的漏洞利用文档构建器可以很容易的创建垃圾邮件活动中使用的恶意文档。因为LCG Kit支持漏洞利用和宏,因此运营者有许多方法来确保恶意软件payload的传播,比如使受害者在有漏洞的PC上打开文档或使用社会工程方法来启用宏。