新型勒索软件变种DeathRansom分析 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

新型勒索软件变种DeathRansom分析

41yf1sh 资讯 2020-01-11 10:05:00
459724
收藏

导语:近期,我们的威胁雷达监测到了一个新型勒索软件变种,名为DeathRansom,本文将主要对其展开分析。

一、概述

勒索软件无疑是一个全球范围内的巨大威胁。根据最近的一份报告,预计勒索软件在2018年给企业带来了超过80亿美元的损失,这一数值高出2016年的10亿美元,而今年仅医疗行业的损失就已经达到250亿美元。

这一数字之所以出现严重增长,有一部分原因是在于勒索软件即服务(Ransomware as a Service)的兴起。例如,GandCrab之类的变种就为其开发人员带来了多达20亿美元的收入。除了GandCrab之外,我们在2019年第三季度的FortiGuard Labs威胁态势报告中观察到的另外两个勒索软件家族Sodinokibi和Nemty现在也已经部署为RaaS解决方案。此外,造成数字增长的另外一部分原因是网络犯罪分子持续开发新的勒索软件变种。在过去几年中,勒索软件逐渐升级为一个严重的威胁,这也正是FortiGuard Labs对其保持密切跟踪的一大原因。

近期,我们的威胁雷达监测到了一个新型勒索软件变种,名为DeathRansom,本文将主要对其展开分析。我们所分析的样本SHA-256值为:7C2DBAD516D18D2C1C21ECC5792BC232F7B34DADC1BC19E967190D79174131D1 。

在该版本之后的样本表现出略有不同的行为,我们会在随后的分析中详细说明。

恶意样本时间戳:

1.png

如我们所见,这个样本的时间戳非常新(2019年11月16日 08:37:02),因此我们就以其为样本,对其进行深入研究,以了解更多信息。

二、DeathRansom勒索软件的工作流程

从整体上来看,该勒索软件使用了简洁的代码实现方式,扫描并加密本地和网络中驱动器上的文件。

start():

2.png

从start()函数就可以看出,DeathRansom符合勒索软件的典型特征——对文件进行遍历并加密文件。为了遍历网络资源,该恶意软件使用WNetOpenEnumW、WNetEnumResourceW等标准的Windows API。

通过递归方式扫描网络资源:

3.png

在函数processNetwork中,以递归方式扫描网络资源,直至发现常规目录为止。在这里,其处理方式与processDir一致。

processDir():

4.png

如同processNetwork一样,processDir也是按递归方式查找的。不同之处在于,它需要进行一些完整性检查,以确保该项目确实是文件夹,而不是.或..。并且,确保该项目不会被排除(具体请参见下文的exclusion2)。

Exclusions:

5.png

在这里,我们可以看到恶意软件作者进行了很多合理的筛选,包括:

1、排除重要的Windows文件夹(Program Files、Windows等),以避免操作系统无法使用;

2、当涉及到文件时,也会进行类似的检查;

3、DeathRansom还会避免加密系统文件(ntuser.dat等文件)。

当然,这个列表并不全面,但它确实表明恶意软件作者具有一些与系统开发相关的技能和知识。

“加密中”的文件:

6.png

此时,一些读者可能已经注意到DeathRansom没有真正加密文件内容。在这种情况下,受害者只需要重命名受影响的文件(将其扩展名删除),就可以将系统恢复到正常状态。

赎金提示:

7.png

尽管如此,就如同所有其他勒索软件一样,DeathRansom仍然显示文件名为read_me.txt的勒索信息。在该提示中,可以清楚地看到恶意软件作者将其软件称为DEATHRANSOM。在该电子邮件中还通知受害者需要通过 death@cxxxxxxver.me 和 death@fxxxxxxx.cc 邮箱与攻击者取得联系。

三、其他有趣的技术细节

在恶意软件启动后、开始对文件进行“编码”之前,恶意软件会对受害者系统中使用的语言进行一些有趣的检查。

语言检查过程:

8.png

我们可以从Microsoft的官方文档中,查找LangID字段,以找到这些语言所对应的名称。

语言标识符常量和字符串:

9.png

有趣的是,DeathRansom不仅检查一种语言,而是会检查是否使用多种操作系统语言。但是,我们可以发现这些语言存在一定规律,它能避免东欧国家的计算机感染恶意软件。

我们还尝试从无记录的标头(特别是Rich Signature富签名)中提取到一些有趣的信息。

Rich Signature(富签名):

10.png

根据这些信息,我们可以找到用于编译这个恶意软件的开发环境,如下所示。

+ [ C ] - object files produced by C compiler
+ [IMP] - DLL import record in library file
+ [LNK] - files produced by a linker
product id: 0x0083 = MSVS2008 [ C ]
product id: 0x0004 = MSVS6 [LNK]
product id: 0x000E = ?
product id: 0x0093 = MSVS2008 [IMP]
product id: 0x0001 Objects without @comp.id
product id: 0x0109 = ?
product id: 0x0102 = VS 2019 / 2017 / 2015 [LNK]

值得关注的是,恶意软件作者居然还在使用1998年的产品(MSVS6)来开发恶意软件。

四、新版本勒索软件加密文件过程

最近,我们还发现了新版本的DeathRansom,主要的变化在于该恶意软件的新版本真正对文件进行了加密。我们所分析样本的SHA-256值为:ab828f0e0555f88e3005387cb523f221a1933bbd7db4f05902a1e5cc289e7ba4 。

