发现恶意样本试图通过域名抢注和滥用合法工具来窃取 Amazon Elastic Compute Cloud (EC2) 工作负载的访问密钥和令牌。
最近,我们遇到了利用监控和可视化工具Weave Scope通过环境变量和 IMDS 端点从 Elastic Compute Cloud (EC2) 实例枚举 Amazon Web Services (AWS) 实例元数据服务 ( IMDS ) 的利用尝试。滥用此工具可能允许将访问密钥和令牌泄露到可能由攻击者拥有的域中,并在 AWS 拥有的域amazonaws.com上使用一种称为域名仿冒的过时技术。随后使用 masscan 和 zgrab 来查找 Weave Scope 用户界面 (UI) 实例并泄露所找到的 IP 地址和端口。我们建议用户加强、加强和定制各自的云安全策略、以开发人员为中心的工具和措施,以减轻威胁和攻击的危害。
执行流程
我们之前曾报道过出于恶意目的滥用合法工具,特别是滥用 Weave Scope。在对我们的蜜罐进行的这次尝试中,我们观察到攻击者通过暴露的 Docker REST API 服务器获得了访问权限,众所周知,TeamTNT等威胁参与者利用了该服务器。在本示例中,攻击者创建了一个容器,并将底层主机的根目录挂载到容器内的路径< /host>中。之后,在创建容器时执行了一个名为init.sh的脚本,即使没有提供任何其他命令来执行。
图 1. 为从执行的 init.sh 脚本发出的子进程设置环境变量。
HOME环境变量设置为/root ,以便从该脚本发出的其他进程将/root目录视为HOME变量。没有记录命令历史,后来环境变量本身被删除。PATH变量还包含路径< /root/.local/bin > 。设置了特定于语言本地化的参数,以强制语言在整个脚本执行过程中保持统一。
之后,使用 Alpine Package Keeper 或 apk 安装使攻击者的脚本能够执行的某些工具,以在基于 alpine 的容器映像的基础映像中安装wget、curl、jq、masscan、libpcap-dev和docker 。声明了以下两个变量:
SCOPE_SH,一个安装 Weave Scope 的 Base64 编码字符串
WS_TOKEN,一个秘密访问令牌,可用于将host包含在队列中
脚本函数
在分析脚本时,我们观察并分解了为攻击中的各种实现设计的四个函数:main、wssetup、checkkey 和 getrange。
main
主函数依次调用其他三个函数。最初,nohup执行 Docker 守护程序 (dockerd )以保持进程运行,即使在退出 shell 后也是如此。流 STDOUT 和 STDERR 通过管道传送到/dev/null以在执行时在屏幕上不显示任何输出。
图 2. 函数 main
wssetup
此函数使用实用程序base64解码变量 SCOPE_SH 的内容。wssetup 还会静默执行命令行scope launch –service-token=$WS_TOKEN以使主机成为攻击者 Weave Scope 舰队的一部分。
早些时候,我们观察到对 Docker REST API 的利用,其中范围令牌是从攻击者的基础设施中获取的。但是,在这种情况下,令牌本身在脚本中是硬编码的。
图 3. 函数 wssetup
checkkey
此函数检查文件“ /host/root/.aws/credentials ”。有趣的是,容器中的路径/host映射回主机上的根目录“/”。如果文件存在,则通过curl请求将其发送到攻击者的端点。
图 4. 函数checkkey
如果函数在本地文件系统和远程文件共享中找不到凭据(Mitre ID T1552.001 Unsecured Credentials: Credentials In Files),则使用curl或wget查询 IMDS 端点是否可用。通过一系列grep和sed操作处理输出,并将输出累积在隐藏文件“ .iam ”和“.iam”中。ec2 ”(Mitre ID T1564.001隐藏工件:隐藏文件和目录)。
一旦收集了凭据,它们就会被合并到一个名为“ .aws ”的隐藏文件中,由两个新行分隔,同时删除原始文件。随后通过“AWS”或“EC2”搜索各个进程的环境变量,并附加到文件“. aws ”添加了两个新行。
一旦 < $HOME/…aws > 中的文件准备好收集所有凭据,该文件将通过curl泄露到域“amazon2aws.com” ,然后被删除。
图 5. 在每个进程的环境变量中搜索提及 AWS 或 EC2
图 6. 泄露收集的凭据
getrange 和 rangescan
该函数接受一个参数RANGE,稍后将其传递给另一个名为rangescan的函数。第二个函数使用 zgrab 扫描RANGE中的 IP 地址,以查找端口 80、443 和 4040 上可访问的 Weave Scope UI,这是 Weave Scope UI 使用的默认端口。
图 7. 函数 getrange 和 rangescan
我们的观察表明没有提供给getrange 的值。**相反,它从ipranges.txt中获取 IP 地址,其中包含要扫描的 Weave Scope UI 实例的无类域间路由 (CIDR)。masscan和zgrab等网络枚举工具用于查找 IP 地址和 UI 实例。当找到 Weave Scope UI 的可访问实例时,使用curl将相应的 IP 地址和端口泄露到攻击者控制的服务器amazon2aws.com。
域名转移
在分析攻击者控制的服务器时,我们遇到了Amazon.com, Inc. 的研发子公司 Amazon Technologies, Inc. 对注册人 Nice IT Services Group Inc./Customer Domain Admin 提出的投诉,即前所有者恶意仿冒域名。统一域名争议解决政策(UDRP) 是解决注册人之间域名争议的法律框架。审查行政小组的决定,我们注意到该域名后来于 2022 年 6 月在“调查结果”部分转移给了 Amazon Technologies, Inc.:
图 8. 结果部分中的决定
通过 VirusTotal 检查用于解析域的 IP 地址,我们观察到 amazon2aws[.]com 和 teamtnt[.]red 的记录历史可能与威胁参与者组 TeamTNT 有关。
图 9. 两个域解析到的公共 IP 地址
结论
尽管根据 Shodan 扫描结果减少了 Docker REST API 的暴露,但重要的是要知道上述技术和过程可以与目标系统中的其他已知或未知漏洞相结合。攻击者不断地在他们的武器库上工作,测试和构建不同的工具,经常滥用合法的工具和平台。我们还观察到查询 AWS IMDS 的尝试。
图 10. 暴露的 Docker REST API 上的 Shodan 扫描结果
本文为译文,原文链接:https://www.trendmicro.com/en_us/research/22/j/threat-actors-target-aws-ec2-workloads-to-steal-credentials.html_