Planned features and improvements for Mugen.
This is a living document. Nothing here is a commitment.
v0.1 - The Fragrant Flower Blooms With Dignity ✓
Initial release. Establishes the framework foundation: full Havoc rebrand, new Linux agent, loot manager, Python API, Mugen UI.
Core / Framework
- Full Havoc -> Mugen rebrand - manga theme, name, Python module
- Themes - Mugen (sakura pink) + Havoc Classic (Dracula), switchable from navbar, persisted via QSettings
- Agent ID prefixes -
DN-XXXXXXXXfor Demon,TU-XXXXXXXXfor Tengu -
make rebuild- recompile teamserver + client without wiping cmake cache - DEADBEEF magic bytes randomization - unique value per server instance
- djb2 HASH_KEY randomization - unique value per payload build
- DLL export function name randomization - replaces the static
Startsignature per build
Tengu - Linux agent
- HTTP/HTTPS C2, configurable sleep + jitter, configurable User-Agent
- Base commands:
shell,sleep,exit,pwd,ls,cd,cat,download,upload,mkdir,rm,cp,chmod - Process management:
ps,kill - Identity:
whoami(uid/euid, groups, capabilities, sudo, TTY),id,env - Network recon:
netstat,arp,route,ifconfig- parsed from/proc, no external binary - Port scanner - TCP connect scan, IP or CIDR, 64 parallel connections
- Credential harvester - SSH keys, cloud tokens (AWS/GCP/Azure), shell history, git, docker, kube, shadow (
harvest) - Process memory scan -
/proc/<pid>/memwithout ptrace, credential pattern matching (procdump) - Keylogger - evdev raw input + X11 fallback, no external binary (
keylog) - In-memory ELF execution -
memfd_create, zero disk writes (memfd) - Persistence:
persist cron,persist systemd,persist bash - Screenshot: X11 (scrot), Wayland (grim), ImageMagick (import)
- SOCKS5 proxy over C2 channel
- Reverse port forward -
rportfwd add/rm/list, bidirectional relay without SOCKS5 - ELF BOF loader - x86_64 in-process execution with full BeaconAPI; trampoline support for PLT32 relocations outside 32-bit range (
inline-execute/bof) -
info- local session metadata, no round-trip -
help- tabular command list - DNS C2 transport - TXT record polling, base32-encoded frames in QNAME labels
- DoH C2 transport - DNS-over-HTTPS POST
/dns-query - TCP transport - outbound TCP, cross-platform pivoting (Windows Demon -> Linux Tengu)
- ChaCha20 application-layer encryption - all frames encrypted post-INIT on all transports
- Kill date + working hours - configured at payload build time
- Explorer UI - process list + file explorer in Qt client
- Live privilege escalation detection -
whoamiupdates euid-based username in session table and graph in real-time - Proxy support - HTTP/SOCKS5 at build time,
HTTP_PROXY/HTTPS_PROXYenv var fallback, NTLM/Basic auth - Sleep obfuscation - XOR-encrypts agent code pages (
PROT_NONE) during sleep, decrypts via helper thread with pre-resolved libc pointers - String obfuscation - per-build XOR key, pre-encrypted string constants injected at compile time via
SXORmacro - Privilege escalation recon - SUID/SGID scan,
sudo -l, writable PATH dirs, processes with non-zero capabilities (privesc)
Client UI
- Manga dark theme (sakura pink) + Havoc Classic (Dracula) - switchable, persisted
- Dashboard - 4 stat cards (live/dead/total), last 8 credentials, last 8 downloads
- Session table with live health countdown (color-coded green/yellow/red)
- Console search (Ctrl+F) - highlight, navigation, match counter, Escape to close
- Session table query filter - space-separated tokens, named fields (
type:TU health:live user:root) - Session notes & tags - free-form annotations, tag column in session table, SQLite persistence
- Loot Manager - screenshots with inline viewer (zoom, fit, save), downloads, credentials
- Map view - world map with geolocated agents, live (pink) / dead (grey) dots
- Desktop notifications on agent check-in (tray icon + toast)
- Session graph edge labels - links display
ListenerName [TYPE]for C2 edges andpivotfor SMB pivot edges
Python API
-
import mugen- full HavocFramework/Modules compatibility (import havocalso works) -
RegisterTenguCommand- Python commands scoped to Tengu sessions -
RegisterCommand(agent="Tengu")- alternative registration syntax -
Packerglobally available without import -
mugen.AddCredential()- log credentials from scripts into the Loot Manager - Module auto-loader - all
.pyfrom~/.mugen/modules/loaded at startup - Proxy support -
HTTP_PROXY/HTTPS_PROXYenv awareness, NTLM proxy auth (Demon + Tengu)
Teamserver
- HTTP/HTTPS listeners
- DNS listener
- DoH listener
- TCP listener (cross-platform pivoting)
v0.2 - My Dress-Up Darling - general improvements + operational capabilities
v0.1 and v0.2 are general improvement releases. Goal: make the framework solid and operational before tackling the big items.
Network evasion
- Malleable C2 profile for Tengu - configurable HTTP headers, URIs, user-agent per profile (like Demon)
- JA3/JA3S fingerprint randomization - rotate TLS client hello parameters to avoid static signatures
- Domain fronting -
Host:header override per profile, for Demon and Tengu
Tengu
- ELF BOF toolkit - Linux equivalents of SituationalAwareness BOFs (advanced /proc enumeration, capability dump, who)
- Advanced persistence -
LD_PRELOAD,/etc/profile.d(cron/systemd/bash already done in v0.1) - Lateral movement - SSH key harvesting + spray, pivot over existing SSH session
- Container awareness - cgroup namespace detection, Docker socket exposure, escape primitives
Demon
- Crystal Palace loader integration - modular evasion layer via Crystal-Havoc (Calvin Roth, MIT), decoupled from the Demon implant core; operators plug it in if they need it
- Custom reflective loader - replace the Havoc-inherited reflective loader with a clean Mugen implementation
- PIC shellcode conversion - full position-independent shellcode format, no import table; makes Demon compatible with any external loader, packer, or crypter
- ChaCha20 application-layer encryption - encrypt Demon frames before sending on all transports, matching Tengu
- In-memory .NET assembly execution -
execute-assemblystyle, fork-and-run in a sacrificial process, output via named pipe - Token vault - named in-memory token store, switch without returning to the source process, auto-impersonate at spawn,
make_tokenwithout LSASS
Arsenal Kit
- Artifact Kit - customizable shellcode runner/loader templates (EXE, DLL, shellcode format) selectable at build time
- Sleep Mask Kit - pluggable sleep obfuscation interface for Demon; swap the inherited Havoc implementation with a custom one per operator
Python API / Modules
- Linux module collection - SituationalAwareness, persistence, privesc helpers in Python via Tengu BOF API
-
mugen.AgentInfo(agent_id)- expose full session metadata to scripts -
mugen.OnTaskComplete(agent_id, callback)- callback triggered when a task completes -
mugen.AddContextMenu(label, handler)- add right-click entries from a script
Resource Manager
- Server-side file storage - upload executables, BOFs, and scripts to the teamserver once (
data/resources/), reference by name in commands - Download - retrieve any stored file from the teamserver to local disk via a save dialog
- Overwrite protection - uploading a file whose name already exists prompts for confirmation before replacing
- Search bar - real-time filter on name, kind, and date
- Reference by name -
bof,inline-execute,memfd, andexecute-assemblyaccept a bare filename; teamserver resolves the path automatically - Uploader column - tracks which operator uploaded each file
- SHA-256 integrity - hash computed server-side at upload, stored in DB, shown as tooltip on the filename
- Context menu - right-click any row for Download / Delete without requiring a prior selection
Client UI
- Split console view - two agent consoles side by side
- Actions button - quick-action menu next to the session table filter (Beacon Builder, Process List, File Explorer)
- Session table column customization - hide/reorder columns, persist layout
- Payload builder UX - live config preview, one-liner copy-paste generator
- Certificate pin viewer - display teamserver TLS fingerprint in the connection dialog
- Multi-select sessions + bulk actions - select multiple agents and send a command to all (shell, sleep, kill)
- Bulk actions expansion - extend multi-select beyond shell / sleep / kill: set tag, set alias, mark dead, sleep with jitter
- Persistent task history - all commands and output stored in SQLite, survive restart/reconnect; History tab per agent with search, comment, delete
- Task status - each task has a status (queued / sent / processing / completed / error) with timestamp and duration, visible in the agent console and as a per-agent list; operators can see whether a command is waiting on the next beacon or already done
- Tasks widget - View → Ops → Tasks: live table of every task across all agents (status, agent, alias, operator, command, duration); filterable, double-click opens the agent console
- Ops hub - View → Ops is a single tab with an internal navbar (Screenshots, Credentials, Downloads, Resources, Tasks, Networking); replaces the separate View entries
- Loot screenshots & downloads persistence - stored under data/loot/agents/, restored to Ops when an operator connects, survive teamserver restart
- Loot Download / Delete - Ops → Screenshots and Downloads: Download saves the file to the operator machine, Delete removes it from the teamserver; also in the row context menu
- Operator attribution - display which operator ran each command in a shared agent console
- Operator presence - show in real time which agents other operators are interacting with
- Multi-teamserver - connect to multiple teamservers simultaneously from a single client
- File transfer progress - progress bar and size estimate for uploads and downloads
- Agent aliasing - assign a short human-readable name to an agent (e.g.
dc01-system), shown in a dedicated ALIAS column next to the ID; stored teamserver-side, shared by all operators, survives reconnects and restarts - Alias in console tab titles - console tabs currently show
[TU-xxxx] user/hostand ignore the alias; when an alias is set, the tab should display it (e.g.[dc01-system] user/host) - Notes & tags teamserver-side - notes and tags are stored in the local client SQLite today, so other operators never see them; persist them on the teamserver like aliases, shared across operators and surviving reconnects
- Remove Map View - drop the geolocation map (ip-api.com); unused in operations and leaks the operator IP to a third party
- Split console reuse - split view currently creates new DemonInteracted widgets and only mirrors output; reuse the existing session consoles so local command history, focus, and task state stay in sync
- Agent timeline - chronological view of all tasks for a single agent; useful for post-engagement reconstruction
Networking (agent right-click)
- SOCKS5 proxy - right-click -> Networking -> SOCKS5 -> Start.../Stop, teamserver-side SOCKS5 listener tunneling through the agent; persists across restarts
- Port forwarding - right-click -> Networking -> Port Forward -> Add.../Remove..., bind a local port and forward through the agent; persists across restarts
- SOCKS manager window - Actions -> SOCKS Manager: global view of all active SOCKS5 tunnels (agent ID, port) with Stop button
- Port forward manager window - Actions -> Port Forward Manager: global view of all active port forwards (agent ID, bind port, remote host:port) with Remove button
v0.3 - Go API + start replacing Havoc code
Major goal: begin progressively replacing the Havoc-inherited source code with 100% Mugen code. Drop Python in favor of Go for all API and modules.
API - Python -> Go migration
- Drop Python API - full deprecation of the
mugenPython module andimport havoccompatibility - Go module API - compiled
.soplugins loaded dynamically by the teamserver, or native embedded modules - Port existing modules - rewrite current Python modules in Go (SituationalAwareness, persistence, privesc)
- Go plugin SDK - documentation and stable interface for writing Mugen modules in Go
Client UI refactor (exploratory)
- Sidebar navigation - replace the current mini-navbar with a persistent left sidebar for primary sections (sessions, callbacks, resource manager, loot, scripts, etc.); top navbar kept but stripped to Mugen menu, theme toggle, and About only - idea to be refined
Client stability
- WebSocket heartbeat - 30-minute keepalive ping to prevent idle disconnects by reverse proxies or the teamserver; the inherited Havoc client has no keepalive
- Null-safety in packet handler - guard against a race where a packet arrives before
Packageris initialized; currently crashes the client - Package memory management - packets allocated in
DecodePackageare never freed after dispatch; fix the progressive memory leak - Exception wrappers in WebSocket handlers - uncaught exceptions in the message handler crash the client; wrap and log instead
Security hardening
- Per-IP brute-force protection - exponential backoff on failed auth attempts (per IP, not per username to avoid lockouts), auto-decay after inactivity, memory-only
- Per-session unique key exchange - replace the inherited static/fingerprinted Havoc KEX with a per-agent HMAC-based derivation + HKDF key expansion; eliminates the static network signature shared across all Demon agents
Progressive Havoc code replacement
- Audit of inherited code - identify and document all parts of the codebase that remain unmodified Havoc code
- Teamserver refactoring - replace inherited handlers and data structures with a 100% Mugen architecture
- Demon agent protocol - document and stabilize the Demon binary protocol to enable a clean reimplementation
New agents
- macOS agent - Mach-O implant in C/ObjC, launchd persistence, Keychain access, TCC bypass primitives
- Cross-platform shellcode stager - minimal HTTP stager (~1KB) for Linux and macOS
Infrastructure
- Docker packaging -
docker-compose upto start a full teamserver + redirector stack - One-line install script (Debian/Ubuntu/Arch/Kali)
- CI/CD pipeline - GitHub Actions: build client, build teamserver, Go tests on every PR
- Integration tests - end-to-end automated: start teamserver, connect client, generate payload, verify check-in
Extensibility
- External agent SDK - documented protocol + Go library for implementing a custom agent
- gRPC transport - alternative to WebSocket for client-server communication
Ongoing / Maintenance
- Security audit of teamserver HTTP handler and authentication flow
- Performance: reduce client memory usage at high session count (> 500)
- Backward compatibility of
.yaotlprofiles across versions
Release names
| Version | Name | Status |
|---|---|---|
| v0.1 | The Fragrant Flower Blooms With Dignity | Released |
| v0.2 | My Dress-Up Darling | In progress |
| v0.3 | TBD | Planned |
