实战|勒索病毒介绍及解密

  • A+
所属分类:逆向工程

请点击上面 实战|勒索病毒介绍及解密 一键关注!


近一年很多人问我,中了勒索病毒怎么办,问我的有医疗行业、财务系统等等,今天给大家介绍其中一个Sodinokibi勒索病毒背景和解密过程。

  

实战|勒索病毒介绍及解密  

Sodinokibi勒索病毒简介 

Sodinokibi 很可能由隶属于臭名昭著的 GandCrab 勒索软件家族的攻击者分发,根据 GandCrab 首次出现的地下论坛,该家族应该很快就会退休。

Sodinokibi 勒索软件利用 Oracle WebLogic 漏洞 (CVE-2019-2725) 访问受害者的机器。一旦进入,恶意软件会尝试以提升的用户权限执行自身,以便不受任何限制地访问系统上的所有文件和资源。

Sodinokibi 试图避免感染来自伊朗、俄罗斯和其他前苏联国家的计算机。

这种勒索软件使用 AES Salsa20 算法来加密用户的文件,AES 用于加密发送到控制服务器的会话密钥和数据,用户文件使用 Salsa20 加密进行加密。

Sodinokibi 使用椭圆曲线 Diffie-Hellman 密钥交换算法来生成和传播加密密钥。

一旦它渗透到一台机器,它就会清除备份文件夹中的所有文件。

目前,勒索软件需要交付赎金要求的BTC才能重新获得对加密文件的访问权限。他们声称应在四天内支付这笔款项,否则赎金要求将增加一倍。

 

它是怎么运行的

我们分析的 Sodinokibi 勒索软件样本是使用自定义打包程序打包的。 即使在成功解包之后,主要的 Sodinokibi 代码似乎也没有太多可读的字符串。 它也没有任何系统库和 API 的导入,这意味着依赖于可读字符串和导入的 API 表的静态 杀毒软件扫描器将很难检测到它。

API 名称和其他必需的字符串在其运行时使用 RC4 算法解密。 为了使反病毒软件的情况更具挑战性,大多数对字符串的操作都是使用字符串的 DJB 哈希值而不是字符串本身来执行的。

 

初始化

Sodinokibi 首先构建一个动态导入表,并在互斥锁的帮助下确保这是系统上当前运行的唯一实例。一旦互斥检查通过,它就会使用 RC4 解密二进制文件中存储的 JSON 配置,并检查布尔键值“exp”。如果设置为“true”Sodinokibi 将尝试运行漏洞利用。在我们的例子中,“exp”键的值被设置为 true,所以它继续运行漏洞利用函数。

实战|勒索病毒介绍及解密

实战|勒索病毒介绍及解密

 

1:解密的 JSON 配置

 

负责运行漏洞利用的代码首先检查机器上是否应用了 2018 9 11 日的补丁 (KB4457138)。此补丁解决了下面提到的多个漏洞。如果未检测到补丁,勒索软件会根据平台架构继续执行 32 位或 64 位版本的 shellcode。我们认为它试图通过利用 CVE-2018-8440 来提升其特权。

实战|勒索病毒介绍及解密

2:片段 1

 

补丁 KB4457138 解决的漏洞如下表所示:

KB4457138 解决的漏洞

CVE-2018-8457 CVE-2018-8335 CVE-2018-8424 CVE-2018-8455 CVE-2018-8468 CVE-2018-8447

CVE-2018-8475 CVE-2018-8271 CVE-2018-8440 CVE-2018-8464 CVE-2018-8469 CVE-2018-8421

CVE-2018-8442 CVE-2018-8367 CVE-2018-8443 CVE-2018-8465 CVE-2018-8419 CVE-2018-8466

CVE-2018-8410 CVE-2018-8467 CVE-2018-8462 CVE-2018-8452 CVE-2018-8446 CVE-2018-8449

CVE-2018-8420 CVE-2018-8433 CVE-2018-8438 CVE-2018-8435 CVE-2018-8456 CVE-2018-8354

CVE-2018-8434 CVE-2018-8470 CVE-2018-8332 CVE-2018-0965 CVE-2018-8315 CVE-2018-8439

CVE-2018-8392 CVE-2018-8425 CVE-2018-8393

如果系统没有漏洞并且进程仍然以受限用户身份运行,它将使用 RUNAS 命令启动另一个具有管理权限的实例,如果当前实例以受限权限运行,则终止当前实例。完整的流程可以在下面的代码中看到。

实战|勒索病毒介绍及解密

3

 

Sodinokibi 在管理员模式下成功启动后,它会根据 JSON 配置中的“bro”键和国家/地区进行额外的预检查。它将根据计算机的区域设置尽量不感染来自以下国家/地区的计算机。

实战|勒索病毒介绍及解密


4:匹配语言 ID

 

