
PyMultitor - Proxy Tor multihilo en Python
Proxy Tor Multi Hilo en Python,
¿Alguna vez quisiste estar en dos lugares diferentes al mismo tiempo?
Cuando me hice esta pregunta, comencé a desarrollar esta solución en mi mente.
Al realizar pruebas de penetración a menudo surgen problemas causados por dispositivos de seguridad que bloquean la IP "atacante".
Esto realmente me molestaba, así que escribí un script para proporcionar una solución a este problema.
Con un gran número de direcciones IP realizando los ataques, se garantizan mejores resultados, especialmente al intentar
ataques para evadir Firewalls de Aplicaciones Web, ataques de tipo fuerza bruta y muchos más.
[Blackhat Asia] https://www.blackhat.com/asia-17/arsenal.html#pymultitor
[Presentación de OWASP-IL] https://www.owasp.org/images/3/3d/OWASPIL-2016-02-02_PyMultiTor_TomerZait.pdf
[Artículo de DigitalWhisper (Hebreo)] 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 en pymultitor (por
ejemplo: 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
# Instala las dependencias de Python.
# Dependiendo de tu configuración, uno o ambos comandos pueden requerir sudo.
pip3 install -r requirements.txt
python3 setup.py install
# Confirma que todo funciona
pymultitor --help
¡Se aceptan informes de errores sobre problemas de instalación!
pymultitor --on-string "Your IP Address Blocked".http://127.0.0.1:8080).Your IP Address Blocked esté presente en el contenido de la respuesta, saldrás desde otra dirección 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 esté presente en el contenido de la respuesta, saldrás desde otra dirección IP.PyMultiTor proporciona una API REST para gestionar identidades de proxy. Puedes usar la API para cambiar tu identidad de proxy bajo demanda.
La API requiere autenticación mediante un token Bearer. Puedes configurar el token de dos maneras:
Variable de entorno: Establece la variable de entorno PYMULTITOR_TOKEN:
export PYMULTITOR_TOKEN="your-secret-token-here"
Nota: Si no se establece PYMULTITOR_TOKEN, PyMultiTor generará automáticamente un token aleatorio para ti.
Línea de comandos: inicia PyMultiTor:
pymultitor
Cambiar Identidad
/identityPOSTEjemplo de uso:
curl http://pymultitor/identity -X POST \
--header "Proxy-Authorization: Bearer {Token}" \
--proxy http://localhost:8080
Estado
/statusGETEjemplo de uso:
curl http://pymultitor/status \
--header "Proxy-Authorization: Bearer {Token}" \
--proxy http://localhost:8080
Nota: Reemplaza {Token} con tu token de autenticación real.
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 show this help message and exit
-v, --version show program's version number and exit
-lh, --host LISTEN_HOST
proxy listen host. (default: 127.0.0.1)
-lp, --port LISTEN_PORT
proxy listen port (default: 8080)
-s, --socks use as socks proxy (not http proxy) (default: False)
-a, --auth AUTH set proxy authentication (format: 'username:pass') (default: )
-i, --insecure insecure ssl (default: False)
-d, --debug Debug Log. (default: False)
-p, --tor-processes PROCESSES
number of tor processes in the cycle (default: 2)
-c, --tor-cmd CMD tor cmd (executable path + arguments) (default: tor)
-e, --tor-config CONFIG
tor extended json configuration (default: {})
-t, --tor-timeout TIMEOUT
timeout in seconds for starting a tor instance; 0 disables timeout (default: 90)
-r, --tor-tries TRIES
number tries to start a tor instance before it fails (default: 5)
--request-timeout REQUEST_TIMEOUT
timeout in seconds for http requests; 0 disables timeout (default: 0)
--on-count ON_COUNT change ip every x requests (resources also counted) (default: 0)
--on-string ON_STRING
change ip when string found in the response content (default: )
--on-regex ON_REGEX change ip when regex found in The response content (default: )
--on-rst change ip when connection closed with tcp rst (default: False)
--on-status-code [ON_STATUS_CODE ...]
change ip when one of the specified status codes is returned (default: [])
--on-timeout change ip when request times out (default: False)