先前未知的勒索软件技术
更新日期:2017年6月27日:关于新一波的Pet ya/Petrwrap/NotPetya/expertr勒索软件攻击阅读:Schroedinger的宠物(ya)
今年我们发现了一个新的勒索软件家族,用于针对组织的有针对性的攻击。在穿透组织的网络后,威胁参与者使用PsExec工具在组织中的所有端点和服务器上安装勒索软件。关于这个勒索软件的下一个有趣的事实是,威胁参与者决定使用著名的Petya勒索软件来加密用户数据。如你所知,这个勒索软件家族有一个RaaS模型,但是威胁者决定不使用这个能力。为了得到一个可行的勒索软件版本,PetrWrap背后的团队创建了一个特殊的模块来修补原始的Petya勒索软件。这就是为什么这个新的恶意软件如此独特。
技术细节
PetrWrap特洛伊木马程序用C编写,并在MS Visual Studio中编译。它在数据部分携带了一个Petya勒索软件v3的样本,并使用Petya感染受害者的机器。此外,PetrWrap实现了自己的加密例程,并在运行时修改Petya的代码以控制其执行。这使得佩特沃普背后的罪犯能够隐藏他们在感染期间使用佩特亚的事实。
作案手法
启动后,PetrWrap延迟执行(睡眠5400秒=1.5小时)。之后,它从数据部分解密Petya的主DLL,并准备调用其导出函数zuwqdwaefdsg345312。此函数通常为Petya准备进一步的操作,并启动MBR覆盖进程。不过,PetrWrap需要先挂接Petya的几个函数,因此它将调用Petya的DllEntryPoint的指令替换为NOPs(十六进制字节0x90)。这就阻止了Petya独自进行,并允许PetrWrap在继续之前进行所有必要的计算和准备。
海燕草的主要功能
之后,PetrWrap进行必要的加密计算(我们将在下面更详细地讨论它们),挂接两个Petya过程(负责生成配置数据,称为Petya_generate_config,以及负责MBR覆盖过程,称为Petya_infect),然后将执行传递给Petya。有关原始Petya的功能的更多信息,请参阅我们以前的出版物。
密码方案
通常,Petya生成一个16字节的密钥,并使用Salsa20密码加密本地驱动器上的NTFS分区的MFT。为了使解密只可能由它的算子,它使用椭圆曲线Diffie-Hellman(ECDH)密钥协商算法与曲线secp192k1和一个公钥嵌入到Petya的身体。
PetrWrap背后的罪犯面临一个问题:如果他们像现在这样使用Petya,他们将无法解密受害者的机器,因为他们需要Petya操作员的私钥。所以他们决定用他们自己的独立实现来完全替代Petya的ECDH部分,并使用他们自己的私钥和公钥。
PetrWrap实现使用来自OpenSSL的加密例程(而Petya使用mbedtls库),并按如下步骤进行:
- 特洛伊木马包含一个嵌入的公钥master_pub(这是曲线prime192v1上的一个点,与Petya选择的点再次不同);
- 每次感染期间,PetrWrap生成一对新的会话密钥ec_session_priv+ec_session_pub;
- 计算ecdh_共享摘要=SHA512(ecdh(master_pub,ec_session_priv));
- “拦截”由Petya生成的salsa密钥,并使用ecdh_shared_digest对其进行加密(有许多半无用的操作可以归结为使用AES-256使用ecdh_shared_digest的不同部分作为密钥和IV对salsa密钥进行基本加密);
- 构造用户id,它是包含加密的salsa密钥和ec_session_pub的字符串表示;
- 将此用户id传递给Petya,Petya将其当作自己的数据使用(将其放入引导加载程序的配置中,以便在电脑重新启动后向用户显示)。
在PetrWrap中实现ECDH共享密钥计算
钩形程序
PetrWrap在Petya中钩住了两个过程,我们称之为Petya_infect和Petya_generate_config,并用它自己的过程替换它们,称为wrap_infect和wrap_generate_config。
wrap_infect实现以下功能:
- 保存Petya生成的salsa密钥以供进一步使用;
- 修补Petya引导加载程序代码和赎金文本,以便跳过闪烁的骷髅动画和擦除所有提到的Petya在赎金消息;
- 将执行过程传递给原始的petya_感染程序。
wrap_generate_config依次执行以下操作:
- 调用原始的petya_generate_config过程;
- 根据前段描述的算法生成用户id字符串;
- 用这个新生成的用户id替换Petya的id字符串。
受感染机器的屏幕
技术总结
通过上述所有操作,PetrWrap实现了以下目标:
- 受害者的机器被锁定,NTFS分区的MFT被安全加密(因为此攻击中使用的Petya v3没有早期版本的缺陷,并且正确实现了Salsa20);
受害者的机器被锁定,NTFS分区的MFT被安全加密(因为此攻击中使用的Petya v3没有早期版本的缺陷,并且正确实现了Salsa20);
- 锁屏上没有显示闪烁的头骨动画,也没有提到佩蒂娅,这使得评估情况和确定造成的损害程度变得更加困难;
锁屏上没有显示闪烁的头骨动画,也没有提到佩蒂娅,这使得评估情况和确定造成的损害程度变得更加困难;
- PetrWrap的开发人员不必编写低级的引导加载程序代码,并且有可能犯类似于在早期版本的Petya中观察到的错误。
PetrWrap的开发人员不必编写低级的引导加载程序代码,并且有可能犯类似于在早期版本的Petya中观察到的错误。
解密
不幸的是,这一系列勒索软件使用了强大的加密算法,这意味着解密工具是不可能的。但是,受害者可以尝试使用第三方工具(如R-Studio)还原文件。
检测
卡巴斯基产品成功地将此勒索软件检测为特洛伊木马-Ransom.Win32.PetrWrap和PDM:Trojan.Win32.Generic。
结论
以加密数据为主要目的的针对组织的攻击正变得越来越流行。在目标攻击中使用勒索软件的组通常试图找到易受攻击的服务器或具有未受保护的RDP访问的服务器。在渗透一个组织的网络之后,他们使用特殊的框架,比如Mimikatz,来获得在整个网络中安装勒索软件所需的凭证。为了防止此类攻击,组织需要使其服务器软件保持最新,为远程访问系统使用安全密码,在其服务器上安装安全解决方案,并在其端点上使用带有行为检测组件的安全解决方案。
样品MD5
17c25c8a7c141195ee887de905f33d7b–特洛伊木马赎金。Win32.PetrWrap.b