web-dev-qa-db-ja.com

SSLを介して独自プロトコルをファズする方法

私はSSL(ポート443)経由で送信された独自仕様のカスタムプロトコルを使用するクライアント/サーバーアーキテクチャの脆弱性調査を行っています。トラフィックを傍受し、クリアテキストで Wireshark のような形式で表示し、トラフィックを変更してサーバーに送信できるようにする必要があります。 「クライアント」は、Microsoft Officeプラグインです。私の最終目標は、暗号化されていないネットワーク通信をファジングできるようにすることです。

OpenSSLを使用して自己署名証明書を生成し、秘密鍵を「データ」プロトコルとしてWiresharkにインポートしようとしましたが、うまくいきませんでした。 「暗号化されたアプリケーションデータ」としてデータがまだ表示されます。

私はこれら2つのリンクをたどってみました:

しかし、それらはHTTPの例を提供します。これは独自のプロトコルであるため、違いがあるかどうかはわかりません(まだポート443経由で送信されます)。

私の最終目標は、サーバーの脆弱性を調査するために、 Sulley などのファザーを使用できるようにすることです。誰かがこれを達成するための良い方法を勧めますか?

8
eliteparakeet

転送中のSSLトラフィックを復号化するには、2つの方法があります。

1つ目は、サーバーの秘密鍵を取得することです。あなたがそれを持っているなら、あなたはそれをwiresharkにフィードすることができます。このための専用ツールもいくつかあります。しかし、それはサーバーの秘密鍵なしでは実行できません。

2つ目は、接続をMITMすることです。前に述べたように、フィドラーはこれを行います。これを行ういくつかの産業用グレードのツールもあります。問題は、クライアントが信頼する証明書が必要であることです。標準のWindows CAストアを使用する場合は、クライアントコンピューターでCAとして署名証明書を追加するだけで十分です。

2番目のオプションは、やりたいことに似ています。Fiddlerは、目的のツールと非常によく似ています。なぜなら、接続を「いじる」ことがまさにまさにしようとしていることだからです。

カスタムプロトコルを使用している場合は、カスタムコードを記述する必要があることに注意してください。しかし、それは可能です。

9
tylerl

fiddlerBurp Suite などのHTTPプロキシデバッガーを試すこともできます。これは、HTTPSがSSLレイヤーを介してデータを送信するため、SSLレイヤー上のカスタムプロトコルと同じです。プロキシデバッガーはman-in-the-middleアプローチを使用するため、クライアントがFiddlerの証明書を信頼するように設定する必要があります。この方法を使用して証明書を生成する必要はありません。

3
neo

tcpcatcher (無料、Java)を試すか、 への私の答えを見てくださいSSLで中間者攻撃を実行する簡単な方法は何ですか? 他のツールと方法の短いリスト。

サーバーに自己署名証明書を使用させることができた場合、Wiresharkを使用できるはずですが、暗号を制限する必要があります EDHキー交換が使用されていない(いいえ [〜#〜] pfs [〜#〜] 、そして への回答を参照してくださいssl鍵交換の技法を交換しますか? )。あなたが投稿した最初のリンクは、「方法2」でEDHを使用して、EveがRSA秘密鍵を持っているときに盗聴を防ぐことを参照しています。

0
mr.spuratic