本文将介绍在 Ubuntu 22.04 环境下如何安装 Havoc C2 框架。
- Ubuntu 22.04 新装环境
- Go版本:go1.21.0
安装过程中的主要坑点提取:
1
2
3
4
5
6
7
8
|
步骤5:编译服务端程序
mrx@Ubuntu22:~$ vim Install.sh
#将文件 Install.sh 第4行的安装 golang-go 删除,修改后内容如下:
#第4行:sudo apt -qq --yes install nasm mingw-w64 wget >/dev/null 2>&1
#原因是 Ubuntu22.04 apt 安装源中的 Go 版本为 1.18,Havoc 项目支持的最低 Go 版本为 1.21.0,
#所以,我们需要前面的手动方式安装 Go 1.21.0 环境。同时需要在项目文件 Install.sh 中禁用直接通过
#apt 的方式安装 Go 环境,不然直接编译会导致 Go 1.18 又被安装,还需要再删除一遍。
|
上述 Go 版本不兼容问题,同样适用于 Ubuntu 20.04,Ubuntu 18.04 等。
Havoc(中文译为 “浩劫”)是一款现代化、开源、可扩展的后渗透命令与控制(C2)框架,主要面向红队与渗透测试使用,在功能和界面上与商业工具如 Cobalt Strike 相似,但完全免费开源。

Havoc架构与组件如下:
- 使用 Go 语言开发。
- 支持多操作员协同,生成各种格式的 payload(exe、DLL、shellcode),提供 HTTP/HTTPS/SMB listener 管理与控制通信。
- 使用 C++/Qt 构建,提供跨平台图形化操作界面。
- 界面主题现代(Dracula 主题风格),包含监听器管理、会话视图、事件日志、脚本管理等功能。
- 基于 C 与汇编实现,支持高级防护规避技术,如:Ekko/FOLIAGE 睡眠混淆、间接系统调用、SMB 支持、Windows 令牌操作、ETW/AMSI 绕过等。
1
|
mrx@Ubuntu22:~$ sudo apt install -y vim git gcc g++ make cmake python3-dev mingw-w64 nasm build-essential apt-utils 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 qtbase5-dev libboost-all-dev
|
1
2
3
|
mrx@Ubuntu22:~$ wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
mrx@Ubuntu22:~$ tar -xf go1.21.0.linux-amd64.tar.gz
mrx@Ubuntu22:~$ sudo mv go /usr/local/
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
mrx@Ubuntu22:~$ vim ~/.bashrc
# 粘贴以下内容
export GOROOT=/usr/local/go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
# 建议再增加以下两项配置
# 1.13之后的版本都是用mod了,所以gopath指定个地方就可以了,三方依赖会下载到那里
export GOPATH=~/go
# 配置国内镜像,下载依赖速度会很快
export GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
# 建议打开gomod开关
go env -w GO111MODULE=on
|
1
2
|
mrx@Ubuntu22:~$ source ~/.bashrc
#或者重启当前终端(teminal)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
mrx@Ubuntu22:~$ git clone https://github.com/HavocFramework/Havoc.git
mrx@Ubuntu22:~$ cd Havoc/teamserver
mrx@Ubuntu22:~/Havoc/teamserver$ go mod download golang.org/x/sys
mrx@Ubuntu22:~/Havoc/teamserver$ go mod download github.com/ugorji/go(该条报错可忽略)
mrx@Ubuntu22:~$ vim Install.sh
#将文件 Install.sh 第4行的安装 golang-go 删除,修改后内容如下:
#第4行:sudo apt -qq --yes install nasm mingw-w64 wget >/dev/null 2>&1
#原因是 Ubuntu22.04 apt 安装源中的 Go 版本为 1.18,Havoc 项目支持的最低 Go 版本为 1.21.0,
#所以,我们需要前面的手动方式安装 Go 1.21.0 环境。同时需要在项目文件 Install.sh 中禁用直接通过
#apt 的方式安装 Go 环境,不然直接编译会导致 Go 1.18 又被安装,还需要再删除一遍。
#回上级目录开始编译
mrx@Ubuntu22:~/Havoc/teamserver$ cd ..
mrx@Ubuntu22:~/Havoc$ sudo make ts-build
|
此时,编译即可完成。

1
2
|
#编译客户端(客户端编译比较吃资源,建议CPU内存高一些)
mrx@Ubuntu22:~/Havoc$ make client-build
|
1
2
3
4
5
|
#配置信息位置(可修改服务监听端口、登录用户和密码等信息)
mrx@Ubuntu22:~/Havoc$ vim profiles/havoc.yaotl
# 运行服务端程序
mrx@Ubuntu22:~/Havoc$ ./havoc server --profile ./profiles/havoc.yaotl -v --debug
|


1
2
|
# 运行客户端程序
mrx@Ubuntu22:~/Havoc$ ./havoc client
|

登录后的效果:


至此,安装完成。
其他的基本使用,参考下官方文档即可,这里就不过多赘述了:
https://havocframework.com/docs/welcome