sussiestbaka/Gobeacon
GitHub: sussiestbaka/Gobeacon
一个基于 Telegram Bot API 通信的分阶段 C2 框架,用于研究隐蔽命令控制、键盘记录和检测规避技术。
Stars: 0 | Forks: 0
# GoBeacon
  
## ⚠️ 免责声明
本项目严格用于**教育和研究目的**。旨在帮助理解攻击技术以构建更好的防御。未经**明确的书面授权**,请勿在任何系统上使用。作者不对滥用行为负责。
## 概述
GoBeacon 是一个分阶段的 C2 框架,使用 Telegram Bot API 作为其通信通道。操作者从不直接与植入程序通信——所有流量都通过 Telegram 的基础设施传输,使得信标在 `api.telegram.org` 看起来像是合法的出站流量。
该项目旨在研究:
- C2 通信模式和检测规避
- Windows API 级别的键盘记录技术
- 分阶段 Payload 投递以最小化初始足迹
- 红队行动的 OpSec 考量
## 架构
```
Operator (Whonix Workstation)
│
│ Tor Network
▼
Telegram API
(api.telegram.org)
│
│ Outbound HTTPS (looks legitimate)
▼
Beacon (target machine)
```
**为什么选择 Telegram 作为 C2 通道?**
大多数企业环境和 EDR 解决方案不会标记或阻止到 `api.telegram.org` 的出站流量。这消除了对攻击者控制的基础设施的需求(无需托管 C2 服务器,无需注册域名,无需消耗 IP),并显著减少了操作足迹。
**为什么选择 Whonix 作为操作者工作站?**
Whonix 通过其 Gateway VM 将所有流量通过 Tor 路由,确保操作者的真实 IP 永远不会暴露——甚至对 Telegram 也是如此。Workstation VM 没有直接的网络访问权限,因此即使工作站受损,操作者的身份仍然受到保护。
## 组件
框架分为多个阶段以减少检测面:
| 文件 | 语言 | 描述 |
|------|----------|-------------|
| `beacon.go` | Go | 核心 C2 植入程序。连接到 Telegram Bot API,处理 Shell 会话,执行命令 |
| `keylogger.go` | Go | 独立键盘记录器。直接使用 `user32.dll` 中的 `GetAsyncKeyState`。日志经过 XOR 混淆和 Base64 编码 |
| `persist.bat` | Batch | 通过 Windows 注册表 (`HKCU\Software\Microsoft\Windows\CurrentVersion\Run`) 安装持久化 |
| `recon.bat` | Batch | 混淆的 WinPEAS 包装器,用于本地权限提升枚举 |
### 分阶段部署
```
Stage 1: beacon.exe → Establish C2 channel
Stage 2: persist.bat → Install persistence
Stage 3: keylogger.exe → Deploy keylogger (via beacon shell)
Stage 4: recon.bat → Run enumeration (if escalation needed)
```
将组件分阶段意味着如果一个工件被检测到,其他工件不会立即与之关联。
## Beacon 功能
- **多会话支持** — 使用会话 ID 前缀从单个 Telegram Bot 控制多台机器
- **会话感知 Shell** — 在命令之间保持工作目录状态
- **文件窃取** — `/download` 命令通过 Telegram 直接将文件发送给操作者
- **广播命令** — `/all` 同时向所有活动的 Beacon 发送命令
- **隐藏执行** — 使用 `CREATE_NO_WINDOW` 标志在 Windows 上抑制控制台窗口
- **命令黑名单** — 防止破坏性命令(`rm -rf`, `format`, `shutdown` 等)
## Keylogger 功能
- 通过 `syscall` 直接调用 Windows API(无外部依赖)
- 随机文件名(`cache_XXXXXX.bin`)以避免静态检测
- 使用 `SetFileAttributesW` 隐藏文件(Hidden 属性)
- 对记录的数据进行 XOR 混淆 + Base64 编码
- 带时间戳的条目以便重建
- 静默失败 — 如果无法初始化则无输出退出
## 技术说明
### 为什么选择 Go?
Go 编译为单个静态二进制文件,无运行时依赖。与 Python 等解释型语言相比,这简化了部署并减少了检测面。交叉编译还允许从 Linux/Whonix 环境构建 Windows 目标。
### Keylogger 检测考量
当前的 XOR 密钥(`0x55`)是静态的,恶意软件分析师可以轻松逆向。生产级实现将使用派生密钥或 AES 加密。为了可读性和学习目的,此处有意保持简单。
### OpSec 权衡
使用 Telegram 引入了对第三方服务的依赖。如果 Telegram 封锁了 Bot Token 或账户被举报,C2 通道将丢失。更具弹性的实现将包括回退通道或域名前置。
## 设置
### 需求
- Go 1.21+
- 一个 Telegram Bot Token(来自 [@BotFather](https://t.me/botfather))
- 你的 Telegram User ID
### 配置
目前,直接在 `loadConfig()` 中编辑:
```
{
"bot_token": "your_token_here",
"admin_ids": [123456789]
}
```
### 构建
```
# 从 Linux 为 Windows 构建
GOOS=windows GOARCH=amd64 go build -o beacon.exe beacon.go
GOOS=windows GOARCH=amd64 go build -o keylogger.exe keylogger.go
```
## 作者
**Alejandro** — 专注于进攻性安全研究的机电工程学生。
- 🔗 [LinkedIn](https://www.linkedin.com/in/ale-rosales-22ab43363/)
- 🐙 [GitHub](https://github.com/sussiestbaka)
- 🎯 [TryHackMe](https://tryhackme.com/p/AlejandroRosales)
## 许可证
仅供教育使用。参见 [LICENSE](LICENSE)。
标签:C2框架, DNS 反向解析, Golang, Go语言, HTTPS通信, IP 地址批量处理, Staged Payload, Telegram API, Tor, Whonix, Windows平台, 僵尸网络, 分阶段载荷, 匿名网络, 命令控制, 安全学习资源, 安全编程, 攻击模拟, 数据采集, 日志审计, 流量伪装, 程序破解, 端点可见性, 网络安全, 规避检测, 远控木马, 键盘记录, 隐私保护, 隐蔽通信, 驱动签名利用