
PyMultitor - Proxy Tor Python multi-threadé
Proxy Tor multi‑threadé en Python,
Avez‑vous déjà voulu être à deux endroits différents en même temps ?
Quand je me suis posé cette question, j'ai en fait commencé à développer cette solution dans mon esprit.
Lors de tests d'intrusion, il y a souvent des problèmes causés par des dispositifs de sécurité qui bloquent l'IP « attaquante ».
Cela m'a vraiment ennuyé, alors j'ai écrit un script pour fournir une solution à ce problème.
Avec un grand nombre d'adresses IP effectuant les attaques, de meilleurs résultats sont garantis – en particulier lors de tentatives d'attaques pour contourner les pare‑feu d'applications Web, les attaques de type force brute et bien d'autres.
[Blackhat Asia] https://www.blackhat.com/asia-17/arsenal.html#pymultitor
[Owasp-IL Presentation] https://www.owasp.org/images/3/3d/OWASPIL-2016-02-02_PyMultiTor_TomerZait.pdf
[DigitalWhisper Article (Hébreu)] http://www.digitalwhisper.co.il/files/Zines/0x2E/DW46-3-PyMultitor.pdf

sudo apt install -y torsudo yum install -y torsudo dnf install -y tor{tor-win32-*_path}\Tor--tor-cmd avec pymultitor (par exemple : pymultitor --tor-cmd "c:\Pentest\Web\tor-win32-0.2.9.9\Tor\tor.exe")brew install torpip3 install pymultitor
docker pull realgam3/pymultitor
git clone https://github.com/realgam3/pymultitor.git
cd pymultitor
# Installez les dépendances Python.
# Selon votre configuration, l'une ou les deux peuvent nécessiter sudo.
pip3 install -r requirements.txt
python3 setup.py install
# Confirmez que tout fonctionne
pymultitor --help
Les rapports de bogues sur les problèmes d'installation sont les bienvenus !
pymultitor --on-string "Your IP Address Blocked".http://127.0.0.1:8080).Your IP Address Blocked sera présente dans le contenu de la réponse, vous sortirez d'une autre adresse IP.docker run --rm -p 8080:8080 realgam3/pymultitor --on-string "Your IP Address Blocked".http://127.0.0.1:8080).Your IP Address Blocked sera présente dans le contenu de la réponse, vous sortirez d'une autre adresse IP.PyMultiTor fournit une API REST pour gérer les identités de proxy. Vous pouvez utiliser l'API pour changer votre identité de proxy à la demande.
L'API nécessite une authentification à l'aide d'un jeton Bearer. Vous pouvez définir le jeton de deux manières :
Variable d'environnement : définissez la variable d'environnement PYMULTITOR_TOKEN :
export PYMULTITOR_TOKEN="your-secret-token-here"
Remarque : si PYMULTITOR_TOKEN n'est pas défini, PyMultiTor générera automatiquement un jeton aléatoire pour vous.
Ligne de commande : démarrez PyMultiTor :
pymultitor
Changer d'identité
/identityPOSTExemple d'utilisation :
curl http://pymultitor/identity -X POST \
--header "Proxy-Authorization: Bearer {Token}" \
--proxy http://localhost:8080
Statut
/statusGETExemple d'utilisation :
curl http://pymultitor/status \
--header "Proxy-Authorization: Bearer {Token}" \
--proxy http://localhost:8080
Remarque : remplacez {Token} par votre jeton d'authentification réel.
pymultitor --help
usage: pymultitor.py [-h] [-v] [-lh LISTEN_HOST] [-lp LISTEN_PORT] [-s] [-a AUTH] [-i] [-d] [-p PROCESSES] [-c CMD] [-e CONFIG] [-t TIMEOUT] [-r TRIES]
[--request-timeout REQUEST_TIMEOUT] [--on-count ON_COUNT] [--on-string ON_STRING] [--on-regex ON_REGEX] [--on-rst] [--on-status-code [ON_STATUS_CODE ...]]
[--on-timeout]
options:
-h, --help affiche ce message d'aide et quitte
-v, --version affiche le numéro de version du programme et quitte
-lh, --host LISTEN_HOST
hôte d'écoute du proxy. (défaut : 127.0.0.1)
-lp, --port LISTEN_PORT
port d'écoute du proxy (défaut : 8080)
-s, --socks utiliser comme proxy SOCKS (pas proxy HTTP) (défaut : False)
-a, --auth AUTH définir l'authentification du proxy (format : 'nom_utilisateur:mot_de_passe') (défaut : )
-i, --insecure SSL non sécurisé (défaut : False)
-d, --debug Journal de débogage. (défaut : False)
-p, --tor-processes PROCESSES
nombre de processus tor dans le cycle (défaut : 2)
-c, --tor-cmd CMD commande tor (chemin de l'exécutable + arguments) (défaut : tor)
-e, --tor-config CONFIG
configuration json étendue de tor (défaut : {})
-t, --tor-timeout TIMEOUT
délai d'attente en secondes pour le démarrage d'une instance tor ; 0 désactive le délai d'attente (défaut : 90)
-r, --tor-tries TRIES
nombre de tentatives pour démarrer une instance tor avant échec (défaut : 5)
--request-timeout REQUEST_TIMEOUT
délai d'attente en secondes pour les requêtes HTTP ; 0 désactive le délai d'attente (défaut : 0)
--on-count ON_COUNT changer d'IP toutes les x requêtes (les ressources sont également comptées) (défaut : 0)
--on-string ON_STRING
changer d'IP lorsque la chaîne est trouvée dans le contenu de la réponse (défaut : )
--on-regex ON_REGEX changer d'IP lorsque l'expression régulière est trouvée dans le contenu de la réponse (défaut : )
--on-rst changer d'IP lorsque la connexion est fermée avec RST TCP (défaut : False)
--on-status-code [ON_STATUS_CODE ...]
changer d'IP lorsque l'un des codes de statut spécifiés est renvoyé (défaut : [])
--on-timeout changer d'IP lorsque la requête expire (défaut : False)