had-nu/Go-ServerC2-Payload

GitHub: had-nu/Go-ServerC2-Payload

一个用于教育目的的 Go 语言 HTTP C2 框架,演示 Team Server 与 Beacon 通信架构及 Linux 规避技术。

Stars: 2 | Forks: 0

# Go 命令控制 (C2) 服务器与 Payload [![Go](https://img.shields.io/badge/Go-1.24+-00ADD8.svg?style=flat-square&logo=go)](https://golang.org/) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg?style=flat-square)](https://opensource.org/licenses/Apache-2.0) 一个使用 Go 语言编写的命令控制 (C2) 套件。本项目实现了一个现代 HTTP Beacon 架构,旨在用于教育目的并演示针对 Linux 的规避技术。它由一个中央 *Team Server* 和一个 HTTP 轮询 *Beacon* payload 组成。 ## 描述 本仓库包含两个主要组件: - **`main/server/server.go` (Team Server)**:一个作为中央枢纽的 HTTP REST 服务器。它在端口 `:8080` 上监听 Beacon 签到,追踪活跃的 agent,并提供一个基于 `readline` 的交互式 CLI 供操作员下达命令。 - **`main/beacon/payload.go` (Beacon)**:一个隐蔽的 Linux 客户端,用于连接到 Team Server。它通过不可预测的 Sleep 和 Jitter 周期定期向服务器轮询任务,通过 `/bin/bash` 执行命令,并将输出返回给服务器。 ### 关键特性 * **HTTP Beaconing:** 通信通过标准 HTTP `GET`/`POST` 请求进行,模拟正常的 Web 流量,而不是直接使用原始 TCP socket。 * **Sleep & Jitter:** Beacon 不使用静态休眠间隔。它为每次签到计算一个动态休眠时间(基准 10s + 20% Jitter),以此破坏网络模式识别特征。 * **进程伪装 (`prctl`):** 执行后,payload 会激进地将其自身的进程名更改为 `[kworker/u4:2]`,使其能够混入 Linux 进程列表,伪装成合法的内核工作线程。 * **操作员控制台:** Team Server 提供了一个交互式 shell,用于查看存活/死亡的 agent,并直接进入会话以排队任务。 ## 道德黑客免责声明 本项目*仅用于教育目的和道德安全研究*。它展示了 C2 功能和 Linux 规避机制。它只能在你拥有明确测试许可的受控环境中,或者在你自己的系统或网络上使用。严禁并在法律上禁止未经授权使用此代码损害系统、网络或个人。 请参阅行为准则文件。 **请负责任且合乎道德地使用。** ## 前置条件 - 已安装 Go 1.24 或更高版本(使用 `go version` 检查)。 - 一个 Linux 环境(已在 Ubuntu/Debian 上测试)。 ## 用法 1. 克隆仓库: git clone https://github.com/had-nu/Go-ServerC2-Payload.git cd Go-ServerC2-Payload 2. 启动 Team Server: go run main/server/server.go *服务器将在端口 `8080` 上启动并提供一个 `c2>` 提示符。* 3. 编译 Beacon Payload: 为了充分利用规避技术,构建 payload 时应剥离所有符号和 DWARF 调试信息。 go build -ldflags="-s -w" -o beacon main/beacon/payload.go 4. 在目标机器上运行 Beacon: ./beacon & ### 与 Agent 交互 Beacon 运行后,它将与 Team Server 进行签到。 ``` [*] Starting HTTP Team Server on port :8080 c2> [+] New Agent Registered: e51ec4c6-a873 (ubuntu-target) from 127.0.0.1 ``` 使用 `agents` 命令验证它们的状态,并使用 `interact ` 下达 bash 命令: ``` c2> agents --- Active Agents --- [ALIVE] ID: e51ec4c6-a873 | Host: ubuntu-target | IP: 127.0.0.1 | Last Seen: 2s c2> interact e51ec4c6-a873 e51ec4c6 c2> id Task 482910 queued for e51ec4c6-a873 [*] Result from e51ec4c6-a873 (Task 482910): uid=1000(user) gid=1000(user) groups=1000(user),27(sudo) ``` 输入 `back` 返回主菜单,或输入 `exit` 关闭 Team Server。 ## 限制与未来改进 虽然在教育用途上是功能性的,但本项目在现实场景中存在几个明显的限制: 1. **平台依赖性** 当前的 payload 是专门为 Linux 量身定制的。其命令执行 (`/bin/bash`) 和进程伪装技术 (`SYS_PRCTL`) 在 Windows 或 macOS 上将无法编译或执行。 2. **缺乏传输中加密** 服务器与 payload 之间的通信通过明文 HTTP 进行。虽然 JSON 主体可以使用 AES 加密,但强烈建议通过 TLS 实现完整的 HTTPS,以防止深度包检测 (DPI)。 3. **无持久化** Beacon 仅在系统运行时在内存中运行。它不具备在服务器重启后存活的能力(例如,将自身添加到 crontab 或 systemd 服务中)。 ### 许可证 根据 Apache License 2.0 许可。详见 LICENSE。
标签:Apache 2.0, C2框架, DNS 反向解析, EVTX分析, EVTX分析, Go语言, Homebrew安装, HTTP Beacon, Jitter, Team Server, 中高交互蜜罐, 命令与控制, 安全学习资源, 恶意软件开发, 日志审计, 程序破解, 网络安全, 规避技术, 进程伪装, 隐私保护