“XTBL”敲诈者木马分析

0x1前言

“XTBL”敲诈者是一款专门针对Windows服务器的敲诈者木马,最早出现于2015年,不过当时只在小范围传播,并未大面积影响国内服务器。自今年六月起,“XTBL”敲诈者再次爆发,开始大面积影响国内服务器,同时出现多个变种,其危害程度不容小觑。

1

图1 搜索引擎返回结果显示“XTBL”敲诈者盛行

        服务器感染“XTBL”敲诈者后,服务器中文档,压缩包,图片等文件均遭到加密,并修改文件后缀为“XTBL”,并在文件名中附带黑客的邮箱。图2显示的是某用户服务器感染“XTBL”敲诈者后的桌面截图。

2

图2 感染“XTBL”敲诈者木马后桌面截图

0x2 传播途径分析

“XTBL”敲诈者的攻击目标主要为Windows服务器。黑客入侵服务器后释放敲诈者木马程序,而敲诈者木马在加密文档的同时枚举网络资源,查找工作组和域内所有共享服务器的共享资源,并对其进行加密,以达到二次传播的效果。对照用户服务器登陆日志以及文档最后修改时间可以发现,服务器感染敲诈者木马之前一段时间曾遭到疑似爆破登陆。

3

图3 文件最后修改时间

4

图4 文件加密之前服务器曾遭到疑似爆破登陆

5

图5 “XTBL”敲诈者文件创建时间

0x3 样本分析

本文以最新捕获的“XTBL”样本为例进行分析。和大部分敲诈者木马相似,“XTBL”敲诈者木马解密数据段的数据,创建本进程另一实例作为“傀儡”进程进行进程替换,以达到运行shellcode的目的。初始进程可能伪装成安装包或其他应用程序,无恶意功能,载入shellcode的“傀儡”进程执行敲诈者木马的主要功能。

6

图6 “XTBL“敲诈者伪装成安装程序

        从Dump出的shellcode可以看出,程序主要由五大功能模块组成。包含API字符串的解密及地址获取,启动项的添加,删除卷影,发送服务器信息以及加密文件。

7

图7 五大功能模块

        对于API函数字符串的解密,则是取地址0x40D450中存放的常量字符串,偶数位四字节异或0x98765432,奇数位四字节异或0x12345678所得。之后通过得到的API字符串获取相对应的函数地址,构建导入表。

8

图8 解密API字符串

该程序对字符串的解密方法十分讲究,程序中使用的所有字符串包括RSA公钥都由一串位于地址0x41F900的密文动态解密得到,解密算法有多种,都是基于异或解密的方式,并由一常数控制密文索引起始值。下图显示程序中使用的部分字符串的解密结果。

9

图9 部分字符串解密结果

        相比较灵活的字符串解密方式,程序的自启动方式显得“墨守陈规“,通过设置相关注册表项以及复制文件到启动目录两种方式添加启动项。

10

图10 设置相关注册表项

11

图11 复制自身到启动目录

        在进行加密之前,程序会删除卷影备份。

12

图12 删除卷影备份

        值得一提的是,“XTBL”敲诈者使用管道来传递命令行,这和“Ceber”系列敲诈者使用方法相同,而通过“mode con select=1251”命令行设置MS-DOS显示为西里尔语可能与作者来自俄罗斯有关。

完成以上准备工作之后,程序产生两组密钥块,其中一组用于本地文件加密,另一组用于网络共享资源文件加密。

13

图13 产生两组密钥

        密钥块大小为184字节,前32字节存放RC4加密后的随机数密钥,该密钥用于之后加密文档。为了加强随机数的随机性,程序以系统时间作种生成随机数作为循环次数,每次异或地址0x4326F0中的值与系统时间后求其SHA-1值,并将最终所得随机数经RC4加密得到密钥。

14

图14 产生RC4加密的随机数密钥

        密钥块第33字节起存放系统序列号,用作服务器的唯一标识符。之后的128字节存放RSA加密后的随机数密钥,而RSA公钥的SHA-1值则存放在最末端的20字节中。

15

图15 密钥块生成过程

16

图16 密钥块分布图

        密钥块产生之后,程序会将密钥块中部分内容以及其他系统信息以POST的方式发送至黑客的服务器上。每个字段的标识及参数值如下表所示。

000

表1 发送的数据

        除了在加密文件之前发送数据,在加密完成后也会再次向黑客服务器发送数据,两者用函数最后一个参数作区别,当最后一个参数为0时表示即将进行加密,为1时表示加密完成,参数不同带来的结果是POST数据的目的地址不同。

17

图17 两次发送数据

        之后程序开始进行加密,由两个线程完成加密工作,其中一个线程枚举网络资源并对获取的共享文件进行加密,另一个线程加密本地文件。

18

图18 枚举网络资源并加密

        加密本地文件的线程中,通过枚举磁盘中的文件并判断文件后缀来确定需要加密的文件路径,完成文件路径的确认后,程序开启四个子线程进行加密。由于父线程负责传递文件路径给子线程以及开启子线程进行加密,如果只创建一个子线程进行加密,当子线程由于某些原因无法返回时,父线程将无法继续执行下去,这会导致父线程无法传递下一个文件路径并且无法再创建新的子线程。而开启四个子线程进行加密时,只需保证其中一个线程正常返回即可继续下一轮加密。

19

图19 开启四个线程进行加密

        加密的第一步是判断文件大小。当文件大小大于0x180000字节时,直接对文件内容进行加密,并将文件重命名;当文件大小小于等于0x180000字节时,则创建新文件并加密旧文件内容后写入新文件,之后删除旧文件。

20

图20 根据文件大小选择加密方案

        之后程序使用之前生成的随机数初始化AES密钥,加密文件内容。加密完成后需要在文件尾部写入信息,以供黑客解密文件时使用。

对于大小小于等于0x180000字节的文件,按照如下图所示的方法在文件尾部写入信息。

21

图21 文件大小小于0x180000字节时写入文件头的数据

        对于文件大小大于0x180000字节的文件,按照如下图所示的方法在文件尾部写入数据。

22

图22 文件大小小于0x180000字节时写入文件头的数据

        至此,加密完成。被加密的文件类型包括exe,dll,doc,docx,pdf,xls,xlsx,ppt,zip,rar,bz2,7z,dbf,1cd,jpg。

0x4 总结

“XTBL”敲诈者对服务器的危害巨大,而造成文档被加密的根源在于服务器遭到入侵,而造成服务器被入侵的可能为登陆密码弱口令,漏洞没及时修补等原因,这些都是服务器主的疏忽造成的。因此对于服务器主而言,提升安全意识特别重要,设置强度高的登陆密码以及及时修补漏洞非常有必要。