Ubuntu 22.04安装Havoc C2框架

本文将介绍在 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 等。

1、Havoc基本介绍

Havoc(中文译为 “浩劫”)是一款现代化、开源、可扩展的后渗透命令与控制(C2)框架,主要面向红队与渗透测试使用,在功能和界面上与商业工具如 Cobalt Strike 相似,但完全免费开源。

image-20250619235515846

Havoc架构与组件如下:

(1)Teamserver(团队服务器)

  • 使用 Go 语言开发。
  • 支持多操作员协同,生成各种格式的 payload(exe、DLL、shellcode),提供 HTTP/HTTPS/SMB listener 管理与控制通信。

(2)Client(客户端界面)

  • 使用 C++/Qt 构建,提供跨平台图形化操作界面。
  • 界面主题现代(Dracula 主题风格),包含监听器管理、会话视图、事件日志、脚本管理等功能。

(3)Demon(Agent)

  • 基于 C 与汇编实现,支持高级防护规避技术,如:Ekko/FOLIAGE 睡眠混淆、间接系统调用、SMB 支持、Windows 令牌操作、ETW/AMSI 绕过等。

2、Havoc安装过程

(1)安装依赖工具

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

(2)安装Go环境

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/

(3)设置环境变量

 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

(4)激活上面的配置

1
2
mrx@Ubuntu22:~$ source ~/.bashrc
#或者重启当前终端(teminal)

(5)编译服务端程序

 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

此时,编译即可完成。

image-20250619221231415

(6)编译客户端程序

1
2
#编译客户端(客户端编译比较吃资源,建议CPU内存高一些)
mrx@Ubuntu22:~/Havoc$ make client-build

(7)运行服务端

1
2
3
4
5
#配置信息位置(可修改服务监听端口、登录用户和密码等信息)
mrx@Ubuntu22:~/Havoc$ vim profiles/havoc.yaotl

# 运行服务端程序
mrx@Ubuntu22:~/Havoc$ ./havoc server --profile ./profiles/havoc.yaotl -v --debug

image-20250619222930162

image-20250619223030664

(8)运行客户端

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

image-20250619223120156

登录后的效果:

image-20250619223230628

image-20250619223317432

至此,安装完成。

其他的基本使用,参考下官方文档即可,这里就不过多赘述了:

https://havocframework.com/docs/welcome

updatedupdated2025-06-202025-06-20