feat: add crafted docker scripts and default profile
This commit is contained in:
@@ -0,0 +1 @@
|
||||
TUNNEL_TOKEN=
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
# ---- Phase 1: Compile ----
|
||||
FROM golang:1.23-bookworm AS builder
|
||||
|
||||
RUN apt update && apt -y install \
|
||||
git \
|
||||
nasm \
|
||||
mingw-w64 \
|
||||
pkg-config \
|
||||
wget \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Manually install upx
|
||||
RUN wget https://github.com/upx/upx/releases/download/v4.2.4/upx-4.2.4-amd64_linux.tar.xz \
|
||||
&& tar -xf upx-4.2.4-amd64_linux.tar.xz \
|
||||
&& mv upx-4.2.4-amd64_linux/upx /usr/local/bin/ \
|
||||
&& rm -rf upx-4.2.4-amd64_linux*
|
||||
|
||||
WORKDIR /build
|
||||
RUN git clone https://github.com/HavocFramework/Havoc.git .
|
||||
|
||||
# Patch strict go.mod and compile standalone
|
||||
RUN cd teamserver/ \
|
||||
&& chmod +x ./Install.sh \
|
||||
&& ./Install.sh \
|
||||
&& sed -i 's/go 1.21.0/go 1.23/' go.mod \
|
||||
&& go build -v -o /build/havoc-ts main.go
|
||||
|
||||
# ---- Phase 2: Execute ----
|
||||
FROM debian:bookworm-slim
|
||||
|
||||
RUN apt update && apt -y install \
|
||||
nasm \
|
||||
mingw-w64 \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Import only compiled binary and data folder
|
||||
COPY --from=builder /build/havoc-ts /app/havoc-ts
|
||||
COPY --from=builder /build/data /app/data
|
||||
|
||||
EXPOSE 40056
|
||||
|
||||
ENTRYPOINT ["/app/havoc-ts"]
|
||||
@@ -0,0 +1,33 @@
|
||||
services:
|
||||
havoc-teamserver:
|
||||
container_name: havoc-teamserver
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
volumes:
|
||||
- ./profiles:/app/profiles
|
||||
- havoc-data:/app/data
|
||||
ports:
|
||||
- "40056:40056"
|
||||
networks:
|
||||
- c2-network
|
||||
restart: unless-stopped
|
||||
command: ["server", "--profile", "/app/profiles/default.yaotl", "--debug"]
|
||||
|
||||
cloudflare-tunnel:
|
||||
container_name: havoc-cloudflare-tunnel
|
||||
image: cloudflare/cloudflared:latest
|
||||
restart: unless-stopped
|
||||
command: tunnel --no-autoupdate run --token ${TUNNEL_TOKEN}
|
||||
depends_on:
|
||||
- havoc-teamserver
|
||||
networks:
|
||||
- c2-network
|
||||
|
||||
networks:
|
||||
c2-network:
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
havoc-data:
|
||||
driver: local
|
||||
@@ -0,0 +1,63 @@
|
||||
Manifest = {
|
||||
Type = "Valid"
|
||||
Name = "Cloudflare Listener"
|
||||
}
|
||||
|
||||
Http = {
|
||||
Host = "0.0.0.0"
|
||||
PortBind = 80
|
||||
PortConn = 443
|
||||
|
||||
Hosts = [
|
||||
"c2.example.com" # replace with your actual host
|
||||
]
|
||||
}
|
||||
|
||||
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"
|
||||
}
|
||||
}
|
||||
|
||||
WebHook {
|
||||
Discord {
|
||||
# required
|
||||
Url = "https://discord.com/api/webhooks/<bla>/<bla>" # replace this with your webhook
|
||||
|
||||
# optional
|
||||
AvatarUrl = "https://raw.githubusercontent.com/HavocFramework/Havoc/main/assets/Havoc.png" # url to an image to use as an avatar
|
||||
|
||||
# optional
|
||||
User = "Havoc" # User name of the webhook bot
|
||||
}
|
||||
}
|
||||
|
||||
# For God's sake, change this...
|
||||
Operators {
|
||||
user "admin" {
|
||||
Password = "admin"
|
||||
}
|
||||
}
|
||||
|
||||
# this is optional. if you dont use it you can remove it.
|
||||
Service {
|
||||
Endpoint = "service-endpoint"
|
||||
Password = "service-password"
|
||||
}
|
||||
|
||||
Demon {
|
||||
Sleep = 2
|
||||
Jitter = 15
|
||||
|
||||
TrustXForwardedFor = true
|
||||
|
||||
Injection {
|
||||
Spawn64 = "C:\\Windows\\System32\\notepad.exe"
|
||||
Spawn32 = "C:\\Windows\\SysWOW64\\notepad.exe"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user