豁免国家名单

罗马尼亚 俄罗斯 乌克兰 白俄罗斯 爱沙尼亚 拉脱维亚 立陶宛 塔吉克斯坦 伊朗

亚美尼亚 阿塞拜疆 格鲁吉亚 哈萨克斯坦 吉尔吉斯斯坦 土库曼斯坦 乌兹别克斯坦 鞑靼斯坦

通过预检查后,它会终止 mysql.exe 进程(如果它正在运行),以便它可以访问 MySQL 文件进行加密,然后使用 vssadmin 删除所有 Windows SHADOW COPIESWindows 内置备份机制),并禁用 Windows使用 bcdedit(启动策略编辑器)恢复,如下所示:

vssadmin.exe 删除阴影 /All /Quiet & bcedit /set {default} recoveryenabled No & bcedit /set {default} bootstatuspolice ignorealfailures

实战|勒索病毒介绍及解密

5

 

在加密用户文件之前,Sodinokibi 会在整个文件系统和网络共享中搜索所有名为“backup”的目录并将其清除。有趣的是,在擦除此目录中的所有文件之前,它会用随机字节覆盖内容,从而无法恢复文件。幸运的是,Acronis Backup 文件无法轻易删除,因为它们使用内核模式驱动程序进行保护,以阻止勒索软件进行此类非法删除。

 

密钥生成

Sodinokibi 使用椭圆曲线 Diffie–Hellman (ECDH) 密钥生成和交换算法来生成私钥-公钥对。 它使用它来生成一个共享秘密,该秘密将用作对称加密算法 AES Salsa20 的密钥,这些算法用于

加密不同类型的数据。

•AES 加密用于加密私钥-公钥对的私钥,该私钥在本地生成

用户的机器以及通过网络发送的数据。

另一方面,Salsa20 用于加密用户文件。

 

Sodinokibi 附带两个不同的公钥,一个作为 JSON 配置的一部分,另一个嵌入在二进制文件本身中。 这些公钥将用于加密本地生成的私钥。 下面我们详细介绍密钥生成和加密过程中包含的步骤。

步骤1.在本地机器上生成会话私有(秘密,随机数)和公钥对。

实战|勒索病毒介绍及解密

6:生成本地公钥和私钥

 

使用 JSON 配置中的公钥加密步骤 1 中的私钥

步骤 2. 生成另一个私钥和公钥对。

步骤 3. 使用步骤 2 中的私钥和 JSON 中的公钥(pk 密钥值)生成共享密钥并对其进行散列以生成对称密钥。

实战|勒索病毒介绍及解密

7:使用共享密钥生成对称密钥

 

步骤 4. 生成一个 16 字节的 IV(初始化向量)。

步骤 5. 使用步骤 3 和步骤 4 中生成的密钥和 IV 使用 AES 加密对步骤 1 中生成的私钥进行加密。

步骤 6. 计算步骤 5 中生成的加密私钥的 CRC32

步骤 7. 在包含来自步骤 5 的加密私钥的缓冲区的末尾附加 IV CRC32

步骤 8. 将此缓冲区保存到内存中标记为“sk_key”的映射文件偏移量。

实战|勒索病毒介绍及解密

8:使用攻击者的公钥加密第一步中的私钥

 

使用嵌入在二进制文件中的公钥加密步骤 1 中的私钥

步骤 9. 使用嵌入在步骤 3 的二进制文件中的不同公钥重复步骤 2 7

步骤 10. 将此缓冲区保存到内存中标记为“0_key”的映射文件偏移量

sk_key0_key pk_key 根据访问权限分别写入以下注册表项。

HKLMSOFTWARErecfgsk_key OR HKCUSOFTWARErecfgsk_key HKLMSOFTWARErecfg_key OR HKCUSOFTWARErecfg_key HKLMSOFTWARErecfgpk_key OR HKCUSOFTWARErecfgpk_key

实战|勒索病毒介绍及解密

9:注册表中的加密密钥为 Salsa20 生成每个文件的密钥

 

步骤 11. 生成新的私钥和公钥对。

步骤 12. 使用在步骤 2 中生成的会话公钥生成共享密钥并对其进行散列以获取另一个对称密钥以用于 Salsa20 密钥生成。

步骤 13. 设置 256 位(32 字节)Salsa20 密钥状态

步骤 14. Salsa20 密钥生成 8 IV

步骤 15. 生成 Salsa20 密钥

步骤 16. 使用这个 Salsa20 key_state 来加密使用 Salsa20 加密的用户文件。

实战|勒索病毒介绍及解密

10:按文件生成 Salsa20 密钥

 

对每个要加密的文件重复步骤 11 16


加解密图解

要了解密钥是如何在攻击者和受害者机器之间生成和传输的,我们需要借助下图来看看 Diffie Hellman 是如何工作的。

