Gestore multi-sessione di reverse shell con upgrade PTY, moduli di post-exploitation, tunneling di Layer 3, offuscamento del payload per l'evasione degli EDR, logging delle sessioni e un server MCP per il controllo guidato da LLM.
Questo progetto è il mio tentativo di realizzare un shell handler veloce, facile da usare (ma ricco di funzionalità) con un'interfaccia gradevole.
Disclaimer: tieni presente che è ancora in fase di sviluppo e sto ancora lavorando ad alcune delle funzionalità chiave, di cui si parla in questa sezione.
✨ Funzionalità | 🚧 WIP | 🚀 Installazione | 💻 Utilizzo | 🔧 Aggiornamento PTY | 🤖 Moduli | 🧠 MCP
La documentazione completa è disponibile nella wiki.
[!TIP] Questa demo viene eseguita con un OS dockerizzato. Se vuoi provarla tu stesso, puoi usare le immagini Ubuntu o dockur per Windows
script/socat, Windows tramite ConPtyShell offuscato) per il completamento con tab, l'inoltro di Ctrl+C e il ridimensionamento del terminale.connect ssh user@host trasforma credenziali che già possiedi in una sessione. ssh consegna solo il payload, quindi la shell continua a vivere dopo che ssh esce.tunnel start <id> <cidr> trasforma una shell in un pivot di Livello 3: uno stack TCP in userland sul target (niente root, niente binario depositato, solo Python) con le route dalla tua parte. (docs)koireview. (docs)Ctrl+Z manda la sessione in background, Ctrl+C invia SIGINT al remoto, non uccide mai il tuo listener per sbaglio.[!NOTE] Ora è possibile usare Koi da remoto ! Leggi di più qui
# Recommended: stable release from PyPI
pipx install koi-handler
# From source if you want to dev your own modules
git clone https://github.com/b3rt1ng/koi
cd koi
pipx install --editable .
koifuscator è la scorciatoia diretta al modulo obfuscator.
koireview è il tuo modo per vedere i log delle tue sessioni.
Per aggiornare:
pipx upgrade koi-handler
Maggiori dettagli in Getting Started.
# Default: bind 0.0.0.0:4010
koi
# Custom host/port
koi --host 10.10.14.5 --port 9001
koi -p 9001
Una volta dentro, help elenca ogni comando. Il riferimento completo è nella CLI Reference, e la gestione delle sessioni (tag, backgrounding, modalità screenable) in Session Management.
Invia tu stesso una reverse shell oppure digitando payloads *interface* per ottenere payload pregenerati. Tieni presente che deve essere una shell di tipo terminale, dato che Koi manipola sh di linux, powershell e cmd.
Koi include un offuscatore di payload integrato per aiutare a eludere il rilevamento di Windows Defender. Puoi concatenare più tecniche insieme, anche se la codifica XOR e le trasformazioni di formato sono di solito sufficienti. Tieni presente che impilare troppi livelli può corrompere il payload e renderlo illeggibile al target.
L'offuscatore funziona anche per i payload Linux. Sebbene la maggior parte degli ambienti Linux non esegua software antivirus, i one-liner bash vengono comunemente segnalati dalle soluzioni EDR, dalle regole IDS, o monitorati dai blue team che cercano pattern di reverse shell noti. Offuscare il tuo payload aiuta a passare sotto il radar in alcuni ambienti rafforzati.
Ogni tecnica e ogni tipo di payload supportato sono elencati in Payloads & Obfuscation.
Le shell grezze mancano di un supporto adeguato al terminale: niente completamento con tab, Ctrl+C rotto, output alterato. Il comando upgrade risolve questo:
koi> upgrade 1
Shell #1 upgraded successfully.
koi> go 1
# now a full PTY with proper terminal behaviour
viene generato un semplice pty python
python3 -c 'import pty; pty.spawn("/bin/bash")'
con TERM=xterm-256color e alcune informazioni di ridimensionamento
Non mi sono preoccupato di farne uno per CMD, ma per powershell la tecnica usa un conptyshell offuscato per ottenere una shell completamente implementata:
1) ConPtyShell is fetched from GitHub and cached locally for offline reuse
2) All IOC identifiers are renamed to random strings (class names, method names, PS function name)
3) Distinctive C# string literals are replaced with runtime char-array constructions (no literal in compiled MSIL)
4) The obfuscated script is served over a temporary HTTP server
5) The invocation command is base64-encoded (-EncodedCommand) with IEX and IWR obfuscated via random split techniques (concat / format string / char-array), so no plaintext cmdlet names appear on the command line
6) The target connects back with a fully interactive PTY shell, registered as a new session
Catena di fallback e dettagli per OS in Upgrading Sessions.