web-dev-qa-db-ja.com

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

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

tcpdumpWireshark 、または Snort と性質が似ているツールですが、HTTPレベルで動作します。

参考文献

25
slm

mitmproxy を試してください。

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

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

特徴

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

スクリーンショット

sample ss

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

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

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

ss of mitmproxy w/ JB #1

次に、任意のGET結果を選択して、そのGETに関連付けられたヘッダー情報を表示できます。

ss of mitmproxy w/ JB #2

参考文献

20
slm

状況によっては、着信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

wiresharkを使用してlocalhostをリスニングすると、プレーントラフィックをキャプチャできます。プロキシがないと、githubはHTTPSを使用するようにgitをリダイレクトします。

3
Mansour

mitmproxy/mitmdump

HTTPSのtcpdumpに相当するのは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 docs page をご覧ください。


チャールズプロキシ

MacOSを使用している場合は、ホスト間のすべてのHTTPおよびSSL/HTTPSトラフィックを表示できる Charles Proxy アプリ(GUI)もあります。

2
kenorb