PETEP ( PEnetration TEsting Proxy ) ist eine Open-Source-Java-Anwendung zum Erstellen von Proxys für die Verkehrsanalyse und -änderung. Das Hauptziel von PETEP besteht darin, ein nützliches Tool für die Durchführung von Penetrationstests von Anwendungen mit verschiedenen Protokollen (auf TCP/UDP) bereitzustellen, indem Proxys und Interceptors eingerichtet werden, um den zwischen Client und Server übertragenen Datenverkehr zu verwalten.
Anforderungen: Java 11+ (für M1, M2 Mac verwenden Sie Java 17+)
petep.sh
(Linux, Mac) oder petep.bat
(Windows) aus. # Linux / Mac
chmod +x petep.sh
./petep.sh
# Windows
petep.bat
Tipp: Die bereitgestellten Ausführungsskripte enthalten nützliche Variablen, einschließlich des Arbeitsverzeichnisses (für die Datei petep.json
) und des Pfads zur ausführbaren Java-Datei. Möglicherweise müssen Sie es ändern, wenn Sie es nicht in PATH haben oder mehrere Java-Versionen auf Ihrem Computer verwenden.
Tipp: Die meisten Änderungen am Projekt sind nicht automatisch dauerhaft. Verwenden Sie Projekt → Speichern, um die Änderungen zu speichern, wenn PETEP ausgeführt wird.
Die neueste PETEP-Version bietet die folgende Protokollunterstützung:
Und es gibt folgende Funktionalitäten:
Detaillierte Beschreibungen aller Module finden Sie im offiziellen Benutzerhandbuch.
PETEP ist als Proxy für Anwendungsprotokolle konzipiert, die auf TCP/UDP basieren. Um PETEP als Proxy für Ihre Anwendung zu nutzen, gibt es in der Regel eine der folgenden Möglichkeiten:
/etc/hosts
konfigurieren und die IP-Adresse für die Zieldomäne überschreiben. Wenn die Zielanwendung nicht Proxy-fähig ist und/oder es nicht möglich ist, andere Ansätze (z. B. /etc/hosts
) zu verwenden, um die Anwendung über PETEP kommunizieren zu lassen, können Sie Deluder verwenden.
Deluder ist ein Python-Dienstprogramm, das dynamische Instrumentierung verwendet, um Funktionsaufrufe in gängigen Netzwerk- und Verschlüsselungsbibliotheken abzufangen. Siehe Deluder GitHub.
Um die Scripter-Erweiterung zu verwenden, wird die Verwendung von GraalVM empfohlen, da die Implementierung mit GraalVM Polyglot erstellt wird. Seit GraalVM 22.2 müssen Sie möglicherweise die Skriptsprache in der GraalVM mit gu install js
installieren.
Um die TCP-Kommunikation mit vorhandenen HTTP-Proxys wie Burp Suite, OWASP Zap usw. zu testen, können Sie das externe HTTP-Proxy-Modul PETEP verwenden, mit dem Sie die TCP-Kommunikation über diese Proxys tunneln können.
Das externe HTTP-Proxy-Modul umschließt die TCP-Kommunikation innerhalb von HTTP, das über den Proxy gesendet wird. Das Wiederholen der Pakete wird ebenfalls unterstützt, solange die Verbindung aktiv ist, sodass auch Burp Intruder/Repeater und Zaproxy Requester/Fuzzer für die TCP-Kommunikation verwendet werden können.
Weitere Informationen finden Sie im Benutzerhandbuch – Externer HTTP-Proxy.
Hinweis: Wenn Sie PETEP nur als Tunnel zum Senden des TCP über HTTP-Proxys verwenden möchten, würde ich empfehlen, es im GUI-Modus einzurichten und dann im NO-GUI-Modus auszuführen ( PETEP [project_path] --nogui
).
PETEP unterstützt TCP-Proxy mit SSL/TLS und STARTTLS. Um diese nutzen zu können, müssen Sie ein Zertifikat bereitstellen, da die Anwendung dieses nicht selbst generiert. Für die Zertifikatsgenerierung können viele Tools verwendet werden, eines davon ist jedoch Teil der Java-Binärdateien ( %JAVA_HOME%/bin/keytool
).
Um ein Zertifikat im JKS-Keystore zu generieren, können Sie den folgenden Befehl verwenden:
keytool -genkey -alias petep -keyalg RSA -validity 3650 -keysize 4096 -keystore server.jks
Hinweis: Es wird empfohlen, diese Zertifikate zusammen mit dem Projekt zu speichern (Projektverzeichnis/conf/server.jks).
Es gibt drei verschiedene Leitfäden, die Ihnen dabei helfen, PETEP optimal zu nutzen:
Es ist möglich, mit Java Erweiterungen zu entwickeln, um die Unterstützung neuer Protokolle zu implementieren und/oder neue Funktionalitäten zum Abfangen der Kommunikation (einschließlich grafischer Benutzeroberfläche) zu implementieren.
Weitere Informationen zur Erweiterungsentwicklung finden Sie im Dev Guide.
PETEP ist unter GNU GPL 3.0 lizenziert.