HTTP / HTTPSトラフィックのスニッフィングにはどのツールを使用できますか?


23

HTTP / HTTPSリクエストをインターセプトし、(コンテンツ、宛先など)などの情報を抽出し、さまざまな分析タスクを実行し、リクエストをドロップするかどうかを最終的に決定できるコマンドラインツールを探しています。法的要求は、アプリケーションに転送する必要があります。

本質的にtcpdumpWireshark、またはSnortに似ていますが、HTTPレベルで動作するツール。

参照資料

回答:


20

mitmproxyを試してください。

  • mitmproxyは、HTTP対応のSSL対応の中間者プロキシです。トラフィックフローをオンザフライで検査および編集できるコンソールインターフェイスを提供します。

  • mitmdumpはmitmproxyのコマンドラインバージョンであり、同じ機能を備えていますが、ユーザーインターフェイスはありません。HTTP用のtcpdumpを考えてください。

特徴

  • HTTPリクエストとレスポンスをインターセプトし、その場で変更します。
  • 後で再生および分析するために、完全なHTTP会話を保存します。
  • HTTP会話のクライアント側を再生します。
  • 以前に記録されたサーバーのHTTP応答を再生します。
  • 指定されたサーバーにトラフィックを転送するリバースプロキシモード。
  • Pythonを使用して、HTTPトラフィックにスクリプト化された変更を加えます。
  • 傍受用のSSL証明書は、その場で生成されます。

スクリーンショット

   サンプルSS

localhostのポート4000でリッスンしているサンプルのJekyll Bootstrapアプリをセットアップします。トラフィックを傍受するには、次のようにします。

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

次に、Webブラウザー(http://localhost:4001)からポート4001でmitmproxyに接続します。これにより、mitmproxyが次のようになります。

   JB#1付きmitmproxyのss

その後、任意のGET結果を選択して、それに関連するヘッダー情報を表示できますGET

   JB#2付きmitmproxyのss

参照資料


3

状況によっては、着信HTTP要求を受け入れ、発信HTTPS要求を行うプロキシを使用できます。例として、gitとgithub.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

wiresharklisten on を使用してlocalhost、プレーントラフィックをキャプチャできます。プロキシがなければ、githubはgitHTTPSを使用するようリダイレクトします。


2

mitmproxy/mitmdump

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 Proxyアプリ(GUI)もあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.