最近、シッククライアントアプリケーションの侵入テストについて学び、シッククライアントアプリケーショントラフィックを傍受するためのツールを入手するのが難しいことがわかりました。
誰かがペンテストのためにシッククライアントアプリケーションに出くわしたり、シッククライアントアプリケーションのBurp Suiteのようなインターセプタープロキシとして機能するソフトウェアがあるかどうかを知っていますか? httpトラフィックだけでなく、tcpトラフィックも傍受できるツールを探しています。
私はグーグルでいくつかの検索を行ったところ、 Mallory が見つかりました。これまでのところ、これは私が見つけることができる最高のツールです。私はそれをテストし、それは期待通りに機能していますが、安定しておらず、しばらく更新されていません。
私が直面している別の問題は、アプリケーションがWindowsドメイン認証(NTLM認証)を使用している場合、TCPトラフィックが暗号化されることです。プレーンテキストトラフィックを確認して変更する方法はありますか。サーバーに送信される前のデータ(BurpがHTTPSトラフィックに対してそれを行ったのと同じように)?
このツール https://github.com/jrmdev/mitm_relay はこれを行うようです。これはトリックを使用します:すべてのリクエストをHTTPに埋め込みますPOSTリクエストは、burpを介してそれをリレーし、任意のプロトコルでburpのすべての機能を使用できます(バイナリは難しい場合があります)。 http部分を取り除き、コンテンツをサーバー/クライアントに転送するプロキシへのリクエスト。
HTTPと一般的なTCPトラフィックの両方をインターセプトできるツールを探している場合、これも活発に開発中であるため、 bettercap を参照することをお勧めします。
HTTPインセプションのようなものが組み込まれており、他のプロトコルを処理するモジュールを追加するためのフレームワークがあります。
Ianが提案したように、Burp Suite Invisible Proxyモードは、プロキシを認識しないシッククライアントアプリケーションからのリクエストをキャプチャするのに最適です。
シッククライアントアプリケーションがwww.example.comにリクエストを送信するとします。げっぷを介して要求をキャプチャするには、次の操作を実行できます。
127.0.0.1 www.example.com
2.次のげっぷは、ループバックローカルIPアドレスをリッスンする必要があります。 127.0.0.1とアプリケーションが使用するポートをリッスンするようにげっぷを構成します。
ただし、上記の方法には、リクエストがドメイン名ではなくIPに直接送信された場合、burpが処理できないという制限があります。これはBurp Suite with Microsoft Loopback Adapter Methodによって克服できます。下記のリンクはあなたにそれの明確な考えを与えるかもしれません。
ペンテストの公式のレポートを書くつもりなら、コンテキストISから Canape をお勧めします。
これは、私が遭遇した中で最高のGUIベースのプラグイン可能なプロキシであるだけでなく、適切に設計されたインターフェイスを持つ唯一のものです。
BenjaminHの回答では、ニースであるBurpを使用しています。私はこのBurpアドオンにも遭遇しました- https://github.com/summitt/Burp-Non-HTTP-Extension -これはより機能的だと思います。しかし、もしあなたがレポートのために素晴らしいものを欲しければ、Canapeはおそらくまだ行く道です。
Burpはすべてのタスクに適しています。非プロキシ対応のシッククライアントアプリケーションのトラフィックを傍受するために特別に設計された「非表示」モードがあります。これが意図したとおりに機能する場合、暗号化されたTCPトラフィックも傍受する必要がなくなる可能性があります。
詳細はこちら: https://portswigger.net/burp/help/proxy_options_invisible.html
幸運とHTH!
私はマレットと呼ばれる任意のプロトコルを傍受するためのツールに取り組んでいます。 Nettyフレームワークに基づいており、ハンドラーのパイプラインとして編成されています。ハンドラの一般的な「グラフ」は次のようになります。
Listener->SOCKS Server->Handler->Handler->Interceptor->Handler->Target
SOCKSサーバーハンドラーは接続を受け入れ、SOCKSハンドシェイクをクライアントとネゴシエートして、接続の中継先を決定します。クライアントにSOCKSハンドシェイクをネゴシエートさせることは、構成設定と同じくらい簡単かもしれませんし、何らかの方法でクライアントをsocksifyすること(tsocks、sockscapなど)を伴うかもしれません。
ハンドラーは、SSL、HTTP、MQTTなどのさまざまなプロトコルを実装する既存のNetty ChannelHandlersのいずれか、または問題のプロトコルをより簡単に操作できるものにデコードする、独自に作成したカスタムChannelHandlerの場合があります。おそらく最も重要なのは、ストリームを個々のメッセージに分割し、次にバイトを何らかのオブジェクトに変換するフレームデコーダーです。
また、Groovy、Nashorn(ECMAScript)、JLua、Jython、JRubyなどのJSR223スクリプト言語を使用してスクリプトを実行できる単純なScriptHanderクラスも実装しました。これにより、メッセージの処理を自動化できます。クライアントまたはサーバーのタイムアウトが原因です。 (タイムアウトは、HTTPの世界では問題の少ないものです!)
インターセプターを使用すると、メッセージを(必要に応じて)表示および手動で編集してから、メッセージを別のハンドラー(チェックサムの再計算など)に渡し、最後にターゲットに渡すことができます。
https://github.com/RoganDawes/Mallet で、githubリポジトリの初期の進捗状況を確認できます。
問題やプルリクエストは大歓迎です。
多くの機能を備えたインターセプトプロキシである mitmproxy をお勧めします。これにより、ターゲットホストとの間で転送される前にパケットをインターセプトして変更できます。
トランスペアレントプロキシ を許可します。これは、プロキシ設定を追加するオプションがないか、オペレーティングシステムのプロキシ設定を尊重しないアプリケーションに役立ちます。
インストールした自己署名CAを使用して TLSを検査 する機能があります。
インターネットにアクセスするためにプロキシを使用する必要がある環境にいる場合に便利な pstream proxy でmitmproxyを使用できます。
それは非常に柔軟性があり、インタラクティブなGUIを使用して単純なインターセプトプロキシとして使用するか、またはpythonライブラリとして使用して、プログラムでパケットを検査および変更できます。いくつかあります- examples GitHubで。
インターセプトの目的で Fiddler を使用することを好みます。これは無制限の機能で簡単に使用できます。
手順については Fiddlerを使用したHTTPSDecryption を確認できます。