PWNCAT é uma plataforma de pós-exploração Para alvos Linux . Começou como um invólucro em torno de conchas básicas de ligação e reversa e cresceu a partir daí. Ele simplifica as operações comuns da equipe vermelha enquanto encenava código da sua máquina de atacante, não do alvo.
O PWNCAT costumava suportar apenas o Linux, mas houve muito trabalho recentemente para oferecer suporte a várias plataformas. Atualmente, há suporte alfa para alvos do Windows. Consulte a documentação mais recente para obter detalhes sobre como usar o PWNCAT com um destino do Windows.
O 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 implantes e até escalada de privilégios.
Depois de receber uma conexão, o PWNCAT configurará algumas configurações comuns para trabalhar com shells remotos.
which ) pwncat sabe como gerar Pty's com alguns métodos diferentes e referenciará os métodos com os executáveis anteriormente enumerados. Depois de gerar um pty, ele configurará o terminal de controle no modo bruto, para que você possa interagir de maneira semelhante à ssh .
pwncat também sincronizará as configurações remotas de PTY (como linhas, colunas, variável de ambiente TERM ) com as configurações locais para garantir que o shell se comporte corretamente com aplicativos interativos, como vim ou nano .
John Hammond e eu apresentamos pwncat em 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 uso atualizado e documentação da API!
A documentação do PWNCAT está sendo construída em Read os documentos. Vá para lá para a mais recente documentação de uso e desenvolvimento!
O PWNCAT requer Python 3.9+ no Linux
pwncat depende apenas de um ambiente de desenvolvimento em Python em funcionamento em Linux. Para instalar alguns dos pacotes necessários com pip , você provavelmente precisará do pacote de "Desenvolvimento Python" da sua distribuição. Nos sistemas baseados em Debian, este é python-dev . Para o ARCH, os arquivos de desenvolvimento são enviados com o principal repositório Python. Para o Enterprise Linux, o pacote é chamado python-devel .
pwncat é empurrado para Pypi sob o nome pwncat-cs e pode ser instalado com pip como assim:
pip install pwncat-csNo entanto, é recomendável 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 uso da poesia python de uso pwncat . Você pode clonar o repositório localmente e usar a poesia 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. pc você pcat atualizando a partir da v0.4.* Veja as notas de lançamento mais recentes para obter mais detalhes.
O benefício adicional desse movimento é que o projeto agora é empurrado para o Pypi para facilitar a instalação/atualização no futuro.
pwncat agora suporta conexões das metas do Windows a partir da v0.4.0a1 . A plataforma Windows utiliza uma biblioteca C2 baseada em .NET, que é carregada automaticamente. As metas do Windows devem se conectar com um shell cmd.exe ou powershell.exe , e o PWNCAT cuidará do restante.
As bibliotecas que implementam o C2 são implementadas em PWNCAT-Windows-C2. As DLLs para o C2 serão baixadas automaticamente da versão direcionada para você. Se você não tiver conectividade à Internet em sua máquina de destino, poderá dizer ao PWNCAT para pré-estágio as DLLs usando o argumento --download-plugins . Se você estiver executando uma versão de lançamento do PWNCAT, também poderá baixar um tarball de todos os plugins internos da página de lançamentos.
Os plug -ins 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 de plugins embalados na página de lançamentos, extrata -o para o caminho apontado pelo plugin_path .
Além das principais DLLs C2, outros plugins também podem estar disponíveis. Atualmente, os únicos plugins padrão fornecidos são o C2 e a implementação do badpotato. O PWNCAT pode carregar refletivamente binários .NET para serem usados um plug -ins para o C2. Para obter mais informações sobre os plugins do Windows C2, consulte a documentação.
Recentemente, a arquitetura da estrutura do PWNCAT foi redesenhada para incorporar uma estrutura genérica de "módulo". Toda a funcionalidade agora é implementada como módulos. Isso inclui enumeração, persistência e escalada de privilégios. A interação com os módulos é semelhante à maioria das outras plataformas de pós-exploração. Você pode utilizar os comandos familiares run , search e info e inserir contextos do módulo com o comando use . Consulte a documentação para obter mais informações.
A instalação no Blackarch é tão simples quanto:
pacman -Syu pwncat-calebOs parâmetros da linha de comando para o PWNCAT tentam ser flexível e aceitar uma variedade de sintaxe de conexão comum. Especificamente, ele tentará aceitar o NetCat e o SSH comuns como sintaxe. O seguinte é válido:
# 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 de destino é Linux . Para se conectar a um shell reverso ou vinculado ao Windows, você deve passar no argumento --platform/-m :
pwncat-cs -m windows 10.10.10.10 4444
pwncat-cs -m windows -lp 4444 Para obter mais informações sobre a sintaxe e o manuseio de argumentos, consulte as informações de ajuda com pwncat-cs --help ou visite a documentação.
O método de instalação recomendado é um ambiente virtual do Python. Isso fornece o uso diário mais fácil do pwncat . No entanto, tem interesse em usar pwncat a partir de uma imagem do Docker, então eu forneci um Dockerfile que fornece uma instalação pwncat em funcionamento. Para construir o uso da imagem:
docker build -t pwncat . Isso criará a imagem do Docker pwncat com a tag "PWNCAT". O diretório de trabalho dentro do contêiner é /work . O ponto de entrada para o contêiner é o binário pwncat . Pode ser usado assim:
# Connect to a bind shell at 10.0.0.1:4444
docker run -v " /some/directory " :/work -t pwncat 10.0.0.1 4444 Neste exemplo, apenas os arquivos em /some/directory estão expostos ao contêiner. Obviamente, para fazer upload/download, o contêiner só poderá ver os arquivos expostos através de qualquer diretório montado.
pwncat fornece dois recursos principais. Na sua essência, seu objetivo é configurar automaticamente um pseudoterminal remoto (PTY), que permite a interação com o host remoto como uma sessão completa do SSH. Ao operar em um PTY, você pode usar recursos comuns do seu shell remoto, como histórico, edição de linha e aplicativos de terminais gráficos.
A outra metade do pwncat é uma estrutura que utiliza seu shell remoto para executar tarefas automatizadas de enumeração, persistência e escalada de privilégios. O prompt local pwncat fornece vários recursos úteis para testes de penetração padrão, incluindo:
pwncat também oferece a capacidade de reverter esses "Tampers" remotos automaticamenteA estrutura subjacente para interagir com o host remoto visa abstrair o método subjacente de shell e conexão o máximo possível, permitindo que comandos e plug -ins interagem perfeitamente com o host remoto.
Você pode aprender mais sobre como interagir com pwncat e sobre a estrutura subjacente na documentação. Se você tiver uma idéia para um novo método de escalada de privilégios ou método de persistência, consulte especificamente a documentação da API. Os pedidos de puxão são bem -vindos!
O PWNCAT gostaria de vir uma faca do exército da equipe vermelha. Felizmente, em breve, mais recursos serão adicionados.
Como pwncat está tentando interagir abstrivelmente com qualquer shell com dependências mínimas do sistema remoto, há alguns casos de borda que encontramos. Onde os encontramos, fazemos tudo o que podemos para explicá -los e escondê -los do usuário. No entanto, alguns deslizaram pelas rachaduras e foram observados na natureza. Quando isso acontece, pwncat fará o possível para preservar seu terminal, mas você pode ser recebido com algumas falhas peculiares de saída ou de comando.
Embora o BSD seja um kernel baseado em UNIX, na prática, suas ferramentas de usuários são visivelmente diferentes das colegas do Linux. Devido a isso, muitos dos recursos automatizados do pwncat não funcionarão ou falharão completamente ao executar contra um destino baseado em BSD. Eu tentei capturar todos os erros ou casos de borda, no entanto, provavelmente existem alguns soluços que não foram totalmente testados contra o BSD. De qualquer forma, o shell estabilizado deve funcionar em um ambiente BSD, mas não forneço nenhuma garantia.
Se encontrar algum tempo depois, posso tentar estabilizar pwncat no BSD, mas por enquanto meu foco está nas distribuições baseadas em Linux. Se você quiser contribuir para fazer com que pwncat se comporte melhor no BSD, você é mais do que bem -vindo a alcançar ou apenas bifurcar o repositório. Como sempre, os pedidos de puxão são bem -vindos!