0xbitx/DEDSEC_CHARINA
GitHub: 0xbitx/DEDSEC_CHARINA
一个基于 HTTPS 和 Cloudflare 隧道的零基础设施命令与控制(C2)框架,专为红队初始访问操作设计,支持单文件部署和多客户端管理。
Stars: 0 | Forks: 0
CHARINA
基于 HTTPS 的命令与控制(C2)框架,专为初始访问操作设计,零基础设施、隧道路由、单文件部署。
## 描述 **零基础设施。** 无需端口转发、无需配置防火墙规则、无需设置 DNS、无需配置 VPS。在任何位于 NAT 后的机器上启动服务器,Cloudflare Argo 隧道会立即为你提供一个公共的 HTTPS endpoint。implant 通过 443 端口进行**出站**连接——这与每个网页浏览器使用的路径相同。部署二进制文件,你就连上了。没有基础设施的烦恼。 单个完全静态的二进制 implant(约 2MB)可以在任何 Linux 发行版上运行,实现**零依赖**——不需要任何库、解释器或 runtime 环境要求。将它部署在 Ubuntu、Kali、Alpine 或精简版的 container 上,它都能直接运行。 通信通过标准 HTTPS 经由 **Cloudflare Argo 隧道**传输,将操作者的真实 IP 隐藏在 Cloudflare 的基础设施之后。Implant 以可配置的随机时间间隔进行轮询,融入正常的 Web 流量中。 所有命令都通过 **SHA256-CTR 流密码 + Base64 编码**进行加密,确保线缆上不会以明文形式传输任何内容。 **Dead-drop relay** 机制将 implant 与任何硬编码的服务器地址解耦。隧道 URL 存储在一个看似无害的网页中,并在每次服务器重启时发生改变——implant 通过轮询 relay 自动跟随。无需重新编译,无需重新部署。如果 relay 处于空闲状态(没有活跃的隧道),implant 会静默等待,直到操作者上线。 **按需编译**会在编译时将你的 relay 配置直接构建进 implant 中。服务器使用完整的静态链接运行 g++,然后应用 UPX 压缩,剥离可识别的加壳字符串,并破坏非关键的 ELF header 字节,从而生成一个不会触发基本 AV 启发式检测的强化二进制文件。 **Beacon 模式**允许你选择 implant 轮询的方式: - **Normal** —— 固定的 1 秒间隔,快速且可预测 - **Beacon** —— 在可配置的最小到最大区间内进行随机延迟,使流量模式变得不可预测,更难通过时间分析被检测到 内置的**侦察模块**涵盖:WiFi 密码(SSID + PSK)、Discord token(桌面端 + 浏览器 leveldb)、所有用户的 SSH 密钥、加密货币钱包发现(Bitcoin、Ethereum、Monero、Exodus、Electrum、MetaMask、Phantom + 另外 5 种)、云凭证收集(AWS、GCP、Azure、Docker、GitHub、Kubernetes)、shell 历史记录收集、进程枚举、网络连接分析、环境变量提取、屏幕截图、摄像头捕获和麦克风录音。所有输出都会自动保存到井然有序的 `downloads/` 目录中,按 hostname 和 machine ID 结构化组织,并智能跳过空结果。 **多客户端仪表盘**通过实时表格显示已连接的目标,包含在线/离线状态、最后在线时间戳以及一键式交互 shell 访问。支持直接上传和下载文件、远程执行脚本,并通过内置的 `cd`/`pwd` 跟踪浏览目标文件系统。 ## 架构 ``` sequenceDiagram participant Op as Operator (C2 Server) participant CF as Cloudflare Tunnel participant RL as Dead-drop Relay participant IM as Implant (Target) Op->>CF: Start tunnel CF-->>Op: Public URL assigned Op->>RL: Write tunnel URL to relay IM->>RL: Poll relay for C2 URL RL-->>IM: Tunnel URL IM->>CF: Connect via HTTPS IM->>CF: POST /register (encrypted host info) CF->>Op: Forward registration loop Every N seconds IM->>CF: GET /cmd (poll for command) CF->>Op: Forward request alt command pending Op-->>CF: Encrypted command CF-->>IM: Command IM->>IM: Decrypt + execute IM->>CF: POST /output (encrypted result) CF->>Op: Forward output else no command Op-->>CF: 204 No Content CF-->>IM: (empty) end end Op->>CF: Stop tunnel Op->>RL: Reset relay to idle IM->>RL: Poll relay RL-->>IM: idle IM->>IM: Sleep + retry ``` ### 流程摘要 1. **服务器启动** —— Cloudflare 隧道生成,分配临时的公共 URL,relay 页面更新为新的 C2 地址。 2. **Implant 引导** —— 读取编译时嵌入的 relay 指针,向 relay 轮询当前的隧道 URL。如果 relay 处于空闲状态(没有运行服务器),它会进入睡眠并重试。 3. **连接** —— 一旦 relay 返回 URL,implant 就会通过 Cloudflare 隧道建立出站 HTTPS 连接。 4. **签到** —— implant 发送 AES 加密的主机信息(hostname、OS、IP、用户、硬件规格)以在服务器上注册。 5. **命令循环** —— implant 按其配置的间隔轮询 `GET /cmd`。服务器响应加密的命令(shell 执行或内置模块),或在空闲时响应空的 204 No Content。 6. **响应** —— 输出使用相同的 SHA256-CTR 流密码加密,进行 Base64 编码,并通过 `POST` 请求发送回 `/output`。较大的输出(屏幕截图、摄像头捕获、录音)以 Base64 内联形式发送。 7. **多客户端** —— 服务器通过多线程并发处理多个 implant。每个客户端都通过 machine ID 进行跟踪,并具有实时的在线/离线状态。 8. **服务器停止** —— 隧道关闭,relay 重置为空闲状态。Implant 在下次轮询时检测到死信 relay,并进入静默重试模式。 ### 隧道与 Relay 的工作原理 C2 服务器通过 **Cloudflare Argo 隧道**暴露自己,该隧道提供一个临时的公共 URL,例如 `https://winter-moon-guitar.trycloudflare.com`。这些 URL 是临时的——每次启动隧道时它们都会改变。 服务器没有将 URL 硬编码到 implant 中(这样在每次重启时都会失效),而是将当前的隧道地址存储在一个 **dead-drop relay** 页面中。Implant 在每个轮询周期读取此页面: ``` Server start → Tunnel active → Relay updated with new URL Implant polls relay → Gets new URL → Connects automatically Server stops → Tunnel closed → Relay set to "idle" Implant polls relay → Sees "idle" → Waits silently Server restarts → New tunnel URL → Relay updated again Implant polls relay → Gets new URL → Reconnects to new address ``` 这意味着你可以随心所欲地停止和重启服务器——implant 会跟随 relay,永远不需要重新编译或重新部署。Cloudflare 子域在每次重启时都会改变,这使得追踪和接管变得极其困难。 ## 功能 | 功能 | 描述 | |---|---| | **零依赖** | 单个静态二进制文件,可在任何 Linux 发行版上运行 | | **零基础设施** | 无需端口转发,无需 VPS——隧道处理公共访问 | | **Dead-drop relay** | 隧道 URL 隐藏在无害的网页之后 | | **按需隧道** | Cloudflare 隧道仅在操作者活跃时启动 | | **命令混淆** | SHA256-CTR 流密码 + Base64 | | **Beacon 随机化** | Normal(固定 1 秒)或 Beacon(最小到最大之间的随机延迟) | | **多客户端** | 多线程服务器跟踪多个目标 | | **自动重连** | 客户端通过随机延迟无限期重试 | | **静态编译** | UPX 压缩 + 签名剥离 + ELF 破坏 | ## 侦察命令 | 命令 | 描述 | |---|---| | `dump_wifi` | 保存的 WiFi 密码 (SSID + PSK) | | `dump_token` | 来自 Discord + 浏览器 leveldb 的 Discord token | | `dump_history` | 所有 /home 用户 + /root 的 shell 历史记录 | | `dump_ssh` | SSH 密钥、authorized_keys、known_hosts、配置(所有用户) | | `dump_crypto` | 加密货币钱包文件 + 浏览器扩展 | | `dump_clipboard` | 当前剪贴板内容 | | `dump_env` | 所有进程的环境变量 | | `dump_cloud` | AWS、GCP、Azure、Docker、GitHub、Kubernetes 凭证 | | `dump_ssh_agent` | 所有用户的 SSH agent socket 和密钥 | | `dump_processes` | 包含 PID、用户、命令的进程列表 | | `dump_netstat` | 网络连接、监听端口、ARP、路由 | | `dump_mounts` | 挂载的文件系统 | | `screenshot` | 桌面屏幕截图(自动检测 DISPLAY) | | `dump_camera