
Plataforma de pós-exploração que automatiza enumeração, escalonamento de privilégios, persistência e operações C2 por meio de shells reversos/vinculados com suporte multiplataforma para Linux e Windows.
pwncat é uma plataforma pós-exploração para alvos Linux. Começou como um invólucro em torno de shells bind e reverse básicos e cresceu a partir daí. Ele simplifica operações comuns de red team enquanto prepara o código a partir da sua máquina atacante, não do alvo.
pwncat costumava suportar apenas Linux, mas houve muito trabalho recentemente para suportar múltiplas plataformas. Atualmente, há suporte alfa para alvos Windows. Consulte a [documentação] mais recente para obter detalhes sobre como usar o pwncat com um alvo Windows.
pwncat intercepta a comunicação bruta com um shell remoto e permite que o usuário execute ações automatizadas no host remoto, incluindo enumeração, instalação de implants e até mesmo escalonamento de privilégios.
Após receber uma conexão, o pwncat configurará algumas configurações comuns para trabalhar com shells remotos.
which)O pwncat sabe como gerar ptys com alguns métodos diferentes e fará referência cruzada dos métodos com os executáveis previamente enumerados. Após gerar um pty, ele configurará o terminal de controle em modo raw, para que você possa interagir de maneira semelhante ao ssh.
O pwncat também sincronizará as configurações do pty remoto (como linhas, colunas, variável de ambiente TERM) com suas configurações locais para garantir que o shell se comporte corretamente com aplicativos interativos como vim ou nano.
John Hammond e eu apresentamos o pwncat no GRIMMCon. Nossa apresentação, que pode ser encontrada no YouTube aqui. Este vídeo demonstra uma versão inicial da API e interface. Consulte a documentação para obter informações atualizadas de uso e documentação da API!
A [documentação] do pwncat está sendo construída no Read the Docs. Vá para lá para obter a documentação de uso e desenvolvimento mais recente!
pwncat requer Python 3.9+ no Linux
pwncat depende apenas de um ambiente de desenvolvimento Python funcional executando no Linux. Para instalar alguns dos pacotes necessários com pip, você provavelmente precisará do pacote "Python Development" da sua distribuição. Em sistemas baseados em Debian, este é python-dev. Para Arch, os arquivos de desenvolvimento são fornecidos com o repositório principal do Python. Para Enterprise Linux, o pacote é nomeado python-devel.
pwncat é enviado para o PyPI sob o nome pwncat-cs e pode ser instalado com pip da seguinte forma:
pip install pwncat-cs
No entanto, é recomendado instalar o pwncat a partir de um ambiente virtual.
python3 -m venv pwncat-env
source pwncat-env/bin/activate
pip install pwncat-cs
Para um ambiente de desenvolvimento, o pwncat utiliza Python Poetry. Você pode clonar o repositório localmente e usar o poetry para configurar um ambiente de desenvolvimento.
# Setup pwncat inside a poetry-managed virtual environment
git clone [email protected]:calebstewart/pwncat.git
cd pwncat
poetry install
# Enter the virtual environment
poetry shell
Devido ao conflito de nomenclatura com o pwncat da Cytopia, decidi renomear o pacote para pwncat-cs. Isso inclui renomear o ponto de entrada para que não haja conflitos diretos com o projeto da Cytopia. Se você está atualizando a partir da v0.4.*, o nome do comando agora terá mudado, e as variantes pcat e pc foram removidas. Consulte as notas de lançamento mais recentes para mais detalhes.
O benefício adicional dessa mudança é que o projeto agora é enviado para o PyPI para facilitar a instalação/atualização no futuro.
pwncat agora suporta conexões de alvos Windows a partir da v0.4.0a1. A plataforma Windows utiliza uma biblioteca C2 baseada em .Net que é carregada automaticamente. Alvos Windows devem conectar com um shell cmd.exe ou powershell.exe, e o pwncat cuidará do resto.
As bibliotecas que implementam o C2 estão implementadas em [pwncat-windows-c2]. As DLLs para o C2 serão baixadas automaticamente da versão alvo para você. Se você não tiver conectividade com a internet na sua máquina alvo, pode instruir o pwncat a pré-configurar as DLLs usando o argumento --download-plugins. Se você estiver executando uma versão de lançamento do pwncat, também pode baixar um tarball de todos os plugins embutidos na página de releases.
Os plugins são armazenados por padrão em ~/.local/share/pwncat, no entanto isso é configurável com a configuração plugin_path. Se você baixar o conjunto empacotado de plugins da página de releases, deve extraí-lo para o caminho apontado por plugin_path.
Além das DLLs principais do C2, outros plugins também podem estar disponíveis. Atualmente, os únicos plugins padrão fornecidos são o C2 e uma implementação do [BadPotato]. O pwncat pode carregar reflexivamente binários .Net para serem usados como plugins para o C2. Para mais informações sobre plugins do C2 para Windows, consulte a [documentação].
Recentemente, a arquitetura do framework pwncat foi redesenhada para incorporar uma estrutura genérica de "módulos". Toda funcionalidade agora é implementada como módulos. Isso inclui enumeração, persistência e escalonamento de privilégios. Interagir com módulos é semelhante à maioria das outras plataformas pós-exploração. Você pode utilizar os comandos familiares run, search e info e entrar em contextos de módulo com o comando use. Consulte a documentação para mais informações.
A instalação no BlackArch é tão simples quanto:
pacman -Syu pwncat-caleb
Os parâmetros de linha de comando do pwncat tentam ser flexíveis e aceitar uma variedade de sintaxes comuns de conexão. Especificamente, ele tentará aceitar sintaxes comuns semelhantes ao netcat e ssh. Todos os seguintes são válidos:
# Connect to a bind shell
pwncat-cs connect://10.10.10.10:4444
pwncat-cs 10.10.10.10:4444
pwncat-cs 10.10.10.10 4444
# Listen for reverse shell
pwncat-cs bind://0.0.0.0:4444
pwncat-cs 0.0.0.0:4444
pwncat-cs :4444
pwncat-cs -lp 4444
# Connect via ssh
pwncat-cs ssh://user:[email protected]
pwncat-cs [email protected]
pwncat-cs user:[email protected]
pwncat-cs -i id_rsa [email protected]
# SSH w/ non-standard port
pwncat-cs -p 2222 [email protected]
pwncat-cs [email protected]:2222
# Reconnect utilizing installed persistence
# If reconnection fails and no protocol is specified,
# SSH is used as a fallback.
pwncat-cs reconnect://[email protected]
pwncat-cs reconnect://user@c228fc49e515628a0c13bdc4759a12bf
pwncat-cs [email protected]
pwncat-cs c228fc49e515628a0c13bdc4759a12bf
pwncat-cs 10.10.10.10
Por padrão, o pwncat assume que a plataforma alvo é Linux. Para conectar a um shell reverse ou bind do Windows, você deve passar o argumento --platform/-m:
pwncat-cs -m windows 10.10.10.10 4444
pwncat-cs -m windows -lp 4444
Para mais informações sobre a sintaxe e o tratamento de argumentos, veja as informações de ajuda com pwncat-cs --help ou visite a [documentação].
O método de instalação recomendado é um ambiente virtual Python. Isso fornece o uso diário mais fácil do pwncat. No entanto, houve interesse em usar o pwncat a partir de uma imagem docker, então forneci um Dockerfile que fornece uma instalação funcional do pwncat. Para construir a imagem, use:
docker build -t pwncat .