
Surveillez le trafic TCP arbitraire en utilisant votre proxy d'interception HTTP de choix.
Surveillez tout trafic TCP à l'aide du proxy d'interception HTTP de votre choix.
socksmon est un serveur SOCKSv4 basé sur Twisted, qui tunnelise le trafic TCP entrant à travers un proxy HTTP. socksmon fait cela en démarrant un serveur web interne sur le port 2357, en postant le trafic vers le proxy d'interception (man-in-the-middle) pour le modifier, puis en le transférant vers la destination.
socksmon offre un support préliminaire pour l'interception SSL, ce qui signifie que tout trafic TCP chiffré par SSL peut être analysé à l'aide de votre proxy d'interception de votre choix.
Tout d'abord, vous devez créer un certificat que vous souhaitez utiliser avec socksmon au format PEM et le placer sous /tmp/server.pem. Si vous utilisez BURP, exportez la clé privée et le certificat, puis concaténez-les. (ex. cat server.crt server.key > /tmp/server.pem)
Deuxièmement, démarrez votre proxy d'interception sur le port 8080 en localhost.
Troisièmement, envoyez le trafic SOCKSv4 vers yourip:9050. Assurez-vous d'utiliser SOCKSv4, SOCKSv5 ne fonctionnera pas à cause de l'implémentation du serveur SOCKS de Twisted. Pour rediriger le trafic, je recommande Proxifier1 sous Windows et Redsocks2 ou Proxychains3 sous Linux.
Les correctifs / PRs sont les bienvenus.
Actuellement, aucun certificat n'est généré pour des points de terminaison spécifiques, par exemple la clé spécifiée est utilisée directement pour tous les sites. Cela pose problème avec les clients qui vérifient le nom commun ou la liste de révocation dans le certificat.
Les proxies amont devraient être supportés pour tout le trafic. HTTP devrait bénéficier d'un traitement spécial, afin que les proxies qui interdisent CONNECT puissent également être utilisés.
Les options de ligne de commande devraient être utilisées pour définir le port du proxy, les certificats et les ports du serveur web.
Implémenter un cadre modulaire qui permette le traitement du trafic TCP. Il devrait être facile d'implémenter des décodeurs et des ré-encodeurs pour différents protocoles et formats (par exemple, désérialiser un objet Java en XML).