Назад | Перейти на главную страницу

Извлечение SSL-сертификатов из сети или файлов pcap

Буду признателен, если кто-нибудь может указать мне на инструмент или подход для извлечения сертификатов SSL / TLS из живых HTTPS-соединений (напрямую из сети) или из файла сетевой трассировки (файл pcap). Я попытался использовать ssldump, но мне не удалось извлечь сертификаты. Я также могу использовать для этого Wireshark (вручную), но я хочу сделать это автоматически. Я использую для этого платформу Linux. Спасибо

Изменить: я хочу извлечь сертификат SSL, который сервер отправляет клиенту (браузеру) во время рукопожатия SSL. Я хочу использовать сетевой сниффер (tcpdump) для захвата SSL-соединений в сети, а затем извлечь сертификаты из полученного файла pcap (или сделать это вживую).

Вам нужны сертификаты в определенном формате (PEM / DER / ...)?

ssldump может отображать проанализированные сертификаты ASN.1 с параметром -N и читать файл pcap как ввод с помощью -r. Следующая команда может показать вам сертификаты в удобочитаемой форме.

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

Сценарий awk не самый чистый, но выполняет свою работу (улучшения более чем приветствуются).

Параметр -x команды ssldump покажет вам фактическую полезную нагрузку пакета (packet_data). Это будет включать в себя поля уровня записи и протокола рукопожатия (т.е. не только сертификат). Более интеллектуальный сценарий / код мог бы извлечь его оттуда и преобразовать в более общий формат.

Самый простой способ извлечь сертификаты X.509 из файла PCAP с трафиком SSL (например, HTTPS) - загрузить PCAP в бесплатное программное обеспечение с открытым исходным кодом NetworkMiner. Вы найдете извлеченный сертификат на вкладке «Файлы» в NetworkMiner.

NetworkMiner автоматически извлекает сертификаты X.509 на диск из сеансов SSL / TLS, идущих на любой из следующих портов TCP: 443, 465, 563, 992, 993, 994, 995, 989, 990, 5223, 8170, 8443, 9001 и 9030 .

Вы можете скачать NetworkMiner здесь: http://sourceforge.net/projects/networkminer/

Также смотрите это руководство, чтобы узнать, как установить и запустить NetworkMiner в Linux: http://www.netresec.com/?page=Blog&month=2014-02&post=HowTo-install-NetworkMiner-in-Ubuntu-Fedora-and-Arch-Linux

Живые соединения обычно шифруются с помощью сеансового ключа, который устанавливается в начале сеанса. Вы не можете отслеживать их, даже если у вас есть все ключи, если у вас нет дампа рукопожатия этого сеанса.

Но вы можете видеть, какие хосты и порты обмениваются данными. SSL-сертификаты сервера обычно привязаны к порту и хосту, поэтому вы можете легко проверить SSL-сертификат сервера с помощью

openssl s_client -connect example.com:443

куда example.com это сервер и 443 это порт, к которому подключается ваш клиент.