HTTP / HTTPS 트래픽을 탐지하기 위해 어떤 도구를 사용할 수 있습니까? HTTP / HTTPS

HTTP / HTTPS 요청을 가로 채고 다음과 같은 정보를 추출하고 (콘텐츠, 대상 등) 다양한 분석 작업을 수행하고 마지막으로 요청을 삭제할지 여부를 결정할 수있는 명령 줄 도구를 찾고 있습니다. 법적 요청은 신청서로 전달되어야합니다.

본질적으로 tcpdump, Wireshark 또는 Snort 와 비슷하지만 HTTP 레벨에서 작동 하는 도구입니다 .

참고 문헌



답변

mitmproxy를 사용해보십시오 .

  • mitmproxy는 SSL을 지원하는 HTTP 용 중간자 프록시입니다. 트래픽 흐름을 즉시 검사하고 편집 할 수있는 콘솔 인터페이스를 제공합니다.

  • mitmdump는 기능은 동일하지만 사용자 인터페이스는없는 mitmproxy의 명령 행 버전입니다. tcpdump를 HTTP로 생각하십시오.

풍모

  • HTTP 요청 및 응답을 가로 채고 즉시 수정하십시오.
  • 나중에 재생하고 분석 할 수 있도록 완전한 HTTP 대화를 저장하십시오.
  • HTTP 대화의 클라이언트 측을 재생하십시오.
  • 이전에 기록 된 서버의 HTTP 응답을 재생합니다.
  • 트래픽을 지정된 서버로 전달하려면 프록시 모드를 반전시킵니다.
  • Python을 사용하여 HTTP 트래픽을 스크립트로 변경하십시오.
  • 차단을위한 SSL 인증서는 즉시 생성됩니다.

스크린 샷

   

로컬 호스트의 포트 4000에서 수신 대기하는 Jekyll Bootstrap 앱 의 예를 설정했습니다 . 트래픽을 가로 채려면 다음을 수행하십시오.

% mitmproxy --mode reverse:http://localhost:4000 -p 4001

그런 다음 웹 브라우저 ( http://localhost:4001) 에서 포트 4001의 내 mitmproxy에 연결하면 다음 과 같은 결과가 나타납니다.

   

그런 다음 GET결과를 선택 하여 해당 헤더 정보를 볼 수 있습니다 GET.

   

참고 문헌


답변

상황에 따라 들어오는 HTTP 요청을 수락하고 나가는 HTTPS 요청을하는 프록시를 사용할 수 있습니다. 예를 들어, gitgithub.com 간의 트래픽을 캡처하고 싶었 습니다. 나는 mitmproxy를 사용 했다 :

mitmproxy -s httpser.py

어디에 httpser.py:

def request(context, flow):
  flow.request.scheme = 'https'
  flow.request.port = 443

나는 다음 git과 같이 달렸다 .

export http_proxy="http://127.0.0.1:8080/"
git clone http://github.com/oxplot/difftr

이제 wireshark청취를 사용 localhost하여 일반 트래픽을 캡처 할 수 있습니다. 프록시가 없으면 github은 gitHTTPS를 사용하도록 리디렉션 합니다.


답변

mitmproxy/mitmdump

에 Equalivant tcpdumpHTTPS이기 때문이다 mitmdump. 단계는 다음과 같습니다.

  1. mitmproxy패키지를 설치하십시오 (macOS 🙂 brew install mitmproxy.
  2. 다음 명령으로 mitmproxy CA 인증서 를 설치 하십시오 .

    $ mitmdump --mode reverse:http://mitm.it/ -p 8080
    $ wget --content-disposition http://localhost:8080/cert/pem
    $ open mitmproxy-ca-cert.pem
    # Open, install and mark the certificate as trusted.
    

다음은 리버스 프록시를 테스트하는 방법에 대한 간단한 테스트입니다.

  1. 다음을 실행하십시오 mitmdump --mode reverse:https://example.com/ -p 4433.
  2. 다른 쉘에서 다음을 실행하십시오 curl https://localhost:4433..

    이제 페이지 소스를보고 mitmdump명령은 다음과 같은 출력을 생성해야합니다.

    Proxy server listening at http://*:4433
    [::1]:49446: clientconnect
    [::1]:49446: GET https://example.com/ HTTP/2.0
              << 200  1.24k
    [::1]:49446: clientdisconnect
    

모든 트래픽에 대해 다음을 실행하십시오. mitmdump또는 mitmproxy.

자세한 내용은 mitmproxy문서 페이지 를 참조하십시오.


찰스 프록시

macOS 를 사용하는 경우 호스트 간의 모든 HTTP 및 SSL / HTTPS 트래픽을 볼 수있는 Charles 프록시 앱 (GUI)도 있습니다.