
网络安全【免费下载链接】HavocThe Havoc Framework项目地址https://gitcode.com/gh_mirrors/ha/Havoc点击查看免费下载导读Havoc 是一个由 C5pider 创建的现代可塑malleable后渗透 C2Command and Control框架采用「Go 编写的 Teamserver C/Qt 编写的跨平台客户端 C/ASM 编写的旗舰 AgentDemon」三段式架构。本文以 README.md 为主线结合仓库源码与 C2 Profile 配置示例完整讲解环境准备、双端构建、Teamserver 启动参数、C2 Profile 全量字段以及 Demon 的睡眠混淆、间接系统调用、SMB 横向移动、External C2 扩展等核心能力帮助你从零搭建并安全运维一套属于自己的多人在线后渗透作战环境。一、Havoc 是什么三大核心组件Havoc 的定位不是规避检测的工具而是一个高度可塑、高度模块化的后渗透 C2 框架——它把让 Agent 适配目标环境、规避目标检测系统的能力交给 Operator 自定义扩展。从 README.md 的 Feature 清单和仓库目录结构client/、teamserver/、payloads/可以清晰看到框架由三大部分组成组件技术栈职责ClientC Qt跨平台 UIOperator 的操作界面提供会话管理、命令执行、图表展示、事件查看等功能TeamserverGolang多人协作服务端负责监听器、Payload 生成、C2 Profile 解析、事件广播与数据持久化DemonC ASMHavoc 的旗舰 Agentimplant内置丰富的后渗透命令与高级隐蔽技术1.1 Client基于 Dracula 暗色主题的跨平台 UIClient 是跨平台 UI 层官方描述为 Cross-platform UI written in C and Qt采用基于 Dracula 目录存放了全部 Qt Designer 界面文件如Havoc.ui、DemonInteracted.ui、SessionTable.ui、EventViewer.ui等说明会话列表、事件查看器、脚本管理等交互模块均以独立的.ui资源定义。1.2 TeamserverGo 编写的多人协作服务端Teamserver 是框架的中枢README 列出的能力包括Multiplayer多人协作见 teamserver/pkg/db/ 与 teamserver/pkg/events/ 中的事件/聊天/会话同步机制Payload generation支持生成 exe / shellcode / dll 三种形态见 teamserver/pkg/agent/ 与 payloads/ 目录下的Demon、DllLdr、Shellcode三个子项目HTTP/HTTPS listenersteamserver/pkg/handlers/http.goCustomizable C2 profilesYAOtl/HCL 格式配置见 teamserver/pkg/profile/External C2teamserver/pkg/handlers/external.go当前仓库版本信息可以在 teamserver/cmd/cmd.go 中直接确认VersionNumber 0.7 VersionName Bites The Dust DatabasePath data/teamserver.db即当前版本为0.7 / CodeName Bites The Dust会话数据默认持久化到data/teamserver.db。1.3 DemonC ASM 编写的旗舰 AgentDemon 是 Havoc 的主力植入体README 给出的特性清单包括基于 Ekko、Ziliean 或 FOLIAGE 的睡眠混淆、x64 返回地址欺骗、Nt* API 间接系统调用、SMB 支持、Token 保险库、丰富的内置后渗透命令、基于硬件断点的 AMSI/ETW Patch、代理库加载、睡眠期间的栈复制等。对应源码位于 payloads/Demon/其中src/core/下的 SleepObf.c、Syscalls.c、Token.c、TransportSmb.c 分别承载上述能力后面章节会结合配置深入展开。二、环境要求与准备README 明确给出运行环境的推荐范围操作系统Debian 10/11、Ubuntu 20.04/22.04、Kali Linux建议使用尽可能新的版本以避免问题Qt需要较新版本的 Qt避免编译报错Python需要Python 3.10.x以避免构建问题。详细安装步骤见 WIKI.MD其中包括各发行版的依赖安装命令与两个高频构建报错的处理方案fatal error: Python.h: No such file or directory需要安装 Python 3.10 及其开发头文件Ubuntu 可用deadsnakesPPAincomplete type QTime used in nested name specifier说明 Qt 版本过旧需升级到较新的 Qt6 dev 包。以 Debian 系为例的依赖安装源自 WIKI.MD 的 Pre-requisites 一节sudo apt install -y git build-essential apt-utils cmake libfontconfig1 libglu1-mesa-dev \ libgtest-dev libspdlog-dev libboost-all-dev libncurses5-dev libgdbm-dev libssl-dev \ libreadline-dev libffi-dev libsqlite3-dev libbz2-dev mesa-common-dev qtbase5-dev \ qtchooser qt5-qmake qtbase5-dev-tools libqt5websockets5 libqt5websockets5-dev \ qtdeclarative5-dev golang-go python3-dev libboost-all-dev mingw-w64 nasmUbuntu 20.04/22.04 还需启用 Python 3.10sudo add-apt-repository ppa:deadsnakes/ppa sudo apt update sudo apt install python3.10 python3.10-dev三、构建Client 与 Teamserver仓库根目录的 makefile 提供了统一构建入口核心目标如下# main build target. compiles the teamserver and client all: ts-build client-build ts-build: ./teamserver/Install.sh cd teamserver; GO111MODULEon go build -ldflags-s -w -X cmd.VersionCommit$(git rev-parse HEAD) -o ../havoc main.go sudo setcap cap_net_bind_serviceep havoc # 允许普通用户绑定低端口 client-build: git submodule update --init --recursive mkdir client/Build; cd client/Build; cmake .. cmake --build client/Build -- -j 43.1 构建并运行客户端# 在仓库根目录执行 make client-build # 启动客户端 ./havoc client构建过程会先同步 git submodule再通过 CMake 编译client/Build。若你的环境存在多个 Qt 版本在 macOS 上构建完成后通常需要brew unlink qt brew link qt处理链接。3.2 构建并运行 Teamserver# 安装 Go 依赖若 go build 提示缺失 go mod download golang.org/x/sys go mod download github.com/ugorji/go # 构建 teamserver 二进制 make ts-build # 启动 teamserver以指定 profile 运行-v 输出详细信息--debug 开启调试 sudo ./havoc server --profile ./profiles/havoc.yaotl -v --debugmake ts-build会先执行 teamserver/Install.sh 完成交叉编译器等系统包安装随后编译出根目录下的havoc可执行文件。所有与 Teamserver 交互产生的文件会话数据库、Loot 等默认存放于data/目录下从 teamserver/cmd/server.go 可以看到每次启动还会在data/loot/时间戳下生成操作日志目录。3.3 Docker 部署仓库同时提供容器化方案Teamserver-Dockerfile 用于构建服务端镜像WIKI 中还给出了 Jenkins 流水线构建 Client 镜像的示例sudo docker build -t havoc-client -f Client-Dockerfile .四、Teamserver 启动参数详解Teamserver 的命令行参数在 teamserver/cmd/cmd.go 中定义完整列表如下参数简写默认值说明--profile无空指定 Havoc Teamserver 的 C2 Profile 文件路径--default-dfalse使用默认 Profiledata/havoc.yaotl会覆盖--profile--debug无false开启调试模式--debug-dev无false开发者调试模式以 debug 宏重新编译 Agent--send-logs无falseAgent 通过 HTTP(S) 向 Teamserver 回传日志--verbose-vfalse显示详细消息启动流程见 teamserver/cmd/server.go大致为创建 Teamserver 实例 → 初始化data/loot日志目录 → 输出版本与启动时间 → 加载 Profile默认或指定路径→ 校验系统依赖包FindSystemPackages缺失会提示 Please install needed packages→Server.Start()正式拉起服务。命令行中如不提供任何参数./havoc或./havoc server程序会直接打印帮助信息并退出。五、C2 Profile 全量配置解析核心Havoc 使用YAOtl一种基于 HCL 的配置语法编写 C2 Profile仓库内置了三个可直接使用的示例profiles/havoc.yaotl —— 仅含 Teamserver/Operators/Service/Demon 的最小基础配置profiles/http_smb.yaotl —— 包含 HTTP 监听器与 SMB 监听器的完整仿冒配置模拟 Microsoft Teams 流量profiles/webhook_example.yaotl —— WebHook 通知配置示例。Profile 的结构定义位于 teamserver/pkg/profile/config.go顶层共 6 个 Blocktype HavocConfig struct { Server *ServerProfile yaotl:Teamserver,block Operators *OperatorsBlock yaotl:Operators,block Listener *Listeners yaotl:Listeners,block Demon *Demon yaotl:Demon,block Service *ServiceConfig yaotl:Service,block WebHook *WebHookConfig yaotl:WebHook,block }5.1 Teamserver 块服务端地址与交叉编译工具链Teamserver { Host 0.0.0.0 Port 40056 Build { Compiler64 /usr/bin/x86_64-w64-mingw32-gcc # 64 位 Windows 交叉编译器 Compiler86 /usr/bin/i686-w64-mingw32-gcc # 32 位 Windows 交叉编译器 Nasm /usr/bin/nasm # NASM 汇编器编译 Agent 汇编代码 } }Host/PortTeamserver 的监听地址与端口默认0.0.0.0:40056供 Client 与 Agent 回连Build块Payload 生成所需的 MinGW 交叉编译器与 NASM 路径。默认 Profiledata/havoc.yaotl中使用的是data/x86_64-w64-mingw32-cross/bin/...的本地工具链路径说明不同安装方式下路径会不同需按实际环境调整。5.2 Operators 块操作员账号多人协作Operators { user 5pider { Password password1234 } user Neo { Password password1234 } }每个user块的label双引号内的名称即用户名对应源码中Name string \yaotl:Name,label块内Password字段为登录密码。Operators块定义了哪些 Operator 可以连接 Teamserver 进行多人协同作战Profile 解析时通过ListOfUsernames()[profile.go](https://link.gitcode.com/i/05c9f796f5ed5a6e395fc97e69884183)提取全部用户名用于鉴权。示例密码password1234 仅为演示实际部署务必更换强密码。5.3 Listeners 块监听器配置HTTP / SMBListeners块支持三类监听器源码见 config.goHttp、Smb、External。HTTP/HTTPS 监听器全字段以 http_smb.yaotl 中的完整示例为准Listeners { Http { Name teams profile - http Hosts [ 5pider.net ] # 回调域名Agent 连接用 HostBind 0.0.0.0 # 监听器绑定地址 HostRotation round-robin # 多 Host 轮换策略 PortBind 443 # 服务端绑定端口 PortConn 443 # Agent 连接端口 Secure false # 是否启用 HTTPS生产环境务必开启 KillDate 2024-01-02 12:00:00 # 到期时间格式 2006-01-02 15:04:05 UserAgent Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Uris [ /Collector/2.0/settings/ ] # 回调 URI 路径 Headers [ # 请求头仿冒合法请求 Accept: json, Referer: https://teams.microsoft.com/_, x-ms-session-id: f73c3186-057a-d996-3b63-b6e5de6ef20c, x-ms-client-type: desktop, x-mx-client-version: 27/1.0.0.2021020410, Accept-Encoding: gzip, deflate, br, Origin: https://teams.microsoft.com ] Response { # 服务端响应头仿冒目标服务 Headers [ Content-Type: application/json; charsetutf-8, Server: Microsoft-HTTPAPI/2.0, X-Content-Type-Options: nosniff, x-ms-environment: North Europe-prod-3,_cnsVMSS-6_26, x-ms-latency: 40018.2038, Access-Control-Allow-Origin: https://teams.microsoft.com, Access-Control-Allow-Credentials: true, Connection: keep-alive ] } } ... }对照 config.go 的结构体各字段含义与约束如下字段是否必填说明Name必填监听器名称Teamserver 端唯一重名会报 listener already existsHosts必填回调域名列表可配置多个配合HostRotation轮换HostBind/HostRotation必填绑定地址 / 多域名轮换策略PortBind/PortConn必填/可选服务端绑定端口 / Agent 实际连接端口Secure可选是否启用 HTTPS示例注释明确警告生产环境一定要开启KillDate可选会话到期时间格式2006-01-02 15:04:05WorkingHours可选工作时间窗口格式如8:00-17:00Method/UserAgent可选请求方法 / 请求 UA 伪装Headers/Uris可选请求头集合 / 回调 URI 集合Cert可选HTTPS 证书CertKey两个子字段Response可选服务端响应头集合Headers子字段Proxy可选上游代理Host、Port、Username、Password实战提示http_smb.yaotl示例整体模仿 Microsoft Teams 的流量特征UA、x-ms-*头、响应头均取自真实 Teams 服务这正是 README 所述malleable可塑能力的体现——通过 Profile 让 C2 流量在网络上呈现为合法业务流量。SMB 监听器横向移动 / 内网 pivotSmb { Name Pivot - Smb PipeName demon_pipe # 命名管道名称 }SMB 监听器用于内网环境下的 Pivot 通信对应源码 teamserver/pkg/handlers/smb.go 与 ListenerStart 中的LISTENER_PIVOT_SMB分支。它同样支持可选的KillDate与WorkingHours字段。External 监听器External { Name ... Endpoint ... # 外部 C2 端点 }External 监听器通过 external.go 实现接收外部 C2 客户端如自定义转发器发来的流量是构建边界隔离 / 域前置等复杂通信链路的入口详见下文可扩展性。5.4 Demon 块Agent 行为配置Demon块控制 Agent 的运行时行为config.goDemon { Sleep 2 # 心跳间隔秒 Jitter 20 # 心跳抖动百分比% TrustXForwardedFor false # 是否信任 X-Forwarded-For 头 Injection { Spawn64 C:\\Windows\\System32\\Werfault.exe # 64 位注入进程 Spawn32 C:\\Windows\\SysWOW64\\Werfault.exe # 32 位注入进程 } }完整字段表含可选高级项字段类型说明Sleep/Jitterint心跳间隔秒与抖动百分比对抗流量分析IndirectSyscallbool是否启用间接系统调用Nt* APIStackDuplicationbool睡眠期间是否进行栈复制SleepTechniquestring睡眠混淆技术如 EkkoProxyLoadingstring代理库加载模式AmsiEtwPatchingstringAMSI/ETW Patch 模式基于硬件断点ProcessInjectionblockSpawn64/Spawn32注入目标进程路径DotNetNamePipestring.NET 执行使用的命名管道Binaryblock可执行文件伪装HeaderMagicMz-x64/x86、CompileTime、ImageSize-x64/x86、ReplaceStrings-x64/x86字符串替换TrustXForwardedForbool是否信任 XFF 头以获取真实 IP其中Binary块是实现二进制文件形态伪装的关键可改写 PE 的 Magic 字节、编译时间戳、镜像大小并对特征字符串进行替换从文件层面规避静态检测。5.5 Service 块与 WebHook 块# 可选配置不使用可整体删除 Service { Endpoint service-endpoint Password service-password } WebHook { Discord { Url https://discord.com/api/webhooks/... # Discord Webhook URL AvatarUrl ... # 可选头像地址 User Havoc # 可选展示用户名 } }Service块用于启用服务端 Agentservice agent接口WebHook.Discord用于将告警/事件推送到 Discord实现见 teamserver/pkg/webhook/discord.go。两者均为可选。六、监听器生命周期从 Profile 到上线监听器启动入口位于 teamserver/cmd/server/listener.go遍历t.Listeners若已有同名监听器则报错listener already exists按类型分发LISTENER_HTTP→handlers.NewConfigHttp()LISTENER_PIVOT_SMB→handlers.NewPivotSmb()LISTENER_EXTERNAL→handlers.NewExternal(...)注入 Teamserver 引用后调用Start()拉起服务。Agent 上线后的数据流请求进入后由 handlers.go 的 parseAgentRequest 解析包头并路由到handleDemonAgent/handleServiceAgent随后按会话的 AES 密钥进行解密Parser.DecryptBuffer与任务下发。SMB Pivot 场景下handlers.goTeamserver 会依据DEMON_PIVOT_SMB_COMMAND找到父会话PivotInstance通过父 Agent 中转子 Agent 的加密流量——这就是内网横向扩展的底层机制。七、Demon 旗舰 Agent 特性深挖README 列出的 Demon 特性均可与 payloads/Demon/ 源码一一对应README 特性对应源码说明Sleep ObfuscationEkko / Ziliean / FOLIAGEObf.c、SleepObf.h心跳间隔期间加密内存中的敏感数据规避内存扫描Stack duplication during sleep同上SleepObf 体系睡眠时复制栈抹去调用痕迹Indirect Syscalls for Nt* APIsSyscalls.c、Syscalls.h间接系统调用绕过用户态 Hookx64 return address spoofingSpoof.x64.asm、Spoof.c伪造返回地址干扰栈回溯分析Patching AMSI/ETW via Hardware breakpointsHwBpEngine.c用硬件断点方式 patch避免常规内存 patch 特征SMB supportTransportSmb.c、Pivot.cSMB 命名管道传输与 PivotToken vaultToken.c令牌管理窃取/恢复/提权Proxy library loadingMemory.c 等内存加载库避免落盘丰富的内置后渗透命令Commands.c详见客户端会话控制台帮助见上文第三张截图设计注意README Note 一节Havoc 官方明确说明不接受任何与检测规避相关的 Issue。框架本身不以隐蔽性为首要目标而是把可塑性malleable与模块化modular作为设计核心——让 Operator 有能力自行添加自定义特性或模块去适配各自目标的检测环境。八、可扩展性External C2、自定义 Agent、Python API 与 ModulesREADME 的 Extensibility 一节给出了四条扩展路径External C2通过 External 监听器对接外部 C2 通信链路适合需要把流量转发、中继或隐藏在第三方通道如合法云服务中的场景。核心实现见 external.go其Request方法接收外部客户端 POST 的加密请求并交给parseAgentRequest处理。自定义 Agent 支持Custom Agent Support框架并非只能使用 Demon。官方维护的 Talon 即为一个示例自定义 Agent从 teamserver/pkg/agent/ 的包设计可看出Agent 侧以agent.Agent抽象与 Teamserver 交互支持接入新 Agent 类型。Python API官方提供独立仓库 havoc-py含HavocUi、PyAgentClass、PyDemonClass、PyWidgetClass等模块与 ScriptManager.uiClient 内建脚本管理器对应源码 PythonScript.cc。Modules官方 Modules 仓库提供可插拔模块make client-build时若检测到本地client/Modules目录不存在会自动 clone 到 client/Modules随后在 CMake 构建中编译进 Client。九、典型部署流程速览综合以上内容一次完整的部署与使用流程如下# 1. 安装系统依赖见 WIKI.MD 各发行版命令 # 2. 构建客户端与服务端 make client-build make ts-build # 3. 按需编辑 C2 Profile仿冒流量、账号、监听器等 vim profiles/http_smb.yaotl # 4. 启动 Teamserver使用自定义 Profile sudo ./havoc server --profile ./profiles/http_smb.yaotl -v --debug # 5. 启动 Client 并连接 Teamserver ./havoc client登录后即可在 Client 中创建 HTTP/SMB/External 监听器、生成 Demon Payloadexe/shellcode/dll、下发会话命令并借助多 Operator 账号实现多人协同。十、常见问题与注意事项不要提交检测类 IssueREADME 明确声明不处理任何 detection 相关报告这是框架定位决定的Couldnt compile implant: exit status 1多为交叉编译器或 NASM 路径配置错误请核对 Profile 中Build块的Compiler64/Compiler86/Nasm是否指向真实存在的工具链Install.sh 会安装标准路径工具自定义目录需手动对齐HTTPS 务必开启http_smb.yaotl示例中Secure false仅为便于观察明文流量Profile 注释已明确警示生产环境必须启用Secure true并配置Cert/Key默认数据目录所有会话数据库、操作日志、生成的 Payload 均写入data/目录注意权限与备份。结语Havoc 以「可塑 模块化」为核心设计哲学通过 Go Teamserver、C/Qt Client、C/ASM Demon 的三层架构配合 YAOtl 格式的 C2 Profile 与 External C2、Python API、Modules 等扩展机制构建了一套可深度定制的后渗透作战体系。本文基于 README.md 与仓库源码从环境准备、构建运行、Profile 全字段到 Agent 高级特性给出了完整的技术路径更多细节版本历史、命令参考、Custom Agent 接入等可继续查阅 WIKI.MD 与 RELEASE.md 获取。赞分享网络安全【免费下载链接】HavocThe Havoc Framework项目地址https://gitcode.com/gh_mirrors/ha/Havoc点击查看免费下载相关推荐终极C2框架Merlin跨平台后渗透测试完全指南Merlin是一款强大的跨平台后渗透测试命令与控制C2框架专为红队操作和渗透测试设计。这款基于Go语言开发的开源工具提供了完整的C2基础设施支持Wind网络安全渗透测试Havoc Framework终极指南现代C2框架的管道通信与数据传输机制Havoc Framework是一款 现代可扩展的后渗透命令与控制框架 专为红队操作和渗透测试设计。作为先进的C2框架Havoc通过多种管道通信机制实现高效网络安全上一篇3步掌握Homebrew GUI工具Applite告别命令行的macOS应用管理解决方案下一篇网盘下载革新2025年最实用的直链提取工具全面解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考