
Überwachen Sie beliebigen TCP-Verkehr mit Ihrem bevorzugten HTTP-Abfangproxy.
Überwachen Sie beliebigen TCP-Verkehr mit Ihrem bevorzugten HTTP-Interception-Proxy
socksmon ist ein SOCKSv4-Server, der auf Twisted basiert und eingehenden TCP-Verkehr durch einen HTTP-Proxy tunnelt. socksmon startet dazu einen internen Webserver auf Port 2357, übermittelt den Verkehr an den Man-in-the-Middle-Proxy zur Bearbeitung und leitet ihn dann an das Ziel weiter.
socksmon bietet eine vorläufige Unterstützung für SSL-Interception, sodass beliebiger SSL-verschlüsselter TCP-Verkehr mit Ihrem bevorzugten Interception-Proxy analysiert werden kann.
Zuerst müssen Sie ein Zertifikat erstellen, das Sie mit
socksmon im PEM-Format verwenden möchten, und es unter /tmp/server.pem ablegen. Wenn Sie
BURP verwenden, exportieren Sie den privaten Schlüssel und das Zertifikat und verketten Sie
sie. (z. B. cat server.crt server.key > /tmp/server.pem)
Zweitens starten Sie Ihren Interception-Proxy mit Port 8080 auf localhost.
Drittens senden Sie SOCKSv4-Verkehr an yourip:9050. Stellen Sie sicher, dass Sie SOCKSv4 verwenden,
SOCKSv5 funktioniert aufgrund der Twisted-SOCKS-Server-Implementierung nicht. Zum
Umleiten von Verkehr empfehle ich Proxifier1 unter Windows und
Redsocks2 oder Proxychains3 unter Linux.
Patches / PRs sind willkommen.
Derzeit werden keine Zertifikate für bestimmte Endpunkte generiert, z. B. wird der angegebene Schlüssel direkt für alle Seiten verwendet. Dies ist problematisch bei Clients, die den Common Name oder die Sperrliste im Zertifikat überprüfen.
Upstream-Proxys sollten für den gesamten Verkehr unterstützt werden. HTTP sollte eine besondere Behandlung erhalten, sodass auch Proxys, die CONNECT verbieten, verwendet werden können.
Befehlszeilenoptionen sollten verwendet werden, um den Proxy-Port, die Zertifikate und die Webserver-Ports festzulegen.
Implementieren Sie ein modulares Framework, das die Verarbeitung von TCP- Verkehr ermöglicht. Es sollte einfach sein, Decoder und Re-Encoder für verschiedene Protokolle und Formate zu implementieren (z. B. Java-Objekt in XML deserialisieren).