实战|勒索病毒介绍及解密

11:椭圆曲线 Diffie-Hellman (ECDH) 密钥交换

Sodinokibi 加密过程详解

实战|勒索病毒介绍及解密

12:加密过程

Sodinokibi解密过程详解

实战|勒索病毒介绍及解密

13:解密过程(攻击者的秘密是攻击者的私钥)

 

用户文件解密过程的简化版本如下图所示。

实战|勒索病毒介绍及解密

14


本地硬盘驱动器和网络共享上的文件加密

为了加密用户文件,Sodinokibi 使用 I/O 完成端口并创建多个加密线程,最多为机器上处理器内核数量的两倍,并将这些线程与创建的 I/O 完成端口相关联。这些线程使用

GetQueuedCompletionStatus Win API 函数等待完成数据包排队到 I/O 完成端口,然后再进行文件加密。

创建线程并等待 I/O 数据包到达后,Sodinokibi 将启动枚举除 CDROM RAMDISK 驱动器之外的所有本地驱动器和网络共享上的用户文件,并开始关联不在豁免文件夹、文件或文件扩展名中的文件通过调用 AddFileToIoCompletionPort 用户函数列出此 I/O 完成端口并调用PostQueuedCompletionStatus Win API I/O 完成端口上发布 I/O 数据包,这将触发在此 I/O 完成端口上等待的线程恢复并继续加密文件。 AddFileToIoCompletionPort 还为每个文件生成一个唯一的 Salsa20 密钥。

被加密并将这个 Salsa20 密钥作为包含其他元数据的结构的一部分传递给加密线程,这些元数据在使用 lpOverlapped 加密后也必须写入文件PostQueuedCompletionStatus Win API 的参数。

最后,它设置一个标志,表明没有更多的文件要枚举并发布多个 I/O 完成数据包,通过这样做,它确保等待文件的额外线程应该恢复并中断执行流以立即完成。

实战|勒索病毒介绍及解密

15

 

豁免文件夹

•"program files (x86)"

•"msocache"

•"$windows.~ws"

•"boot"

•"perflogs"

•"application data"

•"programdata"

•"appdata"

•"$recycle.bin"

•"tor browser"

•"system volume information"

•"google"

•"windows"

•"windows.old"

•"mozilla"


豁免文件

•"bootfont.bin"      •     "boot.ini"

•"ntuser.dat"

•"iconcache.db"

•"ntuser.dat.log"

•"bootsect.bak"

•"autorun.inf"

•"desktop.ini"

•"ntldr"

•"thumbs.db"

•"ntuser.ini"


豁免的文件扩展名

•"themepack" •     "ldf"

•"scr"

•"386"

•"ani"

•"theme"

•"icl"

•"cmd"

•"adv"    

•"msi"    

•"hlp"

•"drv"

•"deskthemepack"

•"rom"

•"lnk"

•"spl"

•"msu"

•"key"

•"com"

•"diagpkg"

•"diagcab"

•"lock"

•"mpa"

•"cpl"

•"hta"

•"icns"

•"dll"

•"idx"

•"shs"

•"wpx"

•"bat"

•"msc"

•"cab"

•"ps1"

•"ics"

•"msp"

•"sys"

•"nls"

•"ico"

•"ocx"

•"cur"

•"mod"

•"exe"

•"prf"

•"nomedia"

加密线程负责读取文件内容,对其进行加密,将其写回同一个文件,写入包含加密会话的元数据 每个文件 ECDH 公钥和每个文件 Salsa20 IV 用于加密文件然后重命名它经过

附加随机生成的扩展名。文件使用 Salsa20  加密(Chacha 变体)EncryptAndWrite 用户函数内部的加密算法。

实战|勒索病毒介绍及解密

16

 

加密后的文件结构

实战|勒索病毒介绍及解密

17:加密文件的结构

 

加密过程完成后,勒索软件准备将数据发送到控制服务器。 此数据包含与 JSON 配置不同的字段,系统信息和加密密钥。 准备好的数据也保存到注册表项中“[HKLM|HKCU]SOFTWARErecfgstat”,然后用 AES 加密并将其发送到攻击者的服务器。

实战|勒索病毒介绍及解密

18:通过网络发送的数据

 

实战|勒索病毒介绍及解密

19:生成 URL

 

赎金记录

Sodinokibi 包含一个赎金票据模板,其中包含用户特定详细信息的占位符。

这些占位符动态替换为用户特定的扩展名、用户 IDuid 有关说明,请参见上表)和键。 赎金票据放置在除白名单之外的每个目录中。

实战|勒索病毒介绍及解密

20:赎金说明


解密

该勒索软件没有可用的免费解密器,唯一的选择是使用攻击者提供的解密服务,可以通过以下方式访问赎金说明中的说明。 解密器页面如下:

