本项目是基于开源 C2 框架 Havoc 的二次开发版本。
我进行 Havoc 的二次开发,最主要的动机是为了深入学习和理解现代 C2 框架的实现原理与高级规避技术
Havoc 是当前市面上最有潜力的开源 C2 框架之一,它具备:
- ✅ 完整的客户端图形界面
- ✅ 高度模块化、可拓展性强
- ✅ Agent 拥有极强的规避能力,采用了许多高级技术(如动态加载、内存执行等)
- ✅ 支持 BOF、SOCKS 等常见 C2 功能
以上特性使其非常值得学习和使用。
然而,在实际使用 Havoc 的过程中,也发现了以下几个问题:
-
🇨🇳 在国内部署比较麻烦,需要额外的环境配置或改动
-
🕵️♂️ 存在明显的流量特征,例如:
ctx.Header("X-Havoc", "true")
- 默认 Magic Value 为
0xDEADBEEF
,容易被检测
-
🧱 虽然规避能力强,但开发者明确表示:
The Havoc Framework hasn't been developed to be evasive. Rather it has been designed to be as malleable & modular as possible. Giving the operator the capability to add custom features or modules that evades their targets detection system.
也就是说,规避能力需要用户自行实现模块化增强。
-
🚨 增强进程获取模块:增加对常见杀软进程的识别
-
📦 清除流量特征:
- 移除或自行替换 HTTP 头字段
X-Havoc
- 更改 Magic Value 值(原为
0xDEADBEEF
,可自行替换)
- 移除或自行替换 HTTP 头字段
-
🛠 解决国内部署问题
-
teamserver部署选择国外vps,或者使用代理下载如下内容传至teamserver,配置 GOPROXY 环境变量,然后安装官方教程正常安装
# 编译器下载 https://musl.cc/x86_64-w64-mingw32-cross.tgz -> /tmp/mingw-musl-64.tgz https://musl.cc/i686-w64-mingw32-cross.tgz -> /tmp/mingw-musl-32.tgz # 配置 GOPROXY 环境变量 export GOPROXY=https://goproxy.io,direct
-
client部署时,会clone github的资源,所以需要开启全局tun代理,或者更改
makefile
,在如下内容添加proxychains
,使用proxychains
代理clone资源,proxychains
自行配置client-build: @ echo "[*] building client" @ git submodule update --init --recursive @ mkdir -p client/Build; cd client/Build; cmake .. @ if [ -d "client/Modules" ]; then echo "Modules installed"; else git clone --recurse-submodules https://github.com/HavocFramework/Modules client/Modules --single-branch --branch `git rev-parse --abbrev-ref HEAD`; fi @ cmake --build client/Build -- -j 4
-
- 🔐 流量加密机制重构:
- 借鉴 Cobalt Strike:采用
RSA + AES
组合加密通信,增强抗流量检测能力
- 借鉴 Cobalt Strike:采用
- 🪟 客户端支持 Windows 编译:
- 当前官方支持 Linux,计划修改为支持 Windows 构建客户端 GUI
- 🧩 更好地支持 Linux Agent(如 Shaco):
- 深度整合 souzomain/Shaco
- 或兼容其他优秀的 Linux agent 模块
如果你有建议或想法,欢迎一起交流、学习和完善这个项目!