关键要点
-
Trend团队发现了一些利用 Amazon S3(简单存储服务)传输加速功能的 Golang 勒索软件样本,用于窃取受害者的文件并上传至攻击者控制的 S3 存储桶。
-
这些样本中硬编码的 Amazon Web Services (AWS) 凭证被用于追踪与恶意活动关联的 AWS 账户 ID,从而提供了有价值的威胁指示(IOCs)。
-
攻击者试图将 Golang 勒索软件伪装成臭名昭著的 LockBit 勒索软件,显然是想借助其恶名来进一步施压受害者。
-
Trend团队已将相关发现共享给 AWS 安全团队。需要注意的是,他们的发现并不涉及 AWS 服务的漏洞。经与 AWS 核实,确认该行为违反了 AWS 可接受使用政策。报告的 AWS 访问密钥和账户现已被暂停。
引言
从信息窃取工具的开发到数据窃取,云服务提供商正越来越多地被威胁行为者利用于恶意活动。在本次案例中,Trend团队分析的勒索软件样本包含硬编码的 AWS 凭证,但这是特定于此单一威胁行为者的情况。通常,勒索软件开发者会利用其他在线服务来实现其战术。为此,他们研究了一些使用 Go 语言(Golang)编写的勒索软件样本,目标为 Windows 和 MacOS 环境。大部分样本包含硬编码的 AWS 凭证,被窃数据上传至攻击者控制的 Amazon S3 存储桶。
在攻击的尾声,受害设备的桌面壁纸会被更换为提到 LockBit 的图片。这可能会让受害者误以为此次事件是由 LockBit 引起的,尤其是因为该勒索软件家族近年来活跃,且在今年上半年文件检测率最高。然而,实际情况并非如此,攻击者只是利用 LockBit 的恶名来进一步施压受害者。
他们推测该勒索软件的作者使用了自己的 AWS 账户或是一个被攻陷的账户。在分析中,Trend团队发现了可能出自同一作者的三十多个样本,表明该勒索软件在 AWS 暂停访问密钥和账户之前已在积极开发和测试。此外,通过样本中的硬编码 AWS 访问密钥 ID,他们可以定位到相关联的 AWS 账户 ID。这一发现提供了一个新的视角,即在跨账户活动中将恶意或被攻陷的 AWS 账户 ID 视作潜在的 IOC(威胁指示)。
本文将描述这些样本的功能特性以及它们如何在攻击中利用 Amazon S3 的功能。
技术分析
Golang 为开发人员提供了一个可以编译为多平台二进制文件的单一代码库,无需额外依赖项,从而实现跨平台兼容且无依赖的特性。威胁行为者利用这些优势,通过 Golang 创建恶意文件,例如 Agenda 勒索软件以及 Earth Lusca 使用的最新发现的 KTLVdoor 后门。
在Trend团队分析的勒索软件样本中,大多数样本都包含硬编码的 AWS 访问密钥 ID 和密钥。在深入研究这些样本的工作机制时,他们发现其利用了 AWS S3 的一个功能,即 S3 Transfer Acceleration (S3TA)。
他们的分析主要基于以下几个样本:
-
14fe0071e76b23673569115042a961136ef057848ad44cf35d9f2ca86bd90d31
-
0c54e79e8317e73714f6e88df01bda2c569ec84893a7a33bb6e8e4cf96980430
当勒索软件在受感染的机器上执行时,首先会通过以下步骤进行初始化:
-
获取主机的通用唯一识别码(UUID)
-
导入硬编码的公钥
公钥使用隐私增强邮件(PEM)格式进行编码。
解码公钥的值后,揭示出其使用的是RSA加密算法,并且模数大小为2048位。
3. 生成一个随机主密钥,并使用先前导入的RSA公钥对其进行加密。(这意味着只有拥有私钥的攻击者才能解密该主密钥。)
4. 将加密后的主密钥写入到说明文件(README.txt)中。
5. 使用AWS SDK for Go v2库的StaticCredentialsProvider来加载静态凭证。这些静态凭证包括硬编码的AccessKeyID、SecretAccessKey和AWS_REGION。
初始化完成后,勒索软件通过调用 filepath.Walk
函数开始枚举在 /
(macOS 版本的根目录)中的所有文件。对于每个被枚举的文件,都会检查其是否位于排除文件夹中。如果文件在排除文件夹中,则该文件不会被加密。
勒索软件包含一份文件扩展名列表(通常是文档、照片和数据文件),这些文件将会被加密。
README.txt 文件名被排除在加密范围之外。
数据泄露
基于获取的主机UUID,勒索软件样本使用硬编码的凭证对在攻击者控制的AWS账户上创建一个Amazon S3存储桶。
一旦存储桶被创建,勒索软件通过修改配置启用 S3TA(Amazon S3 Transfer Acceleration)功能。
最后的步骤是对文件从头到尾进行加密。加密算法采用 AES-CTR 模式,密码为文件名的 MD5 哈希值与主密钥拼接的结果。
例如,勒索软件生成一个随机的16字节主密钥:20 60 A3 EA 54 84 C9 27 57 76 1E CC 1F FC 12。加密后的文件名为 text.txt。
因此,拼接后的字节序列为:74 65 78 74 2E 74 78 74 63 20 60 A3 EA 54 84 C9 27 57 76 1E CC 1F FC 12。其 MD5 哈希值为 23 a3 ec c5 58 2d 97 41 07 3c 3b dc 31 7d 49 30。
文件随后从受害者的机器上传到由攻击者控制的 AWS 账户。
S3TA(Amazon S3 Transfer Acceleration)功能使用户能够在长距离内实现更快的数据传输速度。它利用了 Amazon CloudFront 全球分布的边缘位置。要使用此功能,必须在存储桶上启用。存储桶名称应符合域名系统(DNS)的规范,且不能包含句号。启用 S3TA 的 S3 存储桶可以通过以下端点访问,具体取决于 AWS 环境的类型:
-
bucketname[.]s3-accelerate.amazonaws.com
-
bucketname[.]s3-accelerate.dualstack.amazonaws.com
每个通过先前文件扩展名检查且小于 100 MiB(Mebibyte)的文件都会通过调用 Uploader.Upload 函数上传到 AWS。这是因为上传大文件会增加攻击者的存储成本,因此他们选择上传较小的文件以节省 AWS 空间和资金。
最后一步是对文件进行端到端的加密。加密算法采用 AES-CTR,密码是文件名与主密钥(master key)拼接后生成的 MD5 哈希值。
勒索软件生成一个随机的 16 字节主密钥(例如:63 20 60 A3 EA 54 84 C9 27 57 76 1E CC 1F FC 12),加密文件的名称为 text.txt。
相应地,拼接的字节序列为 74 65 78 74 2E 74 78 74 63 20 60 A3 EA 54 84 C9 27 57 76 1E CC 1F FC 12,其 MD5 哈希值为 23 a3 ec c5 58 2d 97 41 07 3c 3b dc 31 7d 49 30。这如图所示(通过 CyberChef 生成,此处仅用于可视化目的)。
生成的哈希值作为 crypto.AES.NewCipher
函数的 AES 密钥参数。初始化向量(IV)是一个随机生成的 16 字节值,并传递给 crypto.cipher.NewCTR
函数。
加密完成后,文件将被重命名为以下格式:<原文件名>.<初始化向量>.abcd
。例如,文件 text.txt
被重命名为 text.txt.e5c331611dd7462f42a5e9776d2281d3.abcd
。
他们在调试器中运行了勒索软件样本并转储了主密钥。随后,他们验证了在选择合适的加密算法并传入正确参数的情况下,可以正确解密之前加密的文件,如下图所示(通过 CyberChef 生成,仅用于可视化展示)。
README.txt
文件包含经过 Base64 编码的内容。解码后可以看到,文件内容包含使用硬编码的公钥作为参数,并通过 crypto.rsa.EncryptPKCS1v15
加密的主密钥,随后再次进行 Base64 编码。在此编码数据之后,是主机名、操作系统版本以及感染机器的唯一标识符。要解密该主密钥,则需要勒索软件开发者的私钥,但他们并不掌握该私钥。
在处理完所有文件后,勒索软件会更改设备的壁纸。他们观察到使用了两种不同的壁纸,这些壁纸要么是从 LockBit 攻击中窃取的,要么是从某安全博客中提到的勒索软件家族中复制的。然而,需要注意的是,2.0 并不是 LockBit 的最新版本。此外,今年早些时候,勒索软件操作的关键人物已被逮捕。
在 macOS 系统上,勒索软件使用 osascript
命令更改壁纸,具体命令如下:
tell application "System Events" to tell every desktop to set picture to "%s"
在 Windows 系统上,勒索软件调用 SystemParametersInfoW
函数,将 uiAction
参数设置为 SPI_SETDESKWALLPAPER
来更改壁纸。
在某些 Windows 样本中,还可以找到用于删除备份(影子副本)的代码。有趣的是,勒索软件开发者可能在未理解的情况下,从一个勒索软件模拟项目中直接复制了 shadowcopy.go
文件,并且将参数 /for
保持不变。
结论
攻击者越来越多地利用云服务及其功能来推进恶意活动。在本文中,Trend团队分析了一个利用Amazon S3的传输加速功能的Golang勒索软件,该功能被用来将受害者的文件高效上传至攻击者控制的S3存储桶。这种高级功能使攻击者能够高效地提取数据并利用云服务提供商的优势来隐藏恶意行为。
此外,像AWS账号ID这样与恶意活动相关的云账户标识符可以作为重要的入侵指示器(IOC)。通过跟踪这些标识符,防御方可以更好地识别和缓解云环境中的威胁,强调了对云资源进行严密监控的必要性。
攻击者也可能会将他们的勒索软件伪装成其他更为知名的勒索软件变种。这种伪装意图明显:高知名度勒索软件带来的恐惧心理更容易促使受害者遵循攻击者的要求。
为进一步提升安全性,组织还可以采用如Vision One这样的安全解决方案,能够在系统的各个层面上及早检测和阻止威胁。
AWS 安全反馈
Trend团队就此次事件联系了 AWS,并收到以下回复:
AWS 可以确认其服务按预期运行。识别出的活动违反了 AWS 可接受使用政策,相关的 AWS 访问密钥和账户已被暂停。
勒索软件并不特定于任何特定的计算环境。然而,AWS 为客户提供了增强的可见性和控制能力,以帮助客户管理与恶意软件相关的安全状况。
Trend团队建议怀疑或发现 AWS 资源被用于可疑活动的客户填写滥用报告表或联系 trustandsafety@support.aws.com。
Trend团队感谢 Trend Micro 与 AWS 安全团队的合作。
消息来源:
https://www.trendmicro.com/en_us/research/24/j/fake-lockbit-real-damage-ransomware-samples-abuse-aws-s3-to-stea.html
https://www.trendmicro.com/en_us/research/24/j/fake-lockbit-real-damage-ransomware-samples-abuse-aws-s3-to-stea.html