该勒索软件的新版本使用了Curve25519算法(用于椭圆曲线Diffie-Hellman ECDH密钥交换方案)、Salsa20、RSA-2048、AES-256 ECB和块异或XOR算法组合对文件进行加密。

密钥生成和文件加密过程:

11.png

4.1 Diffie-Hellman密钥交换

1、使用advapi32.SystemFunction036(与RtlGenRandom相同)生成一个随机的32字节值,作为受害者到ECDH密钥交换的curve25519私钥。

2、使用Curve25519算法,从受害者的Curve25519私钥派生出受害者的Curve25519公钥。这是攻击者最终解密受害者文件所需的主要信息。如下所示,其内容包含在注册表HKCU\Software\Wacatac\private中。

添加的注册表项:

12.png

3、使用Curve25519算法,从32字节的硬编码值(攻击者的Curve25519公钥)和先前在步骤1中生成的受害者Curve25519私钥中得出共享密钥。

4、计算共享密钥的SHA256哈希值,以备稍后使用。

4.2 生成RSA密钥对

5、生成一个RSA-2048密钥对。

6、使用Salsa20对RSA-2048私钥进行加密,并使用私钥的SHA256哈希值(来源于上一节的步骤4),将其保存到注册表文件HKCU\Software\Wacatac\private中(如上图所示)。

7、RSA-2048公钥写入注册表文件HKCU\Software\Wacatac\public中(如上图所示)。

4.3 文件加密

8、使用advapi32.SystemFunction036生成一个随机的32字节值,该值用作AES-256密钥,对每个文件都进行这一操作。

9、使用先前生成的随机值作为AES-256密钥,使用AES-256 ECB加密16字节的硬编码值。

10、将步骤9的结果用于与目标文件内容进行16字节XOR操作的密钥。

11、重复步骤9和步骤10,同时在每个循环中将硬编码的值增加1,直到对整个文件完成加密,或已经加密4KB(4096字节)为止。

12、使用受害者的RSA-2048公钥(在步骤5中生成)对AES密钥(在步骤8中生成)进行加密。

13、然后,将加密的AES密钥和标记0xABEFCDAB附加到加密的文件中。

加密的文件格式:

13.png

最终,要解密受害者文件,必须生成一个共享密钥。为此,至少需要以下任意一组密钥:

1、受害者的curve25519公钥(可以从注册表或赎金提示中查询)和攻击者的curve25519私钥(由攻击者持有);

2、攻击者的curve25519公钥(嵌入到二进制文件中)和受害者的curve25519公钥(在恶意软件执行后丢失)。

目前,我们还在对这个勒索软件的加密行为开展进一步研究,以确认在此过程中是否存在实现上的缺陷,我们会实时发布任何新的进展。

在加密之后,会在每个目录中放入赎金提示,其中包括每个用户唯一的LOCK-ID。这里的LOCK-ID可以在HKCU\Software\Wacatac\private中找到,是使用Base64编码的相同数据。

新的赎金提示:

14.png

除了连接到hxxps://iplogger[.]org/1Zqq77以获取受害者的公网IP地址之外,勒索软件不会进行任何其他的网络通信。但是,正如我们在上一节中所讨论的,要想生成解密文件所需的共享密钥,攻击者必须获得受害者的curve25519公钥。这也就是为什么赎金通知中提示受害者要通过电子邮件发送LOCK-ID的原因。

FortiGuard Labs进行的内部测试表明,最新版本的FortiGate解决方案可以实现所有网络和设备的防护。此外,可以通过拦截对 hxxps://iplogger[.]org/1Zqq77 的访问来实现恶意网站的过滤。该恶意软件样本的SHA-256特征如下:

7C2DBAD516D18D2C1C21ECC5792BC232F7B34DADC1BC19E967190D79174131D1(W32/Filecoder.B!tr.ransom)

13D263FB19D866BB929F45677A9DCBB683DF5E1FA2E1B856FDE905629366C5E1(W32/Kryptik.ANT!tr)

AB828F0E0555F88E3005387CB523F221A1933BBD7DB4F05902A1E5CC289E7BA4(W32/Kryptik.ANT!tr)

作为网络威胁联盟的成员,我们与其他联盟成员实时共享了该威胁的详细信息,以帮助为客户提供更好的服务。

五、总结

DeathRansom是一种新型恶意软件,并且还在不断发展之中。根据我们的经验来判断,恶意软件作者经常会不断更新恶意软件,以改进其功能或逃避检测。实际上,我们在对早期版本的DeathRansom进行初步分析之后,就关注到了一篇简短的文章,描述了DeathRansom如何加密文件,从而使文件无法访问。经过我们的研究,证实该恶意软件作者确实解决了加密的问题,并且DeathRansom现在已经成为一个“名副其实”的勒索软件。在下篇文章中,我们将尝试揭示出DeathRansom与其他攻击活动的关联性,以及推测出该恶意软件幕后的攻击者,敬请阅读下篇文章。

最后,要感谢Artem Semenchenko、Rommel Joven和Joie Salvio在研究过程中提供的协助。

六、威胁指标

恶意样本:

7C2DBAD516D18D2C1C21ECC5792BC232F7B34DADC1BC19E967190D79174131D1

13D263FB19D866BB929F45677A9DCBB683DF5E1FA2E1B856FDE905629366C5E1

AB828F0E0555F88E3005387CB523F221A1933BBD7DB4F05902A1E5CC289E7BA4

网络通信:

hxxps://iplogger[.]org/1Zqq77

本文翻译自:https://www.fortinet.com/blog/threat-research/death-ransom-new-strain-ransomware.html如若转载,请注明原文地址:
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2024 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务