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
[](https://golang.org/)
[](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, 中高交互蜜罐, 命令与控制, 安全学习资源, 恶意软件开发, 日志审计, 程序破解, 网络安全, 规避技术, 进程伪装, 隐私保护