实战|勒索病毒介绍及解密

21:赎金说明文件

 

结论 

防护建议:

1.多台机器,不要使用相同的账号和口令

2.登录口令要有足够的长度和复杂性,并定期更换登录口令

3.重要资料的共享文件夹应设置访问权限控制,并进行定期备份

4.定期检测系统和软件中的安全漏洞,及时打上补丁。

5.定期到服务器检查是否存在异常。查看范围包括:

a)是否有新增账户

b)Guest是否被启用

c)Windows系统日志是否存在异常

d)杀毒软件是否存在异常拦截情况

6.安装安全防护软件,并确保其正常运行。

7.从正规渠道下载安装软件。

8.对不熟悉的软件,如果已经被杀毒软件拦截查杀,不要添加信任继续运行。

Sodinokibi勒索病毒通用解密工具

谁是 REvil/Sodinokibi

REvil 是一家勒索软件即服务 (RaaS) 运营商,可能位于独立国家联合体 (CIS) 国家。它于 2019 年作为现已解散的 GandCrab 勒索软件的继任者而出现。 REvil/Sodinokibi 是暗网上最多产的勒索软件之一:附属机构针对全球数千家科技公司、MSP 和零售商。

在成功加密企业数据后,REvil 的附属公司索要大笔赎金——高达 7000 万美元——以换取解密密钥,并承诺该团伙不会公布在攻击期间窃取的数据。

在它消失之前最大的挑战是 Kaseya 攻击:一场让数以千计的托管服务提供商 (MSP) 陷入困境的闪电战。

7 2 日开始,REvil 团伙在 22 个国家/地区对 Kaseya 虚拟系统/服务器管理员 (VSA) 平台发起了超过 5,000 次攻击。这些攻击不仅打击了 Kaseya MSP 客户群,而且鉴于他们中的许多人使用 VSA 来管理其他企业的网络,即这些 MSP 的客户。

REvil 的密钥层次结构

核心团队还拥有一个通用密钥,用于像 Kaseya 这样的一组受害者。 Boguslavskiy 周三告诉 Threatpost,该通用密钥可以覆盖多个网络和工作站。

这是 Kaseya 攻击后发布的密钥,他说,指的是据称重生的 REvil 的新代表讲述的一个故事,关于编码器误点击并意外生成和发布密钥。

此外,还有一个操作员密钥主密钥,由顶级 RaaS 领导层使用,例如 UNKN—— 7 13 日服务器关闭之前活跃的 REvil 代表。

 

Revil团队在网络犯罪论坛发布的消息看,该组织的核心成员之一的UNKN长期失联——疑似被捕,同时其基础设施遭到入侵,所以才沉寂长达两个月之久。而在该团队宣布回归后不久,国外便有安全公司宣布和执法部门合作获取到了针对Sodinokibi(Revil)勒索软件的解密方案,不过仅能解密713日之前被SodinokibiRevil)勒索软件加密的文件。


解密方法如下:

实战|勒索病毒介绍及解密

1:启动通用解密工具

实战|勒索病毒介绍及解密

2:扫描匹配密钥

 

实战|勒索病毒介绍及解密

3:成功恢复!

实战|勒索病毒介绍及解密
「天億网络安全」 知识星球 一个网络安全学习的星球!星球主要分享、整理、原创编辑等网络安全相关学习资料,一个真实有料的网络安全学习平台,大家共同学习、共同进步!

知识星球定价:199元/年,(服务时间为一年,自加入日期顺延一年)。

如何加入:扫描下方二维码,扫码付费即可加入。

加入知识星球的同学,请加我微信,拉您进VIP交流群!

实战|勒索病毒介绍及解密

朋友都在看

▶️等保2.0丨2021 必须了解的40个问题

▶️等保2.0 三级 拓扑图+设备套餐+详解

▶️等保2.0 二级 拓扑图+设备套餐+详解

▶️等保2.0 测评  二级系统和三级系统多长时间测评一次?

▶️等保2.0系列安全计算环境之数据完整性、保密性测评

▶️等保医疗|全国二级、三乙、三甲医院信息系统安全防护设备汇总

▶️国务院:不符合网络安全要求的政务信息系统未来将不给经费

▶️等级保护、风险评估和安全测评三者的区别

▶️分保、等保、关保、密码应用对比详解

▶️汇总 | 2020年发布的最重要网络安全标准(下载)

天億网络安全

【欢迎收藏分享到朋友圈,让更多朋友了解网络安全,分享也是一种美德!】

实战|勒索病毒介绍及解密

↑↑↑长按图片识别二维码关註↑↑↑


欢迎扫描关注【天億网络安全】公众号,及时了解更多网络安全知识

原文始发于微信公众号(天億网络安全):实战|勒索病毒介绍及解密

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: