

自分のPCにインストールしたプロプライエタリなアプリケーションの通信内容を見るにはどうすればいいのでしょうか?  
Wiresharkを使ってこの通信を見てみたところサーバとの通信がSSLで暗号化されており、実際の内容はわかりませんでした。

SSLでの公開鍵で暗号化される共通鍵を入手できれば内容を復号できると思うのですが何か方法はありますか?

プロプライエタリなアプリケーションのためサーバの秘密鍵は不明です。

アプリケーションが動いているOS: Windows10 Home


CC BY-SA 3.0
2017-07-28T14:48:43.507
36752
2017-07-29T07:59:13.397
2017-07-29T02:17:55.520
4236
5246
question
windows network ssl wireshark
プロプライエタリなアプリケーションの暗号化された通信内容を見る


WiresharkでSSL通信をデコードするには

  * 秘密鍵を入手する
  * セッション鍵を入手する

のどちらかが必要ですが、今回の要件では難しそうです。

HTTP
Proxyをサポートしているアプリケーションなのであれば、Fiddlerのようなデバッグ用のプロキシを使う方法があります。証明書の偽装が行えるので、SSLの通信も拾えます。ただし、アプリケーション側で証明書の偽装対策が行われているとだめです。

proxyのような明示的な形ではなくSSLの通信に割り込んで同様に証明書の偽装を行うことも技術的には可能なのですが、これを簡単にできるアプリケーションがあったかどうか思い浮かびません。


CC BY-SA 3.0
2017-07-29T01:56:44.820
36756
2017-07-29T01:56:44.820
5793
36752
answer


Windows上が前提とのことなので。

Internet ExplorerやWindows Updateなどは内部に通信ライブラリを持っており、それぞれ[Windows Internet
(WinINET)](https://msdn.microsoft.com/en-
us/library/aa385331\(v=vs.85\).aspx)と[Windows HTTP Services
(WinHTTP)](https://msdn.microsoft.com/en-
us/library/aa384273\(v=vs.85\).aspx)として公開されています。

プロプライエタリなアプリケーションが独自にSSLを扱うことは滅多になく、上記ライブラリを使用するかOpenSSL等のライブラリを使用していることが想定されます。運よく上記ライブラリを使用している場合、APIが公開されていますので、API呼び出しをフックすることで、アプリケーションに返されるSSL復号後の平文データを見ることも可能です。OpenSSLでもDLLに動的リンクしている場合は同様に可能とは思いますが、こちらは経験がありません。

どのようにフックするかなど技術的に困難な点もありますので、具体的な手順に関しては回答を控えます。


CC BY-SA 3.0
2017-07-29T07:59:13.397
36765
2017-07-29T07:59:13.397
4236
36752
answer