web-dev-qa-db-ja.com

Wiresharkを使用してSQLServerトラフィックをデコードするにはどうすればよいですか?

Wiresharkを使用してパケットをキャプチャできますが、ストリームをわかりやすいものにデコードできません。このバグは、SQL Server2005以降ではこれが不可能な可能性があることを示唆しています... https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=3098 Stack Overflowは、これがこの質問への回答において優れた方法であると主張しました: SQL Serverトラフィックを暗号化する方法は? 。助けていただければ幸いです。

19
Pete

編集(2017-05-02):Microsoft Network Monitor-は Microsoft Message Analyzer -に置き換えられました。これは同じ目的を果たします。使用方法については、この回答の下のコメントまたはさらに下の回答も参照してください。


元の回答:

Microsoft自体からのもう1つの非常に過小評価されているツールがあります:「MicrosoftNetworkMonitor」。基本的に、これはwiresharkと非常に似ていますが、一部の特定のMSプロトコルは、wireshark自体よりもパーサーと視覚化のサポートが優れており、明らかにWindowsでのみ実行されます;-)。

このツールはかなり古く、見捨てられているように見えますが(これまでのところ新しいリリースは見られませんでした)、それでもうまく機能し、新しいプロトコルを定義するための文法は非常に巧妙で興味深いものです。したがって、これは将来に向けて大きな力を持っています。 mnm 3.4 about dialog

分析例-記録はTDS用にフィルタリングされているため、他のパケットはほとんど破棄されます。

Example Session for TDS (MSSQL)

これは、SQLサーバー接続にも当てはまります。 MNMは、ネットワークを通過する結果セットを視覚化することもできます。それでも、上記のwiresharkは、ワイヤー自体に暗号化と適用された証明書を検証するのに十分です。 TDS-Protocollを完全に理解できることを意味します。

TLSの処理

また、拡張機能(いわゆるエキスパート)「NmDecrypt」と適切な証明書(秘密鍵を含む)を使用すると、プロトコルを復号化できます-TDSの内部でTLSを使用するTDSには非常に適しています-不思議ではありません-まだ誰も実際に実装していません完全にサポートされているwiresharkのプロトコルとして;)

これまでのところ(MSSQLトラフィックに関して)、またはより正確なTDSプロトコルについては、これは私がこれまでに出会った中で最高のツールです。 Wiresharkはかっこいいですが、この場合、MNMの方が「優れています」。プン! ;)

ツールへのリンク:

10
dalini

Wiresharkではありませんが、私にとっては Microsoft Message Analyzer はそのためにうまく機能しました。

送信されたすべてのコマンドを取得するには

  1. 新しいセッションを開始します
  2. ライブトレースをデータソースとして追加
  3. シナリオの選択(私はローカルネットワークインターフェイスを選択しました)
  4. * address == 10.1.2.129のようなセッションフィルター式を入力して、SQLサーバーへのトラフィックのみをフィルター処理します。
  5. 開始をクリックします
  6. マッサージテーブルの列ヘッダーを右クリックして、列を追加...を選択します
  7. 追加TDS> SQLBatch> SqlBatchPacketData> SQLText

これにより、次のようなものが得られます enter image description here

残念ながら、現時点では自動スクロールは実装されていませんが、タイムスタンプで並べ替えると、新しいクエリが上部にポップアップ表示されます。

あなたが言及している質問は、トラフィックが暗号化されていることをどのように証明するかです。

そのため、彼らはあなたがそれを読むことができないことを示すためにwiresharkを使用していました。

以前のバージョンのSQLServerでは暗号化が弱かったのですが、SQL Server2005のトラフィックを復号化するのは簡単ではないと思います。

2
Shiraz Bhaiji

Wiresharkは、プロトコル(およびレイヤー)を理解すると、キャプチャしたデータをデコードして表示します。これは、キャプチャされたデータが暗号化されていないことを意味します。データが暗号化されている場合(SSLなど)、WSはSSLハンドシェイクと生データのみを表示します。

1
patux