web-dev-qa-db-ja.com

ネットワークまたはpcapファイルからのSSL証明書の抽出

ライブHTTPS接続(ネットワークから直接)またはネットワークトレースファイル(pcapファイル)からSSL/TLS証明書を抽出するためのツールやアプローチを誰かに教えていただければ幸いです。 ssldumpを使用してみましたが、証明書を抽出できませんでした。これにはWiresharkを(手動で)使用することもできますが、自動化したい。これにはLinuxプラットフォームを使用しています。ありがとう

編集:SSLハンドシェイク中にサーバーがクライアント(ブラウザー)に送信するSSL証明書を抽出したい。ネットワークスニファー(tcpdump)を使用してネットワークのSSL接続をキャプチャし、結果のpcapファイルから証明書を抽出したい(またはライブで実行したい)。

5
Apakoh

特定の形式(PEM/DER/...)の証明書が必要ですか?

ssldumpは、-Nオプションを使用して解析済みのASN.1証明書を表示し、-rを使用してpcapファイルを入力として読み取ることができます。次のコマンドは、人間が読める形式で証明書を表示します。

ssldump -Nr file.pcap | awk 'BEGIN {c=0;} { if ($0 ~ /^[ ]+Certificate$/) {c=1; print "========================================";} if ($0 !~ /^ +/ ) {c=0;} if (c==1) print $0; }'

Awkスクリプトは最もクリーンではありませんが、仕事をします(改善以上の歓迎)。

Ssldumpの-xオプションは、実際のパケットペイロード(packet_data)を表示します。これには、レコードレイヤーとハンドシェイクプロトコルフィールドが含まれます(つまり、証明書のみではありません)。よりインテリジェントなスクリプト/コードは、そこから抽出して、より一般的な形式に変換できる場合があります。

3
nrolans

SSLトラフィック(HTTPSなど)を使用してPCAPファイルからX.509証明書を抽出する最も簡単な方法は、PCAPを無料のオープンソースソフトウェアNetworkMinerにロードすることです。抽出された証明書は、NetworkMinerの[ファイル]タブにあります。

NetworkMinerは、次のいずれかに行くSSL/TLSセッションからX.509証明書をディスクに自動的に抽出しますTCPポート:443、465、563、992、993、994、995、989、990、 5223、8170、8443、9001、9030。

こちらからNetworkMinerをダウンロードできます: http://sourceforge.net/projects/networkminer/

また、LinuxにNetworkMinerをインストールして実行する方法については、このガイドを参照してください。 http://www.netresec.com/?page=Blog&month=2014-02&post=HowTo-install-NetworkMiner-in-Ubuntu-Fedora- and-Arch-Linux

1
netresec

ライブ接続は通常、セッションの最初に設定されるセッションキーで暗号化されます。そのセッションのハンドシェイクのダンプがない限り、すべてのキーがあってもそれらをスヌープすることはできません。

しかし、どのホストとポートが通信しているかを確認できます。サーバーSSL証明書は通常、ポートとホストにバインドされているため、サーバーSSL証明書を簡単に確認できます

openssl s_client -connect example.com:443

どこ example.comはサーバーであり、443は、クライアントが接続するポートです。

0
sanmai