
PyMultitor - Python 멀티 스레드 Tor 프록시
Python 멀티 스레드 Tor 프록시,
동시에 두 곳에 존재하고 싶었던 적이 있나요?
이 질문을 스스로에게 던졌을 때, 실제로 이 솔루션을 머릿속에서 개발하기 시작했습니다.
침투 테스트를 수행하는 동안 "공격" IP를 차단하는 보안 장치로 인한 문제가 자주 발생합니다.
이것이 정말 짜증나서, 이 문제에 대한 해결책을 제공하는 스크립트를 작성했습니다.
많은 수의 IP 주소로 공격을 수행하면 더 나은 결과가 보장됩니다 - 특히
공격(웹 애플리케이션 방화벽 우회, 무차별 대입 공격 등)을 시도할 때 더욱 그렇습니다.
[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 (Hebrew)] 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 인수를 사용하세요 (예: 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
# Install python dependencies.
# Depending on your setup, one or both of these may require sudo.
pip3 install -r requirements.txt
python3 setup.py install
# Confirm that everything works
pymultitor --help
설치 문제에 대한 버그 보고는 환영합니다!
pymultitor --on-string "Your IP Address Blocked"를 실행합니다.http://127.0.0.1:8080)를 사용하세요.Your IP Address Blocked 문자열이 나타나면, 다른 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 문자열이 나타나면, 다른 IP 주소로 변경됩니다.PyMultiTor는 프록시 ID를 관리하기 위한 REST API를 제공합니다. 필요에 따라 API를 사용하여 프록시 ID를 변경할 수 있습니다.
API는 Bearer 토큰을 사용한 인증이 필요합니다. 토큰은 두 가지 방법으로 설정할 수 있습니다:
환경 변수: PYMULTITOR_TOKEN 환경 변수를 설정합니다:
export PYMULTITOR_TOKEN="your-secret-token-here"
참고: PYMULTITOR_TOKEN이 설정되지 않으면 PyMultiTor가 자동으로 무작위 토큰을 생성합니다.
명령줄: PyMultiTor를 시작합니다:
pymultitor
ID 변경
/identityPOST사용 예:
curl http://pymultitor/identity -X POST \
--header "Proxy-Authorization: Bearer {Token}" \
--proxy http://localhost:8080
상태
/statusGET사용 예:
curl http://pymultitor/status \
--header "Proxy-Authorization: Bearer {Token}" \
--proxy http://localhost:8080
참고: {Token}을 실제 인증 토큰으로 바꾸세요.
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)