
网络安全【免费下载链接】HavocThe Havoc Framework项目地址https://gitcode.com/gh_mirrors/ha/Havoc点击查看免费下载导读Havoc 是一款现代、可塑性强malleable的后渗透命令与控制C2框架其团队服务器Teamserver部分完全使用 Golang 编写承担着监听器管理、Agent 状态维护、Operator 认证、数据库持久化与事件广播等核心职责。本文以仓库内 teamserver/README.md 为骨架结合源码与构建脚本系统讲解 Teamserver 的本地编译、Docker 容器化构建与运行、Jenkins 流水线构建以及命令行启动的全部细节。读完本文你将掌握从零构建出可用的teamserver二进制、通过容器化方式部署并持久化数据以及正确使用--profile、--default、--verbose等关键启动参数的能力。一、Teamserver 在 Havoc 框架中的定位Havoc 由三大部分组成基于 C/Qt 编写的跨平台客户端Client、基于 Go 编写的团队服务器Teamserver、以及用 C 与汇编编写的旗舰 AgentDemon。Teamserver 是整张 C2 网络的中枢通过 WebSocket 与客户端通信管理多 Operator 的登录与会话提供 HTTP/HTTPS 监听器、SMB 监听器与 External C2 监听器依据 yaotl 格式的 C2 Profile 加载配置监听器、Operator、Demon 参数、Service、Webhook将数据持久化到本地 SQLite 数据库重启后可恢复历史监听器与 Agent为 Agent 负载生成提供交叉编译器、NASM 等构建工具链环境。从 团队服务器核心结构 可以看出Teamserver结构体聚合了Clients在线 Operator 连接、Listeners、Agents、DB数据库、Profile配置档案与WebHooksDiscord 通知等关键组件是整个框架的服务端内核。二、构建前置条件2.1 最低要求官方 README 明确要求构建 Teamserver 需要Go 1.18及以上版本。而仓库内的 Teamserver-Dockerfile 使用golang:1.19.1作为基础镜像go.mod也锁定在较新的 Go 工具链上因此推荐直接使用 1.19 的 Go 环境。2.2 交叉编译工具链Teamserver 在启动时会通过FindSystemPackages()见 teamserver.go探测构建 Agent 所需的工具链x64 编译器x86_64-w64-mingw32-gcc默认从 PATH 查找x86 编译器i686-w64-mingw32-gccNASMnasm这三者也可以在 C2 Profile 的Teamserver { Build { ... } }块中显式指定绝对路径如profiles/havoc.yaotl中所示。若系统缺少任一工具Teamserver 会直接报错退出所以本地构建时需提前安装mingw-w64与nasmsudo apt update sudo apt install golang-go nasm mingw-w64 wget2.3 一键工具链部署脚本仓库提供了 teamserver/Install.sh它会自动完成工具链准备安装上述软件包并从 musl.cc 下载x86_64-w64-mingw32-cross.tgz与i686-w64-mingw32-cross.tgz解压到data/目录供 Profile 中的相对路径引用。根目录 makefile 的ts-build目标会先调用该脚本再执行 Go 编译。三、本地编译 TeamserverNative Build按官方 README在teamserver/目录下直接执行make即可完成编译。但需要说明的是根目录 makefile 中ts-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即在teamserver/目录内执行go build将二进制输出到仓库根目录的havoc并通过setcap赋予其绑定低端口如 443的能力使普通用户也能启动监听器。如果你只想单独编译 Teamserver 而不构建客户端可以使用make ts-build若要快速编译跳过 Install.sh 的下载安装过程make dev-ts-compile编译成功后你会在/bin目录或根目录havoc取决于你使用的构建方式得到可执行文件。如需清理 Teamserver 相关构建产物执行make ts-cleanup注意该目标会移除data/loot、数据库与交叉编译工具链谨慎使用。四、命令行参数与启动方式4.1 帮助信息./teamserver -hTeamserver 使用 Cobra 构建 CLI入口见 cmd/cmd.go 与 cmd/server.go当前版本标识为0.7 / Bites The DustVersionNumber与VersionName见 cmd/cmd.go。4.2 使用预写 Profile 启动sudo ./teamserver server --profile profiles/havoc.yaotl --verbose--profile path指定 yaotl 格式的 C2 Profile 文件路径--verbose/-v开启详细日志输出。4.3 使用默认 Profile 启动sudo ./teamserver --default --verbose--default/-d会加载仓库内置的默认 Profile即data/havoc.yaotl。从源码逻辑cmd/server.go可以看到--default会覆盖--profile若两者都未指定Teamserver 会报错并退出No profile specified. Specify a profile with --profile or choose the standard profile with --default4.4 完整参数清单在 cmd/cmd.go 中注册了server子命令的全部参数参数短参默认值说明--profile path—空指定 Teamserver 使用的 yaotl Profile--default-dfalse使用默认 Profiledata/havoc.yaotl优先级高于--profile--verbose-vfalse输出详细日志logger.ShowTime依此开启时间戳--debug—false开启 Debug 模式--debug-dev—false开发者调试模式以宏方式编译 Agent--send-logs—false允许 Agent 通过 HTTP(S) 向 Teamserver 回传日志启动时 Teamserver 会打印版本横幅pwn and elevate until its done、监听地址wss://Host:Port以及日志目录data/loot/时间戳见 cmd/server.go。五、C2 Profile 与启动流程5.1 yaotl Profile 结构默认 Profile 示例为 profiles/havoc.yaotl它包含以下核心块Teamserver { Host 0.0.0.0 Port 40056 Build { Compiler64 data/x86_64-w64-mingw32-cross/bin/x86_64-w64-mingw32-gcc Compiler86 data/i686-w64-mingw32-cross/bin/i686-w64-mingw32-gcc Nasm /usr/bin/nasm } } Operators { user 5pider { Password password1234 } user Neo { Password password1234 } } # 可选第三方 Agent 服务端点 Service { Endpoint service-endpoint Password service-password } Demon { Sleep 2 Jitter 15 TrustXForwardedFor false Injection { Spawn64 C:\\Windows\\System32\\notepad.exe Spawn32 C:\\Windows\\SysWOW64\\notepad.exe } }各块的字段定义可在 profile/config.go 中逐一对上Teamserver.Host / PortTeamserver WebSocket 服务监听地址与端口启动时若命令行未覆盖则直接采用见 teamserver.goTeamserver.Build交叉编译器与 NASM 路径缺省时回退到exec.LookPath查找Operators.userOperator 用户名label与明文密码客户端登录时 Teamserver 用 SHA3-256 哈希比对见ClientAuthenticateteamserver.goService为第三方 Agent 提供的服务端点与密码DemonAgent 的休眠间隔秒、抖动百分比、是否信任 X-Forwarded-For以及注入进程路径。此外Profile 还支持Listeners块HTTP/S、SMB、External 三类监听器的声明与WebHookDiscord 通知HTTP 监听器支持KillDate格式2006-01-02 15:04:05、WorkingHours格式8:00-17:00、HostRotation、Cert、Response.Headers等可选项完整定义见 profile/config.go。5.2 启动流程源码解析server命令的执行逻辑cmd/server.go依次完成设置日志目录并初始化 Logr 记录器加载 ProfileSetProfile或默认 ProfileFindSystemPackages()校验构建工具链Server.Start()启动服务teamserver.go核心步骤包括生成 RSA 证书并写入data/server.cert/data/server.key以RunTLS方式启动 Gin WebSocket 服务按 Profile 启动全部 HTTP/S、SMB、External C2 监听器打开或新建 SQLite 数据库恢复上次会话遗留的监听器与 Agent包括 Pivot 父子关系与 Link 关系重建向在线客户端广播 Profile 与历史事件。5.3 端口规划40056Teamserver 的 WebSocketWSS默认端口客户端在此连接443示例中 HTTP/HTTPS 监听器常用的绑定端口因此官方示例命令使用sudo或setcap提升权限。六、Docker 容器化构建与运行6.1 构建 Teamserver 镜像官方 README 提供了基于 Dockerfile 的构建方式sudo docker build -t havoc-teamserver -f Teamserver-Dockerfile .Teamserver-Dockerfile 以golang:1.19.1为基础安装mingw-w64、nasm、upx-ucl、python3-pip等依赖并从 GitHub 克隆仓库后执行./Install.sh make ts-build。镜像构建完成后可用docker cp containerID:/go/Build/bin/teamserver /host/path/target将编译好的二进制拷出使用。6.2 创建持久化数据卷sudo docker volume create havoc-c2-data该卷用于挂载 Teamserver 的/data目录持久化数据库、loot、证书与工具链避免容器销毁导致数据丢失。6.3 运行容器sudo docker run -it -d -v havoc-c2-data:/data havoc-teamserver如需在容器内交互执行 Teamserversudo docker exec -t container_id /go/Build/bin/teamserver6.4 端口映射与客户端连接README 给出的运行示例注意其中将 Teamserver 镜像与端口映射结合使用sudo docker run -p40056:40056 -p 443:443 -it -d -v havoc-c2-data:/data havoc-teamserver映射40056与443后即可在localhost:40056通过 Havoc 客户端Teamserver Client连接443 端口则供 HTTP/HTTPS 监听器对外服务。七、基于 Jenkins Docker 的 CI/CD 构建7.1 构建 Jenkins 镜像若希望用 Jenkins 流水线自动构建 Teamserver可在仓库根目录执行sudo docker build -t jenkins-havoc-teamserver -f JT-Dockerfile .7.2 创建 CI/CD 数据卷sudo docker volume create havoc-cicd-c2-data7.3 运行 Jenkinssudo docker run -p8080:8080 -it -d -v havoc-cicd-c2-data:/data jenkins-havoc-teamserver随后访问localhost:8080打开 Jenkins 界面创建 Pipeline 即可构建 Teamserver。仓库提供了现成的 Groovy 流水线脚本 assets/Havoc-Teamserver.groovy可直接参考使用。八、常见问题与注意事项权限问题绑定 443 等特权端口需要sudo运行或使用make ts-build自动设置的setcap cap_net_bind_serviceep以普通用户身份运行。Profile 缺失报错既未指定--profile也未指定--default时 Teamserver 会直接退出务必二选一。工具链缺失启动时若找不到 mingw 编译器或 NASM会输出Couldnt find ...并退出需先执行 teamserver/Install.sh 或手动安装。数据持久化数据库默认路径为data/teamserver.db见 cmd/cmd.go容器部署务必挂载数据卷否则重建容器会丢失监听器与会话记录。构建版本README 要求 Go 1.18Dockerfile 使用 1.19.1建议使用 Go 1.19 及以上版本避免编译兼容问题。九、总结Havoc Teamserver 的构建与部署路径清晰本地环境满足 Go 1.18 与 mingw-w64/nasm 工具链后执行make或make ts-build即可得到二进制随后通过--profile加载 yaotl 配置并搭配--verbose启动生产或隔离环境可选用 Docker 镜像构建、数据卷持久化、端口映射方案或借助 Jenkins 镜像实现流水线化构建。本文所涉及的源码证据CLI 参数注册、Profile 结构、启动流程、Dockerfile、构建脚本均可直接在仓库对应路径中查阅便于进一步深入定制。赞分享网络安全【免费下载链接】HavocThe Havoc Framework项目地址https://gitcode.com/gh_mirrors/ha/Havoc点击查看免费下载相关推荐Garnet 构建与部署实战指南从源码编译、运行测试到启动 RESP 服务器Garnet 构建与部署实战指南从源码编译、运行测试到启动 RESP 服务器 Garnet 是微软研究院开源的远程缓存存储remote cache stor缓存KV存储后端Sanic 应用 Docker 化部署实战镜像构建、容器运行与 docker-compose 编排Sanic 应用 Docker 化部署实战镜像构建、容器运行与 docker compose 编排 导读 本文基于 Sanic 官方部署文档完整讲解如何将一后端Web框架实战指南coturn TURN服务器全平台部署与编译优化实战指南coturn TURN服务器全平台部署与编译优化 在实时音视频通信和WebRTC应用中TURN服务器扮演着关键角色负责在NAT和防火墙环境下建立媒网络通信后端上一篇FloatingPanel示例项目分析从简单demo到企业级应用的实现路径下一篇Ursa.Avalonia手势输入KeyGestureInput的快捷键革命创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考