PETEP ( PEnetration TEsting Proxy ) é um aplicativo Java de código aberto para criação de proxies para análise e modificação de tráfego. O principal objetivo do PETEP é fornecer uma ferramenta útil para realizar testes de penetração de aplicações com diversos protocolos (em TCP/UDP), configurando proxies e interceptores para gerenciar o tráfego transmitido entre o cliente e o servidor.
Requisitos: Java 11+ (para M1, M2 Mac use Java 17+)
petep.sh
(Linux, Mac) ou petep.bat
(Windows) # Linux / Mac
chmod +x petep.sh
./petep.sh
# Windows
petep.bat
Dica: Os scripts de execução fornecidos contêm variáveis úteis, incluindo o diretório de trabalho (para o arquivo petep.json
) e o caminho para o executável Java. Pode ser necessário alterá-lo se não o tiver em PATH ou se você usar várias versões Java em sua máquina.
Dica: A maioria das alterações no projeto não são automaticamente persistentes. Use Projeto → Salvar para salvar as alterações, quando o PETEP estiver em execução.
A versão mais recente do PETEP tem o seguinte suporte de protocolo:
E existem as seguintes funcionalidades:
Descrições detalhadas de todos os módulos podem ser encontradas no Guia do Usuário oficial.
PETEP foi feito para ser um proxy para protocolos de aplicação construídos em TCP/UDP. Para usar o PETEP como proxy para sua aplicação, geralmente há uma das seguintes opções:
/etc/hosts
e substituir o endereço IP do domínio de destino. Se o aplicativo alvo não reconhece proxy e/ou não é possível usar outras abordagens (por exemplo, /etc/hosts
) para fazer o aplicativo se comunicar através do PETEP, você pode usar o Deluder.
Deluder é um utilitário Python que usa instrumentação dinâmica para interceptar chamadas de função em redes comuns e bibliotecas de criptografia. Consulte Deluder GitHub.
Para utilizar a extensão Scripter, recomenda-se utilizar GraalVM, pois a implementação é construída utilizando GraalVM Polyglot. Desde o GraalVM 22.2, pode ser necessário instalar a linguagem de script no GraalVM usando gu install js
.
Para testar a comunicação TCP usando proxies HTTP existentes como Burp Suite, OWASP Zap etc.), você pode usar o módulo proxy HTTP externo PETEP, que permite encapsular a comunicação TCP através desses proxies.
O módulo proxy HTTP externo envolve a comunicação TCP dentro do HTTP, que é enviado através do proxy. A repetição dos pacotes também é suportada enquanto a conexão estiver ativa, portanto, Burp Intruder/Repeater e Zaproxy Requester/Fuzzer também podem ser usados para a comunicação TCP.
Para obter mais informações, consulte Guia do usuário - Proxy HTTP externo.
Nota: Se você quiser usar PETEP apenas como túnel para enviar o TCP através de proxies HTTP, eu recomendaria configurá-lo no modo GUI e depois executá-lo no modo NO-GUI ( PETEP [project_path] --nogui
).
PETEP suporta proxy TCP com SSL/TLS e STARTTLS. Para utilizá-los é necessário fornecer certificado, pois o aplicativo não o gera sozinho. Para geração de certificados, existem muitas ferramentas que podem ser utilizadas, mas uma delas faz parte dos binários Java ( %JAVA_HOME%/bin/keytool
).
Para gerar um certificado no keystore JKS, você pode usar o seguinte comando:
keytool -genkey -alias petep -keyalg RSA -validity 3650 -keysize 4096 -keystore server.jks
Nota: É recomendado armazenar esses certificados junto com o projeto (project_dir/conf/server.jks)
Existem três guias diferentes que ajudarão você a usar o PETEP em todo o seu potencial:
É possível desenvolver extensões usando Java para implementar suporte a novos protocolos e/ou implementar novas funcionalidades para interceptar a comunicação (incluindo interface gráfica de usuário).
Para obter mais informações sobre o desenvolvimento de extensões, consulte o Guia do Desenvolvedor.
PETEP é licenciado sob GNU GPL 3.0.