最近出现了一种用 Go 语言编写的新型勒索软件,主要亚洲和非洲的医疗保健和教育企业。该勒索软件称为 Agenda,对每个受害者进行自定义攻击。当前用 Go 语言(又名 Golang)编写的恶意软件变得越来越普遍,这主要是因为 Go 静态编译必要的库,使安全分析变得更加困难。
根据名为“Qilin”的用户(似乎与勒索软件分销商有关联)的暗网帖子和勒索记录,勒索软件被称为“Agenda”。
Agenda 可以在安全模式下重新启动系统,并尝试阻止许多特定于服务器的进程和服务,并且可以运行多种模式。我们收集的勒索软件示例是为每个受害者定制的,它们包括唯一的公司 ID 和泄露的帐户详细信息。
所有收集的示例都是用 Go 编写的 64 位 Windows PE(便携式可执行文件)文件,它们针对的是基于 Windows 的系统。传播恶意软件的组织针对的是印度尼西亚、沙特阿拉伯、南非和泰国的医疗保健和教育机构。每个勒索软件示例都是为目标受害者定制的。我们的调查表明,示例泄露了帐户、客户密码和用作加密文件扩展名的唯一公司 ID。
我们认为,Qilin(或 Agenda 勒索软件组织)的附属机构可以为每个受害者定制可配置的二进制有效载荷,包括公司ID、RSA密钥等细节,以及数据加密前要阻止的进程和服务。另外,每家公司要求的赎金金额从5万美元到80万美元不等。
Qilin勒索赎金示例
Qilin勒索通知示例
我们注意到 Agenda 与 Black Basta、Black Matter 和 REvil(又名 Sodinokibi)勒索软件之间存在一些相似之处。
在付费网站和Tor网站上用户验证的实施方面,Agenda与Black Basta和Black Matter非常相似。与此同时,Agenda与Black Basta和REvil共享了相同的函数,可以使用此命令更改Windows密码并在安全模式下重启:
C:\windows\system32\bcdedit.exe /set safeboot{current} network
在调查一起涉及该勒索软件的示例时,我们发现其背后的攻击者使用面向公众的Citrix服务器作为入口点。我们认为攻击者使用有效帐户访问此服务器,然后进入受害者的网络。这是意料之中的,因为攻击者使用有效和特权帐户配置了勒索软件。
攻击者使用泄露的帐户在 Active Directory 上使用 RDP,然后释放用于扫描网络的扫描工具 Nmap.exe 和 Nping.exe。接下来,计划任务被组策略域设备推送。
组策略推送的定时任务
在计算机上创建的计划任务
我们观察到访问 Citrix 服务器和勒索软件感染之间只有很短的时间:不到两天。攻击者似乎在第一天就扫描了网络,然后创建了一个组策略对象 (GPO),并将勒索软件部署在受害者的设备上。
Agenda 勒索软件的攻击链
Agenda 勒索软件是一个用 Go 编写的 64 位 Windows PE 文件。Go 程序是跨平台且完全独立的,这意味着即使系统上没有安装 Go 解释器,它们也能正常执行。这是可能的,因为 Go 静态编译必要的库(包)。
在执行时,该勒索软件接受定义恶意软件流程和功能的各种命令行参数,如下表所示。
-alter {int}:定义此子进程的端口号;
-encryption {value}:允许将嵌入加密器配置重新定义为自定义选项;
-ips {IP Address} :允许提供 IP 地址;
-min-size {value}:定义要加密的最小文件大小(例如,1 KB、1 MB、1 GB、666 KB);
-no-proc:定义不会被阻止的进程;
-no-services:定义不会被阻止的服务;
-password {string}:定义登录密码;
-path {directory}:定义解析目录的路径,如果使用此标志并将其置空,则将扫描所有目录;
-safe:在安全模式下启动;
-stat:使恶意软件打印其配置(要阻止的进程和服务、加密等);
Agenda构建一个运行时配置来定义它的行为,包括它的公共RSA密钥、加密条件、要终止的进程和服务列表、加密扩展、登录凭证和赎金通知。Agenda 的运行时配置组件表如下:
public_rsa_pem RSA:公钥;
directory_black_list:不允许加密的目录;
file_black_list:不允许加密的文件名;
file_pattern_black_list:不允许加密的文件扩展名;
process_black_list:要终止的进程;
win_services_black_list:终止服务;
company_id:加密扩展;
accounts :登录凭据;
note :赎金通知。
作为其初始例程的一部分,Agenda 通过检查此注册表值数据中的字符串 safeboot 来确定被攻击的设备是否在安全模式下运行:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control SystemStartOptions
如果它检测到设备正在安全模式下运行,则终止执行。
然后,勒索软件通过执行 vssadmin.exe delete shadows /all /quiet 删除卷影副本,并终止运行时配置中指出的特定进程和服务,其中一些是与防病毒相关的进程和服务。
Agenda 终止的一些与防病毒相关的进程和服务
在其初始例程之后,Agenda 继续创建 runonce 自动启动条目 *aster 指向 enc.exe,它是 Public 文件夹下自身的一个已删除副本:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce*aster = %Public%\enc.exe
Agenda 还在加密过程中部署了一种检测规避技术:它会更改默认用户的密码并使用新的登录凭据启用自动登录。可以使用 -safe 命令行参数启用此功能。与 REvil 类似,Agenda 以安全模式重新启动受害者的设备,然后在重新启动时继续执行加密程序。
首先,Agenda 会列出在设备上找到的所有本地用户,然后检查哪一个被设置为默认用户。
Agenda 用于从本地用户中确定默认用户的函数
找到默认用户后,Agenda 将用户的密码更改为 Y25VsIgRDr。
Agenda 用于更改默认用户密码的函数
然后它继续配置 Winlogon 注册表项,将数据设置为以下每个值:
Agenda 配置的 Winlogon 注册表项
更改默认用户密码并启用自动登录后,Agenda 通过以下命令以安全模式重新启动受害者的设备:
C:\windows\system32\bcdedit.exe /set safeboot{current} network
加密后,勒索软件还会使用以下命令以正常模式重启计算机:
C:\Windows\System32\bcdedit.exe /set safeboot network bcdedit /deletevalue {default} safeboot
Agenda 的另一个函数是它能够滥用本地帐户凭据来执行勒索软件二进制文件,在其运行时配置中使用嵌入式登录凭据。
Agenda的嵌入式本地帐户凭据
Agenda通过在运行时配置中解析帐户开始用户模拟,然后将它们划分为用户名、域和密码。它将使用这些数据尝试通过API LogonUserW将用户登录到本地计算机上。
Agenda 用于解析运行时配置中的 accounts 字段的函数
使用已解析帐户执行登录的Agenda
然后,Agenda 继续生成一个随机端口号,它将通过 API CreateProcessAsUserW 与命令行参数 -alter 一起用于执行勒索软件二进制文件。
使用 -alter 参数创建新进程的Agenda
Agenda还与整个网络及其共享驱动程序的攻击有关。它不仅仅是关于在一个工作站上加密数据。
勒索软件会添加一个注册表,然后重新启动 LanmanWorkstation 服务。添加新注册表后,它使用启用映射驱动器驱动程序中的键 [EnableLinkedConnections = 1],然后重新启动 LanmanWorkstation 服务。这将允许 Agenda 在 cmd 等提升程序中列出网络驱动器。
Agenda将EnableLinkedConnection的注册表值更改为1
Agenda重启 LanmanWorkstation 服务
Agenda使用AES-256加密文件,使用RSA-2048加密生成的密钥。为此,它首先使用函数generateKye生成用于加密的密钥和初始化向量(IV),然后使用API rand_read()。
Agenda用于生成随机密钥的函数
使用这个随机生成的密钥,Agenda 继续使用 AES-256 来加密目标文件。最后,它通过运行时配置中的嵌入式公钥使用 RSA-2048 对密钥进行加密。
成功加密后,Agenda通过附加运行时配置中指定的公司ID来重命名加密的文件。然后它会在每个加密的目录中释放赎金通知{company_id}-RECOVER-README.txt。
Agenda 的赎金通知
Agenda 将 pwndll.dll(检测为 Trojan.Win64.AGENDA.SVT)释放在 Public 文件夹中。文件 pwndll.dll 是用 C 语言而不是 Go编写的合法 DLL WICloader.dll 的打了补丁 DLL。Agenda 将此 DLL 注入 svchost.exe 中,以允许连续执行勒索软件二进制文件。
将 pwndll.dll 注入 svchost.exe 的Agenda
使用 pwndll.dll 执行勒索软件示例的Agenda
勒索软件不断发展,开发出更复杂的方法和技术来发起攻击。如上所述,新的有针对性的勒索软件Agenda是如何用 Go 语言编写的,这使得检测和分析变得更加困难。
这种勒索软件通过利用设备的“安全模式”功能来进行加密程序而不被发现。勒索软件还利用本地帐户作为被欺骗的用户登录,并执行勒索软件二进制文件,如果登录尝试成功,则进一步加密其他设备。它还终止大量进程和服务,并通过将 DLL 注入 svchost.exe 来确保持久性。
用户和组织都可以通过遵循以下安全最佳实践来降低被 Agenda 等勒索软件感染的风险:
1.启用多因素身份验证 (MFA) ,以防止攻击者在网络内执行横向移动。
2.备份重要文件时,请遵守 3-2-1 规则。以两种不同的文件格式创建三个备份副本,其中一个副本存储在单独的位置。
3.定期修补和更新系统。让操作系统和应用程序保持最新非常重要,以防止恶意行为者利用任何软件漏洞。
4.使用专业安全解决方案,它具有多层保护和行为检测功能,有助于在勒索软件造成任何攻击之前阻止可疑行为和工具。
参考及来源:https://www.trendmicro.com/en_us/research/22/h/new-golang-ransomware-agenda-customizes-attacks.html