Fawkes is an entirely vibe-coded Mythic C2 agent. It started as an "I wonder" and has turned into a goal. My goal is to not write a single line of code for this agent, instead, exclusively producing it at a prompt.
I originally attempted to write the agent myself, but after cloning the example container, reading through mythic docs, watching the dev series youtube videos, and copying code from other agents like Merlin or Freyja, I decided I just didn't have time to develop my own agent. A prompt though, that I have time for.
Fawkes is a golang based agent with cross-platform capabilities. It supports Windows (EXE, DLL, and shellcode payloads), Linux (ELF binaries and shared libraries), and macOS (Mach-O binaries for Intel and Apple Silicon). 213 commands total: 113 cross-platform, 82 Windows-only, 21 Unix-only, 11 Linux-only, and 6 macOS-only (some commands have platform-specific implementations sharing one user-facing name, e.g. screenshot). Supports HTTP egress and TCP peer-to-peer (P2P) linking for internal pivoting.
Installation
To install Fawkes, you'll need Mythic installed on a remote computer. You can find installation instructions for Mythic at the Mythic project page.
(Windows only) Manage NTFS Alternate Data Streams — write, read, list, or delete hidden data streams. Supports text and hex-encoded binary. MITRE T1564.004.
(Windows only) Remote process injection. -method apc (default) queues shellcode via NtQueueApcThread into an alertable thread (use ts to find one). -method hwbp attaches via DebugActiveProcess, sets a DR0 hardware breakpoint on a target API (default ntdll!NtDelayExecution), and redirects Rip to the shellcode when the breakpoint fires — no TID required, no APC queue, no CreateRemoteThread (T1055.004, T1055).
(Windows only) Query and modify Windows audit policies. Disable security event logging before sensitive operations. Stealth mode disables detection-critical subcategories. Uses AuditQuerySystemPolicy API (T1562.002).
Forge Command Augmentation
Fawkes supports Mythic Forge command augmentation, which dynamically extends the agent's capabilities with external tool collections. When Forge is installed alongside Mythic, additional commands automatically appear in the Mythic UI for Fawkes callbacks — no agent rebuild required.
To register a source, run forge_register with commandName set to the plain source name (e.g., Rubeus, not forge_net_Rubeus) and remove set to false.
After registration, Forge downloads the tool binaries and creates augmented commands (e.g., forge_net_Rubeus, forge_bof_nanodump) that appear in the callback's command list.
Step 5: Verify
Existing callbacks automatically see Forge commands — no new payload needed. Test by running a registered tool:
Run autopatch or start-clr first (AMSI patching for .NET tools)
Select a Forge command (e.g., forge_net_Seatbelt)
Enter arguments (e.g., -group=system)
Execute — Forge translates the command to inline-assembly with the embedded tool binary
Usage Tips
For .NET tools (SharpCollection), run start-clr with autopatch first to initialize the CLR and patch AMSI — without this, Windows Defender may block assembly execution
For BOF tools (Sliver Armory), ensure BOFs are compiled for x64
No special build parameters are needed — Forge support is built into Fawkes's inline-execute and inline-assembly commands via the "Forge" parameter group
Forge commands work on existing callbacks without rebuilding the agent
When issuing Forge commands via the API, include payload_type: "forge" in the createTask mutation — without this, Mythic only searches the callback's own payload type
When building in shared (DLL) or windows-shellcode mode, the dll_exports build parameter controls which DLL exports are included:
Setting
Exports
Use Case
standard (default)
Run, Fire, VoidFunc
sRDI shellcode, rundll32, generic loaders
full
Standard + DllRegisterServer, DllUnregisterServer, ServiceMain, DllGetClassObject, DllCanUnloadNow
regsvr32, svchost service, COM hijack
Execution methods with full exports:
Export
Execution
MITRE
DllRegisterServer
regsvr32 /s fawkes.dll
T1218.010
DllUnregisterServer
regsvr32 /u /s fawkes.dll
T1218.010
ServiceMain
svchost.exe DLL service (Windows only)
T1543.003
DllGetClassObject + DllCanUnloadNow
COM hijack InprocServer32
T1546.015
Binary Inflation
Fawkes supports optional binary inflation at build time. This embeds a block of repeated bytes into the compiled agent, which can be used to increase file size or lower entropy scores.
Two build parameters control this:
inflate_bytes - Hex bytes to embed (e.g. 0x90 or 0x41,0x42)
inflate_count - Number of times to repeat the byte pattern
The byte pattern is repeated inflate_count times, so the total added size is length(byte_pattern) * inflate_count.
Quick reference for sizing:
inflate_count
Single byte (e.g. 0x90)
Two bytes (e.g. 0x41,0x42)
1,000
1 KB
2 KB
10,000
10 KB
20 KB
100,000
100 KB
200 KB
1,000,000
1 MB
2 MB
3,000,000
3 MB
6 MB
10,000,000
10 MB
20 MB
When inflation is not configured, only 1 byte of overhead is added to the binary.
PE Resource Embedding (Windows Only)
Windows PE binaries contain metadata resources — version info, icons, and UAC manifests — that are visible in File Properties, Task Manager, and Explorer. Default Go binaries have none of this metadata, which is a strong detection signal for security tools and analysts.
Fawkes supports embedding PE resources at build time to impersonate legitimate Windows binaries:
Presets (10 common Windows binaries with real version info):
notepad, svchost, cmd, explorer, msiexec, dllhost, rundll32, conhost, taskhostw, RuntimeBroker
Individual fields override preset values. When no PE resource parameters are set, the binary is unchanged from default Go output.
Opsec Features
Artifact Tracking
Fawkes automatically registers artifacts with Mythic for opsec-relevant commands. Artifacts appear in the Mythic UI under the Artifacts tab, giving operators a clear picture of all forensic indicators generated during an engagement.
remote-service (list/query/create/start/stop/delete/modify-path/trigger/dll-sideload via SVCCTL RPC)
Logon
make-token
Token Steal
steal-token, getsystem
Read-only commands (ls, ps, cat, env, etc.) do not generate artifacts.
Credential Vault Integration
Credential-harvesting commands automatically report discoveries to Mythic's Credentials store, making them searchable and exportable from the Mythic UI.
Command
Credential Type
What's Reported
hashdump
hash
SAM NTLM hashes (Windows), MSV1_0 NT/LM/SHA hashes from in-situ LSASS walk (Windows, insitu-full), Kerberos TGTs and service tickets in .kirbi format (Windows, tickets), /etc/shadow hashes (Linux), PBKDF2 hashes (macOS)
Shadow hashes, cloud env vars, sensitive env vars, M365 OAuth/JWT tokens, live browser cookies/storage via CDP
credential-prompt
plaintext
Dialog-captured credentials (macOS/Windows/Linux)
Keylog Tracking
The keylog command integrates with Mythic's Keylogs feature. When keystrokes are returned via stop or dump, they are automatically parsed by window title and sent to Mythic's keylog tracker with user attribution. Keylogs are searchable in the Mythic UI by window title, user, or keystroke content.
Token Tracking
The make-token and steal-token commands register tokens with Mythic's Callback Tokens tracker. This provides visibility into which tokens are associated with each callback, including the impersonated user identity and source process. The rev2self command automatically removes tracked tokens when impersonation is dropped.
TLS Certificate Verification
Control how the agent validates HTTPS certificates when communicating with the C2 server. Configured at build time via the tls_verify parameter:
Mode
Description
none
Skip all TLS verification (default, backward compatible)
system-ca
Validate certificates against the OS trust store
pinned:<sha256>
Pin to a specific certificate fingerprint (SHA-256 hex). Agent rejects connections if the server cert doesn't match.
Certificate pinning prevents MITM interception of agent traffic even if an attacker controls a trusted CA.
TLS Fingerprint Spoofing (JA3)
Go's standard TLS stack produces a distinctive JA3 hash that network security tools can identify as non-browser traffic. The tls_fingerprint build parameter uses uTLS to spoof the TLS ClientHello, producing a browser-matching JA3 fingerprint.
Fingerprint
Description
chrome
Chrome/Chromium (default) — most common browser, best for blending
Add client certificate authentication to the HTTP C2 profile. When configured, the agent presents a client certificate during TLS handshake, enabling the C2 server to verify agent identity. This prevents passive HTTPS interception and proxy MITM attacks.
Parameter
Description
mtls_cert
PEM-encoded client certificate
mtls_key
PEM-encoded client private key
The cert/key are base64-encoded at build time, XOR-encrypted if string obfuscation is enabled, and stored in the AES-256-GCM config vault at runtime. Combines with existing TLS verification modes and JA3 fingerprint spoofing.
Fallback C2 URLs
Multiple C2 callback URLs with automatic failover. If the primary callback host is unreachable, the agent transparently cycles through fallback URLs before applying backoff.
Same port and encryption as primary. Remembers last successful URL. Works with config vault and XOR obfuscation.
Environment Keying / Guardrails
Prevent the agent from executing on unauthorized systems. Configured at build time — the agent silently exits before making any network contact if checks fail. No logging, no artifacts, no C2 traffic.
Parameter
Type
Description
env_key_hostname
Regex
Hostname must match (e.g., WORKSTATION-\d+ or .*\.contoso\.com)
env_key_domain
Regex
Domain must match (e.g., CONTOSO or .*\.local)
env_key_username
Regex
Username must match (e.g., admin.* or svc_.*)
env_key_process
String
Process name that must be running (e.g., outlook.exe)
env_key_cpuid
Regex
CPU brand string must match (e.g., .*Intel.*i7-12700.* or .*AMD.*5950X.*). Prevents execution in sandboxes with different CPU models.
env_key_derive
Choice
Encrypt C2 config with key derived from target host properties. Options: hostname, domain, username, hostname+domain, hostname+domain+username. Wrong host = AES decrypt fails = silent exit. Stronger than regex match — config values never appear in binary.
All patterns are case-insensitive and anchored to match the full value. Multiple keys can be combined — all must pass. Invalid regex patterns fail closed (agent exits). Leave empty to skip a check.
Environmental Key Derivation (env_key_derive): When set, all sensitive C2 config (callback host, UUID, encryption key, URIs, proxy settings, etc.) is AES-256-GCM encrypted at build time using a key derived from the target's environment. At runtime, the agent re-derives the key from its own environment — if it doesn't match (wrong host/domain/user), decryption fails and the agent exits silently. This is stronger than regex matching because the config values are never present in the binary in any form. Requires the corresponding env_key_* values to contain the EXACT target values (not regex patterns). Stacks with obfuscate_strings (XOR layer applied first, then AES-GCM).
C2 String Obfuscation
Enable the obfuscate_strings build parameter to XOR-encode all C2 config strings (callback host, URIs, user agent, encryption key, UUID) at build time with a per-build random 32-byte key. Prevents trivial IOC extraction via strings on the binary. Decoded at runtime. Cross-platform.
BlockDLLs for Child Processes
Enable the block_dlls build parameter to apply PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALWAYS_ON to all child processes spawned by the agent (run, powershell commands). Prevents EDR from injecting monitoring DLLs into spawned processes. Uses STARTUPINFOEX with UpdateProcThreadAttribute. Windows only.
Parent PID Spoofing for Subprocesses
Set config -action set -key default_ppid -value <PID> at runtime to make all child processes (run, powershell) appear as children of a legitimate process (e.g., explorer.exe). Defeats parent-child process relationship detection by EDR. Combines with BlockDLLs when both are active. Uses UpdateProcThreadAttribute(PROC_THREAD_ATTRIBUTE_PARENT_PROCESS). Disable with config -action set -key default_ppid -value 0. Windows only (T1134.004).
Auto-Patch ETW/AMSI
Enable the auto_patch build parameter to automatically patch EtwEventWrite and AmsiScanBuffer at agent startup. This prevents ETW-based detection and AMSI scanning before any agent activity occurs — no manual command required. Windows only (no-op on Linux/macOS).
Self-Deletion
Enable automatic binary deletion at startup via the self_delete build parameter. Once the agent starts running, it removes its own file from disk — eliminating the primary forensic artifact.
Linux/macOS: Uses os.Remove() — the running process continues via the in-memory inode mapping. The file disappears from disk immediately.
Windows: Uses the NTFS stream rename technique — renames the default :$DATA stream then deletes the file entry. No child process spawned.
The binary is deleted after environment key checks pass but before network activity begins.
Process Masquerading (Linux)
Set the masquerade_name build parameter to change the agent's process name on Linux. Uses prctl(PR_SET_NAME) to modify /proc/self/comm, which is displayed by ps, top, and htop. Max 15 characters.
Combined with self-delete, the agent appears as a legitimate kernel thread or service with no file on disk.
Sleep Memory Guard Pages
Enable sleep_guard_pages (requires sleep_mask=true) to apply VirtualProtect(PAGE_NOACCESS) on encrypted vault memory during sleep cycles. After the sleep mask encrypts sensitive data (AES-256-GCM) and zeros originals, guard pages move the vault to dedicated VirtualAlloc'd memory and mark it NO_ACCESS. EDR memory scanners, ReadProcessMemory, WinDbg, and Process Hacker get STATUS_ACCESS_VIOLATION when trying to read the vault. Pages are restored to PAGE_READWRITE on wake before decryption. On Linux/macOS, guard pages use mmap(MAP_ANON) + mprotect(PROT_NONE) — probing triggers SIGSEGV.
The sleep vault key is hardware-bound via HKDF-SHA256: a random seed is mixed with a SHA-256 hash of the machine's CPU brand string and UUID. If someone extracts the vault blob from a memory dump and attempts decryption on different hardware, the key derivation produces a different key.
Call Stack Spoofing
Enable stack_spoof to spoof the sleeping thread's call stack, defeating EDR thread-scanning tools (Hunt-Sleeping-Beacons, Moneta, CrowdStrike).
Windows (requires indirect_syscalls=true): A dedicated native thread performs NtDelayExecution with fake return addresses pointing to kernel32!SleepEx, kernel32!BaseThreadInitThunk, and ntdll!RtlUserThreadStart — the standard thread initialization chain that EDR expects.
Linux amd64: A child process is created via clone(CLONE_VM) with its own 291-byte machine code stub in anonymous mmap'd memory. The child calls nanosleep directly via raw syscall — no Go runtime or agent code addresses appear on the sleeping thread's stack. Signal handlers are reset to SIG_DFL in the child, and PR_SET_PDEATHSIG ensures the child dies when the parent exits.
macOS arm64: A native pthread is spawned with a 140-byte ARM64 machine code stub in anonymous mmap'd memory. The thread uses __ulock_wait/__ulock_wake for synchronization with the Go runtime and calls nanosleep via raw syscall — the sleeping thread's stack shows only the anonymous stub and kernel frames, no Go runtime or agent code.
Custom HTTP Headers
All headers defined in the Mythic HTTP C2 profile configuration are applied to every request. Beyond User-Agent (always supported), operators can add headers like Accept-Language, Referer, Cookie, or X-Forwarded-For to blend C2 traffic with legitimate web traffic patterns.
Domain Fronting
Set the host_header build parameter to override the HTTP Host header. This enables domain fronting: route traffic through a CDN (e.g., CloudFront, Azure CDN) while the Host header targets your actual C2 domain. To network defenders, the traffic appears to go to the CDN's IP address.
Proxy Support
Set the proxy_url build parameter to route agent traffic through an HTTP or SOCKS proxy. Useful for operating in corporate networks with mandatory proxy servers.
Authenticated proxies: Set proxy_user and proxy_pass for Basic authentication. For enterprise proxies requiring Windows domain authentication, also set proxy_domain (e.g., CORP) to enable NTLM authentication. The NTLM handshake (Type1→Type2→Type3) is performed automatically during the CONNECT tunnel establishment.
System proxy detection (Windows): When proxy_url is not set, the agent queries WinHTTP for system proxy settings including PAC/WPAD auto-detection.
Build Path Stripping (-trimpath)
All builds use Go's -trimpath flag to strip local filesystem paths from the compiled binary. Without this, paths like /home/user/project/... and /go/pkg/mod/... leak into the binary through panic traces and runtime metadata. Combined with -s -w (symbol stripping) and empty -buildid, this minimizes forensic information in the binary. Garble builds already handle this; -trimpath covers non-garble builds.
YARA Post-Build Scanning
After compilation, the built payload is automatically scanned against a set of YARA rules that model common defender detection patterns. Results are shown in the Mythic build output as an informational step — the scan never fails the build.
Detection categories scanned:
Go binary identification and symbol leaks
Leaked build/development paths
Mythic/C2 framework string indicators
Windows injection API names
Credential access API names
Defense evasion API patterns
Persistence mechanism strings
Plaintext C2 configuration
This helps operators understand detection risk and choose appropriate opsec options (garble, obfuscate_strings, etc.) before deploying.
The HTTP profile calls back to the Mythic server over the basic, non-dynamic profile. This is the default egress profile — the agent polls Mythic for tasking over HTTP/HTTPS.
Malleable features:
URI randomization:get_uri and post_uri support tokens that are resolved per-request:
{rand:N} — N random hex characters (e.g., /api/{rand:8} → /api/a3f82b1c)
{int:M-N} — random integer in range (e.g., /v{int:1-3}/status → /v2/status)
Content-Type cycling: Set the content_types build parameter to a comma-separated list (e.g., application/json,text/plain,application/x-www-form-urlencoded). The agent cycles through them round-robin. Default: application/x-www-form-urlencoded.
User-Agent rotation: Set the user_agent_pool build parameter to a newline-separated list of User-Agent strings. The agent rotates through them per-request, eliminating the static UA fingerprint. Default: single Chrome 134 UA.
Exponential backoff: On consecutive C2 failures, the agent doubles its sleep interval (capped at 5 minutes). Normal interval is restored on successful contact.
HTTP/2 multiplexing: Automatic h2 negotiation over HTTPS. Multiplexes requests on a single connection, matching browser behavior. Transparent h1 fallback.
Forward secrecy: ECDH X25519 key rotation every N check-ins (key_rotation_interval). Derives fresh AES-256 keys via HKDF-SHA256, zeroes old keys. Limits blast radius of key compromise.
Replay protection: Monotonic sequence numbers in every message (inside encrypted envelope). Prevents captured request/response replay.
Domain fronting: Set host_header to override the HTTP Host header.
Automatic failover: Configure fallback_hosts for resilient C2.
TCP P2P Profile
The TCP profile enables peer-to-peer (P2P) agent linking for internal pivoting. A child agent listens on a TCP port or Windows named pipe and waits for a parent agent to connect via the link command. All tasking and responses are routed through the parent's egress channel (HTTP), so the child never contacts Mythic directly.
Architecture:
root@kitploit:~
Mythic Server ←──HTTP──→ Egress Agent (HTTP profile)
│
├──TCP──→ Child Agent A (TCP profile, port 7777)
├──TCP──→ Child Agent B (TCP profile, port 8888)
└──SMB──→ Child Agent C (named pipe, \\host\pipe\msrpc-f9a1)
Build parameters:
Parameter
Description
Default
tcp_bind_address
Address and port for the child to listen on (e.g., 0.0.0.0:7777)
(empty = HTTP mode)
namedpipe_bind_name
Named pipe name for the child to listen on (e.g., msrpc-f9a1). Windows only.
(empty)
When tcp_bind_address or namedpipe_bind_name is set, the agent starts in P2P listener mode instead of HTTP egress mode.
Usage workflow (TCP):
Build a child agent with the TCP C2 profile and tcp_bind_address set (e.g., 0.0.0.0:7777)
Deploy the child to an internal host (no internet access required)
From an egress agent (HTTP profile), run: link -host <child_ip> -port 7777
Mythic creates a new callback for the child — all tasking flows through the egress agent
To disconnect: unlink -connection_id <uuid>
Usage workflow (Named Pipe):
Build a child agent with the TCP C2 profile and namedpipe_bind_name set (e.g., msrpc-f9a1)
Deploy the child to an internal Windows host
From an egress agent, run: link -connection_type namedpipe -host <child_ip> -pipe_name msrpc-f9a1
The connection uses SMB (port 445), blending with normal Windows file sharing traffic
To disconnect: unlink -connection_id <uuid>
Encryption: AES-256-CBC with HMAC-SHA256 (same as HTTP profile). Wire protocol uses 4-byte length-prefixed framing over TCP or named pipe.
Relink support: If a parent disconnects (e.g., via unlink or parent agent dies), the child agent caches its checkin data and waits for a new parent connection. When a new egress agent runs link, the child automatically re-registers with Mythic as a new callback. No manual intervention needed.
Multiple children: An egress agent can link to multiple TCP and named pipe children simultaneously. Each child operates independently with its own callback.
OPSEC notes: Named pipe connections use SMB (port 445) and generate fewer network-level indicators than raw TCP, but Sysmon Event ID 17/18 (PipeEvent) and ETW events from Microsoft-Windows-SMBClient will be logged if configured.
Discord C2 Profile
The Discord profile uses a Discord bot and channel as a covert C2 transport. The agent communicates with Mythic by posting encrypted messages to a Discord channel, where a server-side bot relays them to Mythic via gRPC push C2.
Checkin: Agent posts an encrypted checkin message to the Discord channel. The server-side bot picks it up, forwards to Mythic, and posts the response back to the channel. The agent polls until it finds the response.
Tasking: Agent sends a get_tasking request via Discord. With push C2, tasks may also be pushed independently to the channel. The agent collects all matching messages per poll cycle.
Responses: Agent posts task output to the channel. Large responses (>1950 chars) are sent as file attachments.
Build parameters:
Parameter
Type
Description
Default
discord_token
String
Discord bot token for API authentication
(required)
bot_channel
String
Discord channel ID for message exchange
(required)
callback_interval
String
Seconds between tasking polls
10
callback_jitter
String
Jitter percentage (0-100)
23
message_checks
String
Max polling attempts per exchange
20
time_between_checks
String
Seconds between poll attempts
5
AESPSK
String
Pre-shared AES-256 encryption key
(auto-generated)
Encryption: AES-256-CBC with HMAC-SHA256 (same scheme as HTTP profile). Sensitive configuration (bot token, channel ID) is encrypted in memory after initialization using AES-256-GCM vault.
Push C2 support: The Discord C2 server uses Mythic's push C2 (persistent gRPC stream). Tasks may arrive asynchronously between poll cycles. The agent implements:
Pre-poll sweep to catch pushed tasks from previous cycles
Catch-up polling (3 additional polls after first match) for rapid task delivery
PostResponse retry on transient failures
Rate limiting: Respects Discord API rate limits with automatic retry and exponential backoff (up to 5 retries). The User-Agent is hardcoded to DiscordBot (https://github.com, 1.0) as required by the Discord API.
Add the bot to a server with permissions: Send Messages, Read Message History, Attach Files, Manage Messages
Note the bot token and target channel ID
Configure the Discord C2 server container with the same bot token and channel ID in its config.json
Known limitations:
"Last Checkin" in Mythic shows as "Streaming Now" while the push C2 stream is active (inherent to push C2 mode). After ~180s of agent inactivity, Mythic shows the real last activity timestamp.
Discord API rate limits may introduce latency during high-frequency tasking
Bot token is a critical OPSEC asset — compromise exposes the C2 channel
Request AS-REP tickets for accounts without pre-authentication and extract hashes in hashcat format for offline cracking. Auto-enumerates via LDAP. Cross-platform (T1558.004).
av-detect
av-detect [-deep true]
Detect installed AV/EDR/security products by scanning running processes against a 130+ signature database. With --deep, also checks kernel modules, systemd units, and config directories for installed-but-not-running products (Linux). Reports product, vendor, type, and PID. Cross-platform.
autopatch
autopatch <dll_name> <function_name> <num_bytes>
(Windows only) Automatically patch a function by jumping to nearest return (C3) instruction. Useful for AMSI/ETW bypasses.
(Windows only) Manage BITS transfer jobs for persistence and stealthy file download. Create, suspend, resume, complete jobs and set notification commands for persistence. Jobs survive reboots (T1197).
View or modify runtime agent configuration, or self-update the agent binary. show/set: sleep, jitter, kill date, working hours. update: download new payload from Mythic, verify, launch, and exit current agent. Cross-platform (T1105).
container-detect
container-detect
Detect container runtime and environment (Docker, K8s, LXC, Podman, WSL). Checks escape vectors like Docker sockets and K8s service accounts. Cross-platform (T1082, T1497.001).
Test credentials against SMB, WinRM, and LDAP on target hosts. verify-all tests all vault credentials against discovered hosts in parallel. Cross-platform (T1110.001, T1078).
(Windows only) Execute commands, upload files, or stage-and-execute on remote hosts via DCOM. check validates RPC/DCOM prerequisites. upload: transfer files via certutil/PowerShell staging. exec-staged: upload then execute with auto-cleanup. Six COM objects. MITRE T1021.003, T1570.
(Linux/macOS only) List, add, or remove cron jobs for persistence. Supports raw cron entries or program+schedule syntax.
download
download <path> or download {"path": "/file", "compress": true}
Download a file or directory from the target. Files >1MB auto-compressed with gzip (configurable). Directories auto-zipped. SHA256 hash verification. Chunked transfer, file browser integration.
drives
drives
List available drives/volumes and mounted filesystems with type, label/device, and free/total space.
(Windows only) Enumerate access tokens across all processes. list shows PID/user/integrity/session for each process. unique groups by user with process counts. Auto-enables SeDebugPrivilege (T1134, T1057).
List, get, set, or unset environment variables for the agent process. Changes are inherited by child processes. Cross-platform.
env-scan
env-scan [-pid <PID>] [-filter <pattern>]
Scan process environment variables for leaked credentials, API keys, and secrets. 35+ detection patterns across cloud, database, CI/CD, and crypto categories. Linux + macOS (T1057, T1552.001).
Manage system event logs. Windows: wevtapi.dll channels. Linux: journald units and syslog files. macOS: Unified Logging (os_log) subsystems/processes. List sources, query events, clear/vacuum logs, get info. MITRE T1070.001, T1562.002.
execute-memory
execute-memory -arguments 'arg1 arg2' -timeout 60
Execute a native binary from memory. Linux: memfd_create (no disk write). macOS: temp file with ad-hoc codesign. Windows: temp file with immediate cleanup. All platforms remove artifacts after execution. MITRE T1620.
Get or set file attributes — hidden, readonly, system (Windows); immutable, append, nodump (Linux); hidden, immutable (macOS). Omit -attrs to view current flags. Cross-platform (T1564.001, T1222).
Identify file types by magic bytes (35+ signatures). Single file or directory scanning. Detects executables, archives, documents, images, databases, media, and more. Cross-platform (T1083).
Search for files by name, size, date, permissions, or owner. Find SUID binaries, world-writable files, files owned by specific users. Cross-platform (T1083).
Sweep hosts to discover where credentials have admin access via SMB (C$ share) and/or WinRM. auto-move: automated subtask chain — find admin hosts then laterally move to each via psexec/wmi. Supports CIDR, IP ranges, PTH, parallel scanning (T1021.002, T1021.006).
Search SYSVOL for GPP XML files with encrypted cpassword attributes and decrypt using the published AES key (MS14-025). Cross-platform via SMB (T1552.006).
(Windows, Linux, macOS) Extract local account password hashes. Windows: NTLM hashes from SAM registry (requires SYSTEM); insitu: enumerate active logon sessions via in-process LSA APIs (requires admin); insitu-full: open lsass.exe with PROCESS_VM_READ, sigscan lsasrv.dll for LogonSessionList, walk the linked list, overlay the KIWI_MSV1_0_LIST_63 layout on each node to parse LUID/UserName/Domain/AuthPackage/LogonType/Credentials-pointer, walk the per-AuthPackage credential chain at credentials_ptr to capture each KIWI_MSV1_0_PRIMARY_CREDENTIAL_ENC envelope, sigscan LsaInitializeProtectedMemory_Internal to recover the IV / h3DesKey / hAesKey BCrypt key globals plus the raw 16-byte IV / 24-byte 3DES / 32-byte AES key bytes, AES-256-CFB / 3DES-CBC decrypt every captured ciphertext blob (selected per-blob by len % 8), and overlay the KIWI_MSV1_0_PRIMARY_CREDENTIAL_10_NEW layout to extract NT/LM/SHA hashes — emitted in username:rid:lm:nt::: format compatible with the dump-action ProcessResponse credential-vault hook (Phase 2B + 2C-i + 2C-ii-a + 2C-ii-b + 2C-ii-c, Win10 21H2 — Win11 23H2, requires admin). Linux: /etc/shadow hashes with hash-type identification (requires root). macOS: Directory Services PBKDF2 hashes from user plists (requires root). auto-spray: dump hashes then automatically spray them via cred-check against target hosts. MITRE T1003.002, T1003.008.
(Windows only) Load a native PE (DLL) from memory into the current process. Manual PE mapping with section copying, relocation fixups, import resolution, and DllMain invocation. Optionally call exported functions (T1620).
(Linux only) Linux firewall enumeration and management via iptables/nftables/ufw. IP forwarding, connection tracking, rule listing and modification. MITRE T1562.004.
jobkill
jobkill -id <task-uuid>
Stop a running task by task ID. Use jobs to list running tasks. Cross-platform.
jobs
jobs
List currently running tasks with task ID, command name, and duration. Cross-platform.
jxa
jxa -code '<script>' [-timeout 60] or jxa -file /path/to/script.js
(macOS only) Execute JavaScript for Automation (JXA) scripts with ObjC bridge access to Foundation, AppKit, Security frameworks. Supports inline code and file input (T1059.007).
(macOS only) Install, remove, or list LaunchAgent/LaunchDaemon persistence. Creates plist with RunAtLoad+KeepAlive.
link
link -host <ip> -port <port> [-connection_type tcp|namedpipe] [-pipe_name <name>]
Link to a P2P agent via TCP or named pipe for internal pivoting. Named pipe mode uses SMB port 445 for stealthier Windows traffic. Cross-platform TCP, Windows-only named pipe (T1572).
(Linux only) List, read, clear, or tamper with Linux log files and binary login records (wtmp/btmp/utmp). Supports selective line removal and secure shredding (T1070.002).
(Windows only) Create a token from credentials: impersonate it, spawn a process, or auto-verify (impersonate then whoami + getprivs chain) (T1134.002).
Search process memory for byte patterns with hex dump output. Windows: VirtualQueryEx/ReadProcessMemory. Linux: /proc/pid/maps+mem. macOS: mach_vm_region/mach_vm_read (self-scan only). Supports string and hex patterns. Cross-platform (T1005, T1057).
mount
mount [-filter <substring>] [-fstype <type>]
List mounted filesystems with device, mount point, type, and options. Supports filtering by name or filesystem type. Cross-platform (T1082).
mv
mv <source> <destination>
Move or rename a file from source to destination.
named-pipes
named-pipes [-filter <pattern>]
(Windows, Linux, macOS) List named pipes (Windows), Unix domain sockets and FIFOs (Linux/macOS) for IPC discovery. Supports substring filtering (T1083).
Manage local user accounts and group membership. Windows: netapi32 API. Linux: useradd/userdel/usermod/chpasswd. macOS: dscl/dseditgroup. Disable/enable/lockout for T1531 ransomware simulation. Cross-platform (T1136.001, T1098, T1531).
List active network connections and listening ports with protocol, state, PID, and process name. Supports filtering by state, protocol, port, and process ID. Cross-platform.
(Windows only) Remove EDR inline hooks from DLLs by restoring the .text section from a clean copy. Supports 5 DLLs or all. check reports hooks without modification. knowndlls source uses \KnownDlls\ section objects (avoids disk I/O — more OPSEC-friendly) (T1562.001).
syscalls
syscalls [-action status|list|init]
(Windows only) Indirect syscall resolver. Parses ntdll exports to resolve Nt* syscall numbers and generates stubs that jump to ntdll's syscall;ret gadget. When active, injection commands bypass userland API hooks (T1106).
(Windows only) Named pipe impersonation for privilege escalation. Create pipe server, wait for privileged client connection, impersonate token. Requires SeImpersonatePrivilege (T1134.001).
printspoofer
printspoofer [-timeout 15]
(Windows only) PrintSpoofer privilege escalation — SeImpersonate to SYSTEM via Print Spooler. Creates named pipe, triggers spooler connection via OpenPrinterW, impersonates SYSTEM token. One-step NETWORK SERVICE → SYSTEM (T1134.001).
pkg-list
pkg-list [-filter <substring>]
List installed packages and software. Enumerates dpkg/rpm/apk (Linux), Homebrew/Applications (macOS), or registry Uninstall keys (Windows). Supports name filtering. Cross-platform (T1518).
TCP connect scan for network service discovery. Supports CIDR, IP ranges, and port ranges. Cross-platform.
powershell
powershell <command> [--encoded]
(Windows only) Execute a PowerShell command via powershell.exe with OPSEC-hardened flags (abbreviated, randomized). Supports encoded command mode to hide args from process tree.
(Windows only) Parse and manage Windows Prefetch files. List executed programs, parse run history (up to 8 timestamps), delete specific entries, or clear all. Supports MAM-compressed files (T1070.004).
(Windows only) Query or set process mitigation policies (DEP, ASLR, CIG, ACG, CFG). Set CIG to block unsigned DLL loading (EDR defense). MITRE T1480.
process-tree
process-tree [-pid <PID>] [-filter <name>]
Display process hierarchy as a tree with parent-child relationships. Helps identify injection targets and security tools. Cross-platform (T1057).
procdump
procdump [-action lsass|dump|search] [-pid <PID>]
Dump process memory. Windows: MiniDumpWriteDump with LSASS auto-discovery. Linux: /proc/pid/mem region dumping. Search action finds credential-holding processes. Uploads to Mythic and cleans from disk. MITRE T1003.001, T1003.007.
proxy-check
proxy-check [-test_url <URL>]
Detect proxy settings from environment variables, OS config (registry, config files), and Go transport. Optional connectivity test. Cross-platform (T1016).
(Linux only, amd64/arm64) Process injection via ptrace — PTRACE_ATTACH/POKETEXT/SETREGS with register and code restore. Yama ptrace_scope pre-check with actionable guidance. Check mode reports ptrace_scope, capabilities, and candidates (T1055.008).
pty
pty [-shell /bin/bash] [-rows 24] [-cols 80]
(Linux/macOS) Start an interactive PTY shell session via Mythic's interactive tasking. Full terminal emulation with bidirectional I/O (T1059).
Execute a command as a different user. Windows: CreateProcessWithLogonW (supports /netonly). Linux/macOS: setuid as root, or sudo -S with password. Cross-platform (T1134.002).
Capture a single screenshot or record continuous screenshots at intervals. Uploads as PNG. record mode: configurable interval/duration/max_frames, stoppable via jobkill. Windows: GDI. macOS: screencapture. Linux: X11/Wayland auto-detect. Cross-platform (T1113).
SMB2 file operations on remote shares — list, browse, read/write/delete, push for lateral tool transfer, exfil for data exfiltration, taint for planting files. share-perms: test read/write access on all shares. share-spider: recursive directory listing with depth/extension filters. share-search: find sensitive files across shares using built-in or custom patterns. NTLM auth + pass-the-hash. Cross-platform (T1021.002, T1039, T1080, T1135, T1550.002, T1570, T1048.003).
service
service -action <query|start|stop|restart|create|delete|list|enable|disable|edr-enum|edr-kill> -name <name> [-binpath <path>] [-confirm EDR-KILL]
sleep [seconds] [jitter] [working_start] [working_end] [working_days] or sleep -interval 60 -jitter 30 -jitter_profile normal
Set callback interval, jitter, working hours, and jitter distribution profile (uniform/normal/exponential). Normal distribution clusters near interval; exponential mimics bursty human patterns.
Start, stop, view stats, or set bandwidth for SOCKS5 proxy. Supports TCP CONNECT and UDP ASSOCIATE (RFC 1928) relay for DNS/UDP tools through the proxy. Optional per-connection bandwidth limiting in KB/s. Stats shows active connections, bytes TX/RX, recent history.
Password spray against AD via Kerberos pre-auth, LDAP bind, or SMB auth. SMB supports pass-the-hash. Lockout-aware with configurable delay/jitter. Cross-platform (T1110.003, T1550.002).
(Windows only) Initialize CLR v4 or execute .NET assemblies. execute-assembly action auto-patches AMSI+ETW and runs assembly in one step (like CS execute-assembly). Manual mode with -amsi_patch/-etw_patch for fine control.
(Windows only) Named token vault — save, list, restore, remove, and view identity transition history. Enables quick switching between stolen/created identities without re-stealing (T1134.001).
suspend
suspend -action <suspend|resume> -pid <PID>
Suspend or resume a process. Tactical EDR/AV pause during sensitive ops. Windows: NtSuspendProcess/NtResumeProcess. Linux/macOS: SIGSTOP/SIGCONT. Cross-platform (T1562.001).
Read first or last N lines/bytes of a file without transferring entire contents. Ring buffer for efficient tail, reverse-seek for large files. Cross-platform (T1005, T1083).
tcc-check
tcc-check [-service <filter>]
(macOS only) Enumerate TCC (Transparency, Consent, and Control) permissions. Discover which apps have camera, microphone, screen recording, full disk access. Groups by service with allowed summary (T1082).
touch
touch -path <file> [-mkdir true]
Create an empty file or update existing file timestamps. Optional parent directory creation. Cross-platform (T1106).
(Windows only) Inject shellcode using threadless injection by hooking a DLL function in a remote process. More stealthy than vanilla injection as it doesn't create new threads.
Modify file timestamps to blend in. Get, copy from another file, set specific time, match directory neighbors (IQR), or random within range. clean-prefetch deletes Windows Prefetch files for a named executable. Windows also modifies creation time.
(Windows only) RDP session management — list, hijack, disconnect, or logoff sessions. Session takeover without credentials (T1563.002).
ts
ts [-a] [-i PID]
(Windows only) List threads in processes. By default shows only alertable threads (Suspended/DelayExecution). Use -a for all threads, -i to filter by PID (T1057).
(Windows only) Bypass UAC to escalate from medium to high integrity. 8 techniques: registry hijack, env var hijack, INF file abuse, COM CLSID hijack, mock trusted directory. Default spawns elevated callback (T1548.002, T1218.003).
Inject shellcode into a remote process (inject), migrate agent (migrate: inject + exit), or spawn new process with LD_PRELOAD .so (ldpreload: Linux-only, no ptrace, bypasses Yama). Windows: VirtualAllocEx/WriteProcessMemory/CreateRemoteThread. Linux (amd64/arm64): /proc/PID/mem direct write, LD_PRELOAD via memfd. T1055.001, T1055.009, T1574.006.
vm-detect
vm-detect [-action detect|sandbox]
Detect VM/hypervisor environment or analyze sandbox evasion. detect: MAC OUI, DMI/SMBIOS, VM tools, SCSI, CPU hypervisor flag. sandbox: scored analysis — CPU count, RAM, disk, uptime, sleep timing, hostname, process count, username. Cross-platform (T1497, T1497.001).
Monitor a directory for file system changes — detects new, modified, and deleted files via polling. Supports glob filtering and MD5 hash detection. Cross-platform (T1083, T1119).
wc
wc -path <file_or_dir> [-pattern <glob>]
Count lines, words, characters, and bytes in files. Directory mode with glob pattern filtering and totals. Cross-platform (T1083).
wdigest
wdigest -action <status|enable|disable>
(Windows only) Manage WDigest plaintext credential caching. Enable to capture cleartext passwords at next logon. MITRE T1003.001, T1112.
(Windows only) Execute WMI queries, process creation, file upload, and staged execution via COM API. upload: transfer files via certutil/PowerShell staging. exec-staged: upload then execute with auto-cleanup. check validates WMI prerequisites (RPC 135, WMI connectivity). MITRE T1047, T1570.
Write content to files, or deface web pages. write: create/overwrite/append (default). deface: replace web content with defacement message (T1491, safety gate). Cross-platform (T1105, T1491).