Manipulador de reverse shell multi-sessão com upgrade de PTY, módulos de pós-exploração, tunelamento de Camada 3, ofuscação de payload para evasão de EDR, registro de sessões e um servidor MCP para controle orientado por LLM.
Este projeto é a minha tentativa de criar um shell handler rápido, fácil de usar (mas rico em funcionalidades) com uma interface bonita.
Aviso: por favor, note que isto ainda está em desenvolvimento, e ainda estou a trabalhar em algumas das funcionalidades principais, abordadas nesta secção.
✨ Funcionalidades | 🚧 WIP | 🚀 Instalação | 💻 Utilização | 🔧 Atualização para PTY | 🤖 Módulos | 🧠 MCP
A documentação completa está na wiki.
[!TIP] Esta demonstração corre com um SO em docker. Se quiser experimentar, pode usar as imagens Ubuntu ou o dockur windows
script/socat, Windows via ConPtyShell ofuscado) para autocompletar com tab, encaminhamento de Ctrl+C e redimensionamento do terminal.connect ssh user@host transforma credenciais que já possui numa sessão. O ssh apenas entrega o payload, por isso a shell continua viva depois de o ssh terminar.tunnel start <id> <cidr> transforma uma shell num pivot de Camada 3: uma stack TCP em userland no alvo (sem root, sem binário descarregado, apenas Python) com as rotas do seu lado. (docs)koireview. (docs)Ctrl+Z coloca a sessão em segundo plano, Ctrl+C envia SIGINT para o remoto, nunca mata o seu listener por acidente.[!NOTE] Agora é possível usar o Koi remotamente ! Leia mais aqui
# Recomendado: versão estável do PyPI
pipx install koi-handler
# A partir do código-fonte se quiser desenvolver os seus próprios módulos
git clone https://github.com/b3rt1ng/koi
cd koi
pipx install --editable .
koifuscator é o atalho direto para o módulo ofuscador.
koireview é a sua forma de ver os registos das suas sessões.
Para atualizar:
pipx upgrade koi-handler
Mais detalhes em Getting Started.
# Predefinição: bind 0.0.0.0:4010
koi
# Host/porta personalizados
koi --host 10.10.14.5 --port 9001
koi -p 9001
Uma vez lá dentro, help lista todos os comandos. A referência completa está na CLI Reference, e a gestão de sessões (tags, segundo plano, modo screenable) em Session Management.
Envie uma reverse shell você mesmo ou escrevendo payloads *interface* para obter payloads pré-gerados. Note que tem de ser uma shell tipo terminal, pois o Koi manipula shs de linux, powershells e cmd.
O Koi inclui um ofuscador de payloads integrado para ajudar a evadir a deteção do Windows Defender. Pode encadear múltiplas técnicas, embora a codificação XOR e as transformações de formato sejam geralmente suficientes. Tenha em mente que empilhar demasiadas camadas pode corromper o payload e torná-lo ilegível pelo alvo.
O ofuscador também funciona para payloads Linux. Embora a maioria dos ambientes Linux não execute software antivírus, as one-liners de bash são frequentemente sinalizadas por soluções EDR, regras IDS, ou monitorizadas por blue teams à procura de padrões conhecidos de reverse shell. Ofuscar o seu payload ajuda a passar despercebido em alguns ambientes reforçados.
Todas as técnicas e todos os tipos de payload suportados estão listados em Payloads & Obfuscation.
As shells simples não têm suporte adequado de terminal: sem autocompletar com tab, Ctrl+C quebrado, saída desformatada. O comando upgrade corrige isto:
koi> upgrade 1
Shell #1 upgraded successfully.
koi> go 1
# now a full PTY with proper terminal behaviour
é criado um pty simples em python
python3 -c 'import pty; pty.spawn("/bin/bash")'
com TERM=xterm-256color e alguma informação de redimensionamento
Não me dei ao trabalho de fazer um para CMD, mas para powershell a técnica usa um conptyshell ofuscado para obter uma shell totalmente implementada:
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
Cadeia de fallback e detalhes por SO em Upgrading Sessions.
O Koi pode expor as suas sessões e módulos através de MCP, para que um cliente LLM possa ler a sua tabela de sessões e controlar módulos sem que tenha de copiar e colar nada.
# apenas de leitura: sessões, módulos e registos
koi --mcp