勒索组织INDRIK SPIDER半路分家,DoppelPaymer应运而生
2019-07-28 10:00:13 Author: www.4hou.com(查看原文) 阅读量:155 收藏

CrowdStrike研究团队近日确定了BitPaymer勒索软件的一类新变种,并将其命名为DoppelPaymer。自2019年6月以来,DoppelPaymer涉及了一系列恶意勒索活动,其中就包括美国德克萨斯州埃德库奇市和智利的农业部的袭击事件。

DoppelPaymer与BitPaymer大部分代码是相同的,不过也存在许多差异。BitPaymer之前一直由INDRIK SPIDER恶意组织运营,这个转变可能意味着INDRIK SPIDER有成员出走,并自行将Dridex银行木马和BitPaymer融合到了一起,开启了专属于自己的犯罪道路。

INDRIK SPIDER起源

INDRIK SPIDER是一个复杂的网络犯罪集团,该组织自2014年6月以来就一直在运营Dridex银行木马。在2015年和2016年,Dridex是全世界违法收益最高的银行木马之一。自2014年以来,INDRIK SPIDER已经通过该木马获得数百万美元的非法利润。经过多年的运营,目前Dridex已经进行了多次更新,变得更加复杂和专业,同时在恶意软件中添加了新的反分析功能。

随着时间的推移,INDRIK SPIDER在其主营业务——电汇欺诈中也变得不再顺风顺水。2015年,INDRIK SPIDER的化名子公司“Smilex”被捕,之后英国执法部门也采取了行动,指在瓦解INDRIK SPIDER在Dridex活动中的洗钱网络,与此同时,一名帮助他们建立虚假账户的英国银行雇员也被抓捕入狱。

也许由于这些阻碍,INDRIK SPIDER在2017年改变了他们的操作方式,只进行规模较小的Dridex分发活动。2017年8月,该组织又引入了BitPaymer勒索软件,并开始专注于这类高额赎金的勒索行为。

BitPaymer起源

BitPaymer于2017年8月首次发现,首版的赎金票据包含了赎金要求和基于TOR支付的网站链接,网站页面如下所示,有标题“Bit paymer”、用户ID、比特币(BTC)钱包和联系电子邮件地址;而后不到一个月,票据中就不再包含赎金金额;到了2018年7月,支付网站的链接也被删除了;再之后到现在,票据中就只剩下了两封用于协商的联系邮件地址。

(关于BitPaymer详细分析请见此

1.png

图1.最早的BitPaymer支付页面

BitPaymer最新版本

2018年11月,BitPaymer重大更新。票据中有了受害者的姓名,加密文件的文件扩展名也用受害者姓名来表示,如下图2所示:

2.png

图2.最新BitPaymer勒索凭据

除了上述变动之外,BitPaymer还更新为使用AES-256的CBC(密码块链接)模式,以及随机生成的密钥和NULL初始化向量来加密(以前版本的BitPaymer使用的是128位RC4)。

由于AES是块密码,在数据不是块大小的倍数的情况下需要对其填充,通常是通过添加零或n次填充字节n次(也称为PKCS#7)来实现。但是,INDRIK SPIDER选择用随机生成的n个字节来填充,也就是说必须知道这些随机填充的字节才能正确解密文件的最后一个数据块。这反映在勒索说明的新字段TAIL中,如图2所示,其中包含Base64编码的TAIL和加密的AES KEY。

有趣的是,BitPaymer代码中还安排了一个加密初始化函数,该函数会选择三种所需加密算法中的一种,具体由传递给函数的整数参数选择。对于128位RC4、128位AES、256位AES,其对应值分别为1,2和3。较新版本的BitPaymer是将硬编码值3传递给函数,即用到了256位AES加密算法,如图3所示:

3.png

图3.最新版BitPaymer加密选择过程的伪代码

随着文件加密例程的更新,受害者特定的RSA公钥的大小也从1,024位增加到4,096位。此非对称密钥用于加密生成的对称文件加密密钥。如果支付了赎金,INDRIK SPIDER将提供一个解密工具,其中包含相应的受害者的RSA私钥。

目前还不清楚为什么INDRIK SPIDER从RC4转移到AES,可能是由于担心RC4与AES相比相对较弱。RSA密钥大小的增加也极大地增强了加密密钥的加密强度。

自2018年11月更新以来,INDRIK SPIDER已经至少在15次行动中使用了BitPaymer,仅在2019年6月和7月就发生了多起事件。

认识DoppelPaymer

DoppelPaymer的第一批已知受害者出现于2019年6月,但DoppelPaymer的早期版本早在2019年4月就已发布,早期版本相比后续版本缺乏很多新功能,因此目前尚不清楚是否只是为了测试而构造的这些版本。

到目前为止,我们已经确定了8个不同的恶意软件版本和3名受害者,赎金金额分别为2 BTC、40 BTC和100 BTC。根据撰写本文时的美元兑BTC汇率,这些赎金金额从大约25,000美元到超过1,200,000美元不等。

DoppelPaymer使用的赎金票据类似于BitPaymer在2018年使用的原始票据。票据里不包括赎金金额,但包含TOR支付链接,而用来标识加密密钥的关键字也从KEY变成了DATA,如图4所示:

4.png

图4. DoppelPaymer赎金票据

DoppelPaymer的支付网页与原始的BitPaymer网页几乎完全相同。标题一样,也使用唯一ID来识别受害者,网页显示了赎金金额、倒数计时器和BTC地址,如下图5所示:

5.png

图5. DoppelPaymer支付页面 

DoppelPaymer和BitPaymer加密比较

虽然DoppelPaymer和BitPaymer大量代码互通,但是存在一些值得注意的差异,如表1所示:

image.png

表1. DoppelPaymer和BitPaymer之间的相关差异

DoppelPaymer使用的策略,技术和程序(TTP)与BitPaymer的先前的有明显的相似之处,例如使用TOR进行赎金支付和.locked的扩展名。大量重叠的代码也表明DoppelPaymer是BitPaymer的最新变种。例如,在最新版本的BitPaymer中,RC4字符串混淆的代码在加密之前反转字节,还包括了一个辅助函数,它支持多种形式的对称加密(即RC4,128位AES和256-位AES),如图3所示。

新的DoppelPaymer功能和ProcessHacker的使用

除了上面所说的改动之外,BitPaymer的源代码也被大量修改过,以改进和增强DoppelPaymer的功能。例如,文件加密是线程化的,这可以提高加密的速度;更新了网络枚举代码以解析受害者系统的地址解析协议(ARP)表,并使用命令arp.exe -a检索该表;通过nslookup.exe将本地网络上其他主机的结果IP地址与域解析结果相结合(以前版本的BitPaymer使用命令net.exe视图来枚举网络共享。)

此外,DoppelPaymer仅在提供特定的命令行参数后才能运行。恶意软件会计算在命令行上传递的第一个参数的CRC32校验和,并将其添加为在二进制文件中硬编码的常量值,再将指令指针地址添加到此结果,该结果将成为用于继续执行恶意软件的jmp的目标。硬编码的常量值对于每个构建都是唯一的。在我们分析的样本中,该值为0x672e6eb7,如下面的图6所示:

6.png

图6. DoppelPaymer控制流混淆

如果未提供参数,或者命令行上提供的值不正确,则DoppelPaymer将崩溃。此设计可能指在阻碍自动恶意软件分析环境。

也许DoppelPaymer最有意思的一点改动是终止可能干扰文件加密的进程和服务。DoppelPaymer包含了一些CRC32进程校验和服务名,都被列入了黑名单。恶意软件作者使用CRC32校验和而不是字符串来阻碍逆向工程。但是,可以强制执行所有的校验和并恢复相应的字符串,如附录中的表7-11所示。

ProcessHacker

为了终止其中一些进程和服务,DopplePaymer使用一种有趣的技术来利用ProcessHacker(一种合法的开源管理实用程序)。此应用程序与内核驱动程序捆绑在一起,可用于终止进程和服务。 DoppelPaymer捆绑了六个可移植的可执行(PE)文件,这些文件在恶意软件的sdata部分中进行了加密和压缩。这些PE文件包含以下32位和64位版本:

· ProcessHacker应用程序

· ProcessHacker内核驱动程序

· 利用ProcessHacker的自定义stager DLL

使用sdata部分的前16个字节作为RC4密钥来提取模块,进而解密后续4个字节的数据,这就是后续加密数据的大小(big-endian)。后面的加密数据还使用前16个字节作为RC4密钥来解密剩余数据。格式如下表2所示:

image.png

表2.加密的DoppelPaymer ProcessHacker相关模块的格式

解密后,前4个字节是压缩数据的大小,接下来的4个字节是未压缩数据的大小,后面是压缩数据,如表3所示:

image.png

表3.加密的DoppelPaymer ProcessHacker相关模块标头和数据的格式

使用aPLib对数据进行解压,aPLib生成自定义结构化格式的PE文件,其中每个PE包含一个8字节的头,由一个4字节的魔法值(Magic value)组成,然后是另一个4字节的值,指定以下PE数据的大小,如表4所示:

image.png

表4. DoppelPaymer ProcessHacker封装模块格式

表5是每个ProcessHacker组件的魔法值和SHA256哈希。

image.png

表5. DoppelPaymer中嵌入的加密PE文件

解压后,上述的三个二进制文件都写入同一目录。ProcessHacker和内核驱动程序都是作为随机文件名编写的,但是stager DLL文件名被选为ProcessHacker导入的DLL名称之一。 DoppelPaymer执行ProcessHacker,它通过DLL搜索顺序劫持加载stager DLL。一旦加载,ProcessHacker的内核驱动程序就会被用来杀死黑名单上的进程。

DoppelPaymer与Dridex 2.0

2019年6月4日起,Emotet恶意软件中有出现Dridex加载程序(SHA256散列813d8020f32fefe01b66bea0ce63834adef2e725801b4b761f5ea90ac4facd3a)的现象。Dridex样本包含了从其sdata部分解密32位/64位核心bot模块的代码,使用与DoppelPaymer从其sdata部分提取PEs完全相同的加密、压缩和数据格式(前面已经描述过)。此观察结果将此Dridex变种直接与DoppelPaymer联系了起来。

Dridex样本也很不寻常,不仅因为Dridex加载器与bot核心模块捆绑在一起(而不是从C2服务器动态检索它),还因为bot核心模块的版本号为2.0.0.78。并且该变种后续还在更新,在撰写本文时最新版本为2.0.0.80。值得注意的是,Dridex的先前样本的版本号为4.0.0.87。目前还不清楚为什么恶意软件作者决定使用较低的版本号,但有一种解释是,恶意软件作者将这个新创作视为“Dridex 2.0”。

结论

BitPaymer和DoppelPaymer的行动还在继续运行之中。并行操作,加上BitPaymer和DoppelPaymer之间显著的代码重叠,很可能意味着操作DoppelPaymer的威胁行为者已经从INDRIK SPIDER中分裂了出来,开启了专属于自己的犯罪道路。

IoC

image.png


文章来源: https://www.4hou.com/typ/19321.html
如有侵权请联系:admin#unsafe.sh