
Pupy
Pupy é uma ferramenta RAT (Remote Administration Tool) de código aberto, multiplataforma (Windows, Linux, OSX, Android), multifuncional e de pós-exploração, escrita principalmente em Python. Ela apresenta uma diretriz de execução totalmente em memória e deixa uma pegada muito baixa. O Pupy pode se comunicar usando vários transportes, migrar para processos (injeção reflexiva), carregar código Python remoto, pacotes Python e extensões C do Python a partir da memória.
Os módulos do Pupy podem acessar transparentemente objetos Python remotos usando rpyc para realizar diversas tarefas interativas.
O Pupy pode gerar payloads em vários formatos, como executáveis PE, DLLs reflexivas, arquivos Python puros, powershell, apk, ...
Ao empacotar um payload, você pode escolher um launcher (connect, bind, ...), um transporte (ssl, http, rsa, obfs3, scramblesuit, ...) e vários "scriptlets". Scriptlets são scripts Python criados para serem embutidos e executar várias tarefas offline (sem exigir uma sessão), como iniciar um script em segundo plano, adicionar persistência, iniciar um keylogger, detectar uma sandbox, ...
Installation
git clone https://github.com/n1nj4sec/pupy.git pupy
cd pupy
git submodule init
git submodule update
pip install -r pupy/requirements.txt
ou Consulte a wiki
Features
- Multi-plataforma (testado no windows xp, 7, 8, 10, kali linux, ubuntu, osx, android)
- No Windows, o payload do Pupy pode ser compilado como uma DLL reflexiva e todo o interpretador Python é carregado a partir da memória. O Pupy não toca no disco :)
- o pupy também pode ser empacotado em um único arquivo .py e executado sem nenhuma dependência além da biblioteca padrão do Python em todos os SOs
- pycrypto é substituído por implementações de aes && rsa em Python puro quando indisponível
- O Pupy pode migrar reflexivamente para outros processos
- O Pupy pode importar remotamente, a partir da memória, pacotes Python puros (.py, .pyc) e extensões C do Python compiladas (.pyd, .so). Os módulos Python importados não tocam no disco.
- O Pupy é facilmente extensível; os módulos são bastante simples de escrever, organizados por SO e categoria.
- Muitos módulos incríveis já estão implementados!
- O Pupy usa rpyc e um módulo pode acessar diretamente objetos Python no cliente remoto
- Também podemos acessar objetos remotos interativamente a partir do shell do pupy e você ainda obtém autocompletar de atributos remotos!
- Os transportes de comunicação são modulares, empilháveis e incríveis. Você poderia exfiltrar dados usando HTTP sobre HTTP sobre AES sobre XOR. Ou qualquer combinação dos transportes disponíveis!
- O Pupy pode se comunicar usando os transportes plugáveis do obfsproxy
- Todos os módulos não interativos podem ser enviados para vários hosts em um único comando
- Comandos e scripts em execução em hosts remotos são interrompíveis
- Autocompletar para comandos e argumentos
- Uma configuração personalizada pode ser definida: aliases de comandos, módulos executados automaticamente na conexão, ...
- Shells Python interativos com autocompletar no interpretador Python remoto todo em memória podem ser abertos
- Shells interativos (cmd.exe, /bin/bash, ...) podem ser abertos remotamente. Shells remotos em clientes Unix & Windows têm um tty real com todos os sinais de teclado funcionando perfeitamente, como um shell ssh
- O Pupy pode executar exe PE remotamente e a partir da memória (cf. ex com mimikatz)
- O Pupy pode gerar payloads em vários formatos: apk,lin_x86,lin_x64,so_x86,so_x64,exe_x86,exe_x64,dll_x86,dll_x64,py,pyinst,py_oneliner,ps1,ps1_oneliner,rubber_ducky
- O Pupy pode ser implantado em memória, a partir de uma única linha de comando usando one-liners Python ou powershell do pupygen.py.
- "scriptlets" podem ser embutidos nos payloads gerados para executar algumas tarefas "offline" sem precisar de conectividade de rede (ex: iniciar keylogger, adicionar persistência, executar script Python personalizado, check_vm ...)
- toneladas de outros recursos, confira os módulos implementados
Transportes Implementados
Todos os transportes no pupy são empilháveis. Isso significa que ao criar uma configuração de transporte personalizada (pupy/network/transport/<transport_name>/conf.py), você pode fazer a sua sessão pupy parecer qualquer coisa. Por exemplo, você poderia empilhar HTTP sobre HTTP sobre base64 sobre HTTP sobre AES sobre obfs3 :o)
- rsa
- Uma camada com autenticação e criptografia usando RSA e AES256, frequentemente empilhada com outras camadas
- aes
- camada usando uma chave AES256 estática
- ssl (o padrão)
- transporte TCP encapsulado com SSL
- ssl_rsa
- igual ao ssl, mas empilhado com uma camada rsa
- http
- camada que faz o tráfego parecer tráfego HTTP. HTTP é empilhado com uma camada rsa
- obfs3
- scramblesuit
- udp
- camada rsa, mas sobre UDP (pode conter bugs; ainda não lida com perda de pacotes)
- other
- As outras camadas não têm realmente interesse e são fornecidas como exemplos de código: (dummy, base64, XOR, ...)
Launchers Implementados (desatualizados, cf. ./pupygen.py -h)
Os launchers permitem ao pupy executar ações personalizadas antes de iniciar a conexão reversa
- connect
- bind
- Vincular o payload em vez de conexão reversa
- auto_proxy
- Obter uma lista de possíveis proxies SOCKS/HTTP e testar cada um deles. Os métodos de obtenção de proxy são: registro, requisições WPAD, configurações do gnome, variável de ambiente HTTP_PROXY
Módulos Implementados (desatualizados)
- execução de comandos
- download
- upload
- shell Python interativo com autocompletar
- shell interativo (cmd.exe, powershell.exe, /bin/sh, /bin/bash, ...)
- a alocação de tty é bem suportada tanto no Windows quanto no *nix. Parece apenas um shell ssh
- execução de shellcode
- persistência
- proxy socks5
- encaminhamento de porta local e remoto
- screenshot
- keylogger
- executar a incrível ferramenta de coleta de credenciais LaZagne a partir da memória!
- ferramentas de sniff, netcreds
- migração de processos (windows & linux, ainda não osx)
- ...
- muitas outras ferramentas (cliente upnp, várias ferramentas de recon/pivot usando impacket remotamente, ...)
Específico para Windows :
- migrate
- injeção de arquitetura entre processos também funciona (x86->x64 e x64->x86)
- execução em memória de exe PE tanto x86 quanto x64!
- snapshot da webcam
- gravador de microfone
- mouselogger:
- tira pequenas capturas de tela ao redor do mouse a cada clique e as envia de volta ao servidor
- manipulação de token
- getsystem
- creddump
- toneladas de scripts powershell úteis
- ...
Específico para Android
- Texto para fala no Android para dizer coisas em voz alta
- snapshots da webcam (câmera frontal e traseira)
- Rastreador GPS!
Documentação
Consulte a wiki
Algumas capturas de tela (desatualizadas)
Seção de capturas de tela na wiki
FAQ
O servidor funciona no Windows?
O servidor do Pupy funciona melhor no linux. O servidor no Windows não foi realmente testado e provavelmente há muitos bugs. Eu tento ao máximo codificar de maneira portátil, mas nem sempre encontro tempo para corrigir tudo. Se você encontrar coragem para corrigir código não portátil, aceitarei pull requests de bom grado! :)
Não consigo instalá-lo, como funciona?
Dê uma olhada na seção Instalação na wiki
Tenho o seguinte erro ao iniciar o pupy.sh: ImportError: No module named creddump.win32.domcachedump
Siga os passos de Instalação na wiki; você perdeu a inicialização/atualização dos submódulos do git
Tenho o seguinte erro ao usar pupygen : IOError: [Errno 2] No such file or directory: '/full-path/pupy-master/pupy/payload_templates/pupyx86.exe'
Siga os passos de Instalação na wiki; você perdeu a inicialização/atualização dos submódulos do git
Tenho outro erro na instalação
Siga os passos de Instalação na wiki (sim, eu sei)
Ei, eu amo o pupy e estava me perguntando se eu poderia lhe oferecer uma cerveja!
Claro! Obrigado!
Via pledgie :
Via BTC: 12BKKN81RodiG9vxJn34Me9ky19ArqNQxC
ei, v0cê p0de adicionar um módulo DDOS plzz?
Não.
Contato
por e-mail: [email protected]
no Twitter: Siga-me no twitter
Se alguns de vocês quiserem participar do desenvolvimento do pupy, não hesitem! Toda ajuda é muito apreciada e revisarei cada pull request.
Este projeto é um desenvolvimento pessoal, por favor respeite sua filosofia e não o use para fins malignos!
Agradecimentos Especiais
Agradecimentos especiais a todos os contribuidores que me ajudam a melhorar o pupy e a torná-lo uma ferramenta ainda melhor! :)