McAfee Advanced Threat Research Team(ATR)于2019年8月20日发现了一个名为“Nemty”的勒索软件家族。
Nemty最初出现在一个地下论坛:
论坛中的一位用户强调了Nemty是如何检测系统中扩展名重复的函数,该函数需要由作者重新编写:
根据追踪,研究人员在以下位置看到了Nemty的活动轨迹:
技术分析
Nemty运行的是勒索软件即服务(RaaS)模型,是通过以下方式传播的:
1. RIG Exploit Kit 于2019年9月发布;
2. Paypal虚拟网站;
3. RDP通过其活动中的会员进行攻击;
4. 僵尸网络:2019年11月通过Phorpiex僵尸网络传播;
5. Loader:SmokeBot。
以下是Nemty发展的时间表:
我们观察了Nemty开发人员如何采用其他旧勒索软件家族的某些特征,例如已失效的Gandcrab。比如对URL的重用和引用,该URL会生成一个以俄罗斯文本和俄罗斯总统图片为特色的图像,就像Gandcrab在其代码中所做的那样。
Nemty作者发布了不同版本的勒索软件。在这篇研究文章中,我们将重点介绍第一个版本的工作方式以及后续版本中添加的重大更改。
哈希:505c0ca5ad0552cce9e047c27120c681ddce127d13afa8a8ad96761b2487191b
编译时间:2019-08-20 19:13:54
版本:1.0
该恶意软件样本是32位二进制文件。正如作者在地下论坛上宣布的那样,打包程序和恶意软件是用C / C ++语言编写的。
PE标头中的编译日期为2019年8月20日。
Nemty在执行过程中使用RunPE,这意味着它在执行之前先在内存中解压缩。
通过分析样本,我们可以找到开发人员如何在其代码中添加某些保护,例如:
1. 仅当加密过程按计划进行时,才对内存中的某些信息进行解密;
2. 完成一些操作后清除内存;
3. 不同内存地址之间的信息共享,清除以前使用的内存空间。
创建勒索软件注释
为了创建勒索软件注释,Nemty会获取每个字符串并将其保存到内存中。当勒索软件编译所有必需的字符串时,它将把它们连接在一起以创建整个勒索软件注释。在此操作中,Nemty将逐行解密,将数据移至另一个内存地址并清除前一个地址,仅将信息保留在新的内存空间中。
在Nemty的第一个版本中,未对所有字符串始终采用加密,这就是为什么可以看到一些字符串并从中发现部分功能的原因。
逻辑单元
在执行时,Nemty将检查系统中所有可用的逻辑单元,并将有关它们的信息保存在带有以下信息的静态列表中:
1. 单元类型;
2. 可用空间。
通过使用Windows API“GetDriveTypeA”,勒索软件将区分以下单元:
1. 可移动的;
2. 固定的;
3. 网络的。
要检查系统中的可用空间,Nemty将再次通过Windows API使用“ GetDiskFreeSpaceExA”:
从受害者中提取公共IP地址
从第一个版本开始,Nemty已经实现了提取受害者的公共IP地址的功能。该信息是通过对IPIFY服务的请求(位于http://api.ipify.org)提取的。 RaaS经常使用这些类型的服务来检查受感染者的位置。
一些Nemty版本的用户代理是“ Chrome”字符串,用户代理在勒索软件中被硬编码为单个字符串,而不是使用原始用户代理。
IPIFY服务用于检索受害者的公共IP地址,并使用提取的数据,Nemty使用之前获得的数据作为参数建立另一个到http://api.db-api.com/v2/free/countryName的连接。提取的IP地址和国家/地区数据稍后用作勒索软件通知创建的一部分。
受害者信息提取
Nemty将从受害者那里提取以下信息:
1. 用户名:使用Windows API GetUserNameA;
2. 计算机名称:使用Windows API GetComputerNameA;
3. 硬件配置文件:使用Windows API GetCurrentHwProfileA。
有了这些数据,攻击者就可以确保受感染的受害者是独一无二的,这有助于RaaS操作员量化有多少受害者能够感染自己或通过附属机构感染。
Nemty 1.0,错误地应用了地域性保护措施
RaaS家族通常采取一些保护措施来防止感染某些地理区域,在第一个版本中,Nemty仍在开发中,并没有检查受害者是否属于所谓的黑名单国家。
如果检测到的国家/地区在黑名单中,则Nemty返回字符串“true”并将其保留在配置中。如果找不到该国家,则该字段的值将为false。
Nemty加密密钥
进行此检查后,Nemty将立即从base64解码主密钥的值,并将其保存在内存地址中以备后用。同时,它将准备一个固定大小为7个字符的随机字符串,并将其与字符串“ _NEMTY_”一起使用,以创建带有加密文件中使用的特定扩展名的勒索软件注释。在这个过程中,Nemty将创建一对RSA密钥,一个是公共密钥,一个是私有密钥。
在此操作中,Nemty将在base64中对这些密钥进行编码:
编码之后,Nemty将再次解码受害RSA公钥并将其导入以供以后使用。
再次使用相同的操作,但这一次使用勒索软件开发人员提供的主RSA公钥。
在加密过程中,Nemty将从用户收集的所有数据中创建所有存储在内存中的配置文件。配置文件是一个JSON结构文件,其中包含所有收集的数据和先前创建的AES密钥。关于所使用的密钥,所有文件都相同,但是Nemty为每个文件使用不同的IV。
Nemty配置文件
下面是一个由Nemty收集并在配置文件中使用的信息示例:
以下是一个配置文件示例:
配置文件的不同字段是:
最终,配置文件将保存在使用8192位RSA公钥加密并以base64编码的磁盘上。
Nemty将通过“SHGetFolderPathW”获取登录到系统中的用户名,并使用该文件夹上的. Nemty扩展名对其进行保存和加密。
Nemty加密线程
对于加密,Nemty将为系统中找到的每个逻辑单元创建一个新线程,以对文件进行加密。
用于加密文件的方法与其他RaaS家族类似,使用' FindFirstFileW '和' FindNextFileW '函数获取所有文件。Nemty将避免使用以下名称加密文件夹:
.
..
…
加密过程还将避免使用具有以下名称的文件:
使用不敏感的函数“lstrcmpiW”进行此检查。 Nemty加密文件时,它将尝试两种组合,一种使用小写,一种使用大写。
检查的扩展名如下:
如果Nemty成功检查,它将创建一个随机IV并使用先前生成的AES密钥加密文件的一部分。然后使用受害人的RSA公钥开始IV,并将其附加到加密文件中。
Nemty会将解密文件所需的信息放入文件的加密部分,然后添加扩展名“.nemty”并继续下一个文件夹或文件。
加密过程完成后,Nemty将使用“ WaitForSingleObjects”函数并等开启所有线程,它还将下载Tor浏览器并使用配置文件在loopback中打开一个连接。
最后,Nemty将硬编码“ cmd.exe”执行计算机的命令提示符,并打开勒索软件注释。
勒索软件注释的样式会在不同版本中发生不同变化:
上图的左侧是Nemty 1.4版,右侧是Nemty 1.0版。与其他勒索软件家族一样,Nemty将在最后执行以下操作:
1. 使用vssadmin删除卷影副本;
2. 使用bcedit和wbadmin禁用启动保护;
3. 使用类卷影副本删除带有WMIC的Windows目录。
所有这些调用都是使用带有“cmd.exe”的函数“ShellExecuteA”进行的,其中一个作为主程序,另一个作为参数。
互斥锁
Nemty每次感染系统时都会在系统中创建一个特定的互斥锁:
勒索软件将使用“ GetLastError”函数检查互斥锁是否存在:
如果系统先前已被Nemty感染,并且其中包含互斥锁,则勒索软件将使用“ExitThread” 函数完成执行。该调用将终止恶意软件的主线程,完成执行并将控制权返回给操作系统。
通常使用“ ExitProcess”函数来避免简单的API监控。
Nemty使用RC4对其字符串进行加密,在执行过程中,这些字符串将从base64解密和解码,然后用作勒索软件注释的一部分。
Nemty 1.0使用的RC4密钥是“f*ckav”,其他恶意软件家族也经常在其实现中使用与安全行业相关的攻击性名称或表达式。
对于解密,开发人员通过API实现了一个函数,用“malloc”保留所需的空间,然后在内存中解码字符串。作为一种保护措施,如果勒索软件无法获得大小或无法进行解码操作,则将使用“ExitThread”结束执行。
Nemty版本的演变
自发布Nemty的第一个版本以来,恶意程序开发者就开始通过添加新功能并修复其代码来进行迭代。
通过分析Nemty的早期版本,我们发现它与其他RaaS家族相比,在技术和混淆方面都更加先进,但是第一个版本仍然包含有一些错误的函数,例如对勒索软件未使用的API调用的引用。
截至目前,勒索软件的开发人员已经发布了9个不同的版本:
Nemty 1.4:变更日志
开发人员在Nemty 1.4中应用了以下更改:
1.勒索软件将在检查受害者是否具有Nemty互斥锁后收集有关逻辑单元的信息;
2.语言检查,在此版本中,Nemty将尊重并避免为独联体国家内部的受害者加密文件。
版本1.5中的更改
版本1.5添加了以下更改:
1. 受害者信息存储在注册表中;
2. 持久性;
3. 能够终止进程和服务;
4. 新的互斥锁;
5. 硬编码的图像变化;
6. C2面板可公开访问;
7. 4个新列入黑名单的国家。
注册表中存储的受害者信息
此版本Nemty的第一个主要更改是使用Windows注册表来存储有关受感染计算机的信息,使用的配置单元是带有NEMTY标识符的HKCU。
终止流程和服务的能力
添加的第二个功能是可以终止某些进程以促进系统中的文件加密,这是其他RaaS家族通常实现的功能。
为了终止这些进程,Nemty将使用 taskkill /im PROCESSNAM。
在某些终止进程中,Nemty会停止系统中某些具有相同目的的服务:
要停止Nemty服务,将使用“net stop”和服务名称。
持久性攻击能力
Nemty的第一个版本没有任何持久性攻击功能,持久性是通过一个预定的任务“create /sc onlogon”完成的。二进制文件将以硬编码名称(可以针对每个发行的二进制文件进行修改)“AdobeUpdate.exe”复制到主用户目录中,并使用“ShellExecute”启动任务。
硬编码图像更改
新更换的图片:
C2面板可公开访问
开发者决定将TOR换成一个公共C2面板,Nemty将在该面板上发送受害者的数据。
https://nemty.hk/public/gate?data=
4个新列入黑名单的国家
对于此版本,作者在黑名单中添加了四个新国家:
1.6版
1.6版的Nemty仅进行了一个更改,开发者使用了自己的AES算法实现,而不是使用CryptoAPI。
1.6.2版
此版本添加的更改为:
1. 使用了新的vssadmin程序;
2. 需要终止的新流程和服务;
3. FakeNet功能。
使用了新的Vssadmin实用程序
此版本的第一个更改是枚举逻辑单元的方式,该版本实现了“vssadmin”的使用,并将卷影的容量减少到401MB。
进行此更改的想法是保持攻击的隐蔽性,为此开发者者更改了使用带删除标志的vssadmin的方法。
需要终止的新流程和服务
开发者添加了新的终止程序,以促进文件加密:
除了新流程外,作者还提供了以下新服务:
FakeNET功能
此版本新添加一个有趣的功能,该功能可以检索受害者的公共IP地址。如果Nemty无法与外部IP地址连接,勒索软件将添加假数据以继续加密过程。
图39.如果伪造无法连接到URL以获取WAN IP,则使用伪造的IP地址和国家名称信息
2.0版
1. 在此版本中,FakeNet功能被删除,Nemty仅使用旧机制来检查受害者的区域。
2. 添加一个初始函数,它使用名为“RC4”的RC4算法,并根据硬编码字符串(可以在其他示例中更改)“sosorin:”获取密钥。此密钥用于解密部分赎金通知和某些字符串。它将开发者自己的RC4实现的用法更改为现在将RC4算法与CryptoAPI结合使用。
3. 新一代RSA密钥容器,改进了密钥生成过程。
4. 赎金说明文字包括“NEMTY REVENGE”而不是 NEMTY PROJECT”;
2.2版本
Nemty开发人员在2.2版本仅进行了两个较小的更改:
1. 互斥锁名称的更改
2. 新的赎金说明:
2.3版本
此版本有重大变化:
1. 新的互斥锁值;
2. 用于获取公共IP的服务从https://api.ipify.org更改为https://www.myexternalip.com/raw
如果查找失败,则外部地址将从NONE更改为NOT_DEFINED;
3. XP的Windows操作系统检查是在以前的版本中进行的,现在只有一项特定检查。
4. 配置字段已更改,某些字段已删除,新字段已添加。
新配置文件的示例:
{ “fileid”:”NEMTY_E1EIVPU”, “configid”:”mArJi2x3q3yFrbvL8EYkKezDeGPgWeOG”, “compid”:”{a3cande1-f85f-1341-769f-806d6172f54544}”, “ip”:”NONE”, “country”:”{ ” “errorCode” “: ” “INVALID_ADDRESS” “, ” “error” “: ” “invalid addr” “,” “version” “:” 2.3 “,” “computer_name” “:” “USERPC” “,” “username” “:” “User” “,” “os” “:” “Windows XP” “,” “pr_key” “:” BwIAAACkAABSU0EyAAgAAAEAAQDdTDOyFDw4+kjmmP2epZ/484E7PLyyZ5W1obSZSHWPirGeobWwqnoVTXLPbKVYXZ4qszCzO71hwFKcKjeYjX1dVzSlonqpWlU5d2XLtM+6oN9PTUIv2Fp8Quf8w3FU+0OmmS9A0s3n6cnvpA8oIJTZFgYurYDs78Gv3dt4dUkQioqyT/kWBOTZMBARqjiN6JwCCZDU4moRm+9IcqiXzUydebF99EoHxKcJrAekIHuHbHzZq/FcVogFSHT+4aV2/NTrESiNLeLYWv0S/GJrYs2xoLLe3NpdW7disE/PY1yn4flWGPU931AWy4/ba8+bjRXr1UPCKFk370oqWesemfK8j694toexJlRYc8s1mql2T6gq/NnqsWIxgR2B4Esn3xMzXcGZD86mA+XO/gZWgZw9kyJ4rzonWiF8OMWznKgmC0n4rxoOh70eE0m15LPkJOJwmBcVoHE189R71titoNMEYZsK8/WE0x8YJjAAdxmI4ATufV1ZUDbO7yOf5Tc5UuHTxu5iUOL0dO004Hh0t6SZIxbjUbtlHhJTiUULL+TpyG9YP1LyNMhKDE80viN9Co/a6xbs6IRhxhRRFthtHE/kRBeYfhptCblWOStLebtrNgwfe8f3AR2XdH6uESiQ8rTXG/dSgXOfmUQzuvSbxdL4aQ5docbtjQlMEl/FqYqs1pGTEB+cBATRoeY97LSCr/ZvhQPUVPyAD0NHKPOUawrGtXyiAYP3WWhKOQFM1nqQ1E9Mf38NHbaQtNJ8s/BOvMxra2Q9AaCd34IGz3uZuEZIqqXx2qqchHoHPFvopBnkCiJThmb0PoUHsA4keC7EIv3To038Wg2GYhfzy6+vwEIx01F02xhZSHjSUlSmYM2YiS4FZu2F02L49tUPIueqo3ON2ts+G/z36kkaBFocPRJjQGL2cUmG0jI0kdahL6uNYfUL3Cu261bmxewxS1eSk+cb2zC5OckuwxoT66ZddRF+Ud2K2SIPV3oMy3D/4oUtsrAEUv2inEthtwvY8FdzzsM1KlcvLszggKHRdTe4a3hf9ALU7omy3avhGaCtznhRnZvD0W1QNKyKRYBCtHc7e30EpbYtQ8kxRBrrQfySsQMDPfagETSDQMRdD0lLmNCsaJJqS9s7CnsXuTedTiOZA7Nddrc/qUceeZ7ZXMvwhpQJ6TglLJ/qCMFz6u63biGhCi38BxVRhrFzMIV4wEHlmw/7ZKiIsE49XvWzJJH3J6cgvw8XGysgS29w8McqSVaucPhw+lONwc8SLTqDwZ78ozJmr3Hq4bWFjlMSeo/H8tzr++eVMAwNiiECWo2/i2WwraBG7/jpwtedjQF576tBE6TEvriVjohjyhAYj0SprtJoqS5kX6NVM8c8GaeVKbcUp6bPqZLlGi1yfP0dhgpnR81SfDVuv/RaLPedYPfKL3hK1g6UbRJvENVgrr5tik8TLley6v73MI1pbWmEnr48Zk8Y6bb4fm0H9OvkiDYmDDTh4I49TNEyuw8eD8auJ6CsapZUTmvqMlrGI3rnjueTdjQ= “,” “drives” “:[{” “drive_type” “:” “FIXED” “,” “drive_letter” “:” “C”:”/” “,” “total_size” “:” 9GB “,” “used_size” “:” 9GB “},{” “drive_type” “:” “NETWORK” “,” “drive_letter” “:” “E”:”/” “,” “total_size” “:” 9GB “,” “used_size” “:” 9GB “\”}]}”
5. 用户代理更改为新的“Naruto Uzumake”。
6. 通过使用“ShellExecuteA”连接许多taskkill命令,此版本的Nemty终止了许多新流程。
7. 在此版本中,开发者使用带有“ShellExecuteA”函数的命令提示符添加了PowerShell执行:
8. 此版本在配置单元HKEY_CURRENT_USER的注册表项“Run”中添加了一个名为“daite drobovik”的新子项:
9. 此版本的赎金说明再次更改:
2.4版本
仅有赎金说明的变化:
2.5版本
这是Nemty的最新版本,仅发现两项更改:
1. 新的互斥锁值
2. 新的赎金说明:
jsworm勒索软件和Nemty之间的关系
安全团队跟踪了用户jsworm在地下论坛中的活动,并发现了该组织正在开发的另一个勒索软件,称为jsworm勒索软件。下面是他们在介绍Nemty的同一个论坛上发布的说明:
研究人员分析了JSWORM和Nemty的所有样本,虽然在代码库中找不到它们之间的任何关系,但是很明显这两个勒索软件属于同一个组织。
发布的一些示例包含自定义包装程序,因此对于这些情况,编译时间戳并不具有参考性。
根据研究人员找到的二进制文件的数据,我们可以看到在JSWORM 勒索软件消失之后,Nemty是如何开始活动的。这可能表明Nemty的开发者jsworm同时开发了这两种勒索软件。
在研究人员对Nemty勒索软件的分析中,他们发现了一个新的攻击趋势,即其开发者管理受害者数据的方式,即将盗窃的数据公开发布。
本文翻译自:https://www.mcafee.com/blogs/other-blogs/mcafee-labs/nemty-ransomware-learning-by-doing/如若转载,请注明原文地址: