随记体验 · 2023年8月19日 0

Havoc+Harriet,绕过EDR方案

背景说明

虽然Cobalt Strike(以下简称CS)好用,但毕竟人家是商业软件,贪便宜想用破解版又担心被种马,而且现如今很多EDR都会针对CS特征做防护,那不如试试Havoc这个平替。Havoc是什么?Havoc是一个现代化、可塑性较强的后渗透C2框架,被戏称为用go编写的CS。

Havoc安装

骨哥使用的环境为Ubuntu 20.04,参考官方指导文档进行安装即可:

1、Clone 项目:

git clone https://github.com/HavocFramework/Havoc.git

2、安装 Python 3.10,主要作为Client客户端的依赖:

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.10 python3.10-dev

3、安装其它所需依赖:

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 qtbase5-dev libqt5websockets5-dev python3-dev libboost-all-dev mingw-w64 nasm

4、安装其它Go依赖:

cd teamserver
go mod download golang.org/x/sys
go mod download github.com/ugorji/go
cd ..

5、安装 musl 编译器并构建二进制文件(在 Havoc 根目录运行):

#编译
make ts-build

骨哥在这步编译时报错,提示golang版本过低,发现Ubuntu20.04使用apt install安装的golang版本是1.13,havoc要求为1.18,于是卸载原有的老版本,安装1.18版的golang:

#卸载旧版本golang
sudo rm -rf /usr/local/go
sudo apt-get remove golang
sudo apt-get remove golang-go
sudo apt-get autoremove
#安装1.18 golang
wget https://dl.google.com/go/go1.18.3.linux-amd64.tar.gz
#解压到/usr/local/lib/
sudo tar -zxvf go1.18.3.linux-amd64.tar.gz -C /usr/local/lib/
#建立软链接
sudo ln -s /usr/local/lib/go/bin/* /usr/bin/
# GOPATH需要设置成你自己的路径
sudo tee -a ~/.bashrc << EOF
export GOROOT=/usr/local/lib/go/
export GOPATH=/home/${USER}/sdk/go
export PATH=\$PATH:\$GOROOT/bin:\$GOPATH/bin
EOF
#开启Go模块代理(可选)
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

编译通过后,就可以启动Havoc Server了:

#启动Server
./havoc server --profile ./profiles/havoc.yaotl -v --debug

启动的配置文件中,可以看到默认的用户名和密码(5pider/password1234):
file

出现下面这个界面,就表示Server成功启动了:
file

成功启动Server后,就可以构建客户端了,构建并运行:

#构建客户端
make client-build
#运行客户端
./havoc client

没报错的话,应该会弹出现客户端的创建UI了:
file

使用Havoc

首先在启动后客户端UI界面,填写服务器信息:
Name:随便起
Host:服务器IP地址
Port:配置文件中的默认端口为40056
User/Password:对应profile配置文件中的用户名/密码
点击Connect,正确连接后就会进入Havoc界面(与CS的界面非常相似):
file

建立监听

点击View – Listeners设置监听器,然后在最下方找到Add点击添加:

创建listener时报错,查看github issue,有人同样有此问题,暂未获得官方解决方案

于是重新使用一个kali 2023.2,重新按照上面的安装方法再来一遍,顺利建立listener:

file

创建Payload

点击 Attack – Payload选择Windows Shellcode,点击Generate生成Shellcode,然后选择保存位置:

file

Harriet Payload 框架

安装:

git clone https://github.com/assume-breach/Home-Grown-Red-Team.git
cd Home-Grown-Red-Team/Harriet
bash setup.sh

使用:

bash Harriet.sh

file

选择1,建立EXE可执行文件,然后选择Fully-Automated AES Encryption,并指定刚刚生成的bin文件路径:
file

然后就会在Harriet目录下生成相应的.exe文件。

file

最终效果

接着我们将这个exe文件放入Windows10目标机,可以看到微软的Windows Defender显示一切正常:
file

运行exe文件后,Havoc成功显示目标主机“上线”:
file

以下是Havoc远控部分功能一览–文件浏览器:
file
进程一览:
file

最后来看看VirScan的检测结果,还是相当令人满意的:
file

如果觉得还不错的话,欢迎分享给更多喜爱的朋友~