Предоставить мастер-ключ сеанса для Wireshark UI?

2005
jww

Я работаю над проблемой с HTTPS. Я подозреваю, что это связано с клиентскими сертификатами. Я хочу прочитать некоторые из зашифрованных сообщений рукопожатия, которые следуют за ServerHelloDoneсообщением. (После ServerHelloDoneотправки поток обычно переключается на зашифрованный):

enter image description here

Трассировка Wireshark была создана с помощью s_client:

$ echo -e "GET / HTTP/1.1\nHost:example.net\n" | openssl s_client -connect example.net:443 -ssl3 -ign_eof -CAfile Equifax_Secure_Certificate_Authority.pem  CONNECTED(00000003) ... --- Certificate chain 0 s:/C=ES/ST=Malaga/L=Malaga/O=Example, LLC/CN=www.example.net/OU=Example IT i:/C=US/O=GeoTrust Inc./CN=GeoTrust SSL CA - G2 1 s:/C=US/O=GeoTrust Inc./CN=GeoTrust SSL CA - G2 i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA 2 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority --- Server certificate -----BEGIN CERTIFICATE----- MIIExjCCA66gAwIBAgIQeee0uwSySeNXOkI+BUoMMzANBgkqhkiG9w0BAQUFADBE MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMU ... doLsKI2R6RQA/7IcuTpKkvLF5wYKvmocPxYVg9FOoFvKV0wjWo6qlwsANPAVov+7 zFzZreROa7lBj8UH0IyYjLmBrbe1yMr/Cmg= -----END CERTIFICATE----- ... New, TLSv1/SSLv3, Cipher is RC4-SHA Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : SSLv3 Cipher : RC4-SHA Session-ID: 663C000068D5E2DFCC69EE1FA40489927A80EFE118703BBAD28E1E81EDD02B15 Session-ID-ctx:  Master-Key: ACB5F8C6302DE96555A680FBD37A83CBF81087368685A36B2B04E23A822E403CDF35FAACF959F55107AC4641AE1531DB Key-Arg : None PSK identity: None PSK identity hint: None SRP username: None Start Time: 1407443412 Timeout : 7200 (sec) Verify return code: 0 (ok) ... read R BLOCK HTTP/1.1 301 Moved Permanently Cache-Control: private Content-Type: text/html; charset=utf-8 Location: /Login/Login Server: Microsoft-IIS/7.5 X-AspNetMvc-Version: 3.0 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Thu, 07 Aug 2014 20:29:46 GMT Content-Length: 129  <html><head><title>Object moved</title></head><body> <h2>Object moved to <a href="/Login/Login">here</a>.</h2> </body></html> ^C 

Поскольку трассировка Wireshark была сгенерирована s_client, у меня есть главный ключ для сеанса. У меня есть мастер-ключ, потому что s_clientон распечатан на терминале. ПРИМЕЧАНИЕ . Я не требую ничего относительно открытого или закрытого ключа сервера. Я только утверждаю, что у меня есть ключ для этой сессии.

Я посетил Secure Socket Layer (SSL) в вики Wireshark, но там не сказано, как подключить мастер-ключ к GUI. (Они обсуждают, как его использовать, но это не связано с GUI).

Есть ли способ подключить главный ключ к графическому интерфейсу Wireshark, чтобы я мог читать зашифрованный трафик?

1
«Сверху, у меня есть мастер-ключ», нет, нет. У вас есть открытый ключ. Это означает, что вы можете зашифровать контент. Закрытый ключ находится на удаленном сервере, и вы не сможете его получить, если только у вас не будет этого сервера. Zoredache 10 лет назад 1
@Zoredache - я ничего не утверждал о паре ключей сервера. `s_client` выводит мастер-ключ для сеанса. У меня есть это, потому что `s_client` печатает это к терминалу. (Связанный: я не уверен, является ли это секретом перед главным или главным секретом, но я разберусь с этим при необходимости). jww 10 лет назад 0
https://isc.sans.edu/forums/diary/Psst+Your+Browser+Knows+All+Your+Secrets/16415 cychoi 9 лет назад 1

1 ответ на вопрос

1
NuTTyX

Предполагается, что у вас есть файл, содержащий закрытый ключ, содержащий что-то вроде

-----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQCsiEqJU4M76dlpmhb69DciXhLGkHX8mIoaQsCyy+Qx1rzSFp1L WFrDBR4v9zyyO11F8eRdc+AZqbhlzEq+HV5qH9MYnKeKJZMUlMSvE675aZzx2DWY rHdR1RyDpyxQvL8yKsAmoxY9WoesYU37gwk3al2C2lGL1MyxXT863ku0swIDAQAB [...] 2xZo60YQkK6sKoxxDZFfnE6pYGiluSaYHmem42Sn7ZWarfMFgJGS92EZXGCBQIun 6Q5pB4pxj6iUMkT7joECQAzRrRCHpKtJmFoxEZ/xhGVUpUUulCor4Xe5Mo6mJdJw ZjAAI3aJW4RWouEUPR1voTKHewFNUqXYE48zpElzpYM= -----END RSA PRIVATE KEY----- 

вам нужно открыть wireshark -> изменить -> настройки ....

В левом столбце найдите в разделе «протоколы» пункт «SSL». В зависимости от версии синтаксис может отличаться. Предполагая самую последнюю версию, в разделе «Список ключей RSA» нажмите «Изменить ...», затем «Новый» и заполните поля, используя «http» в качестве протокола (не https) и оставив пароль пустым.

ПРИМЕЧАНИЕ: в некоторых случаях вы не сможете расшифровать:

  • если вы не захватили ВСЕ трафик, так как самый первый пакет
  • если клиент повторно использовал сеанс SSL (проверьте пакет client_hello на наличие «идентификатора сеанса»)
  • если SSL был согласован с прямой секретностью

Я обнаружил, что есть и другая возможность: если у вас есть и Session-ID, и Master-Key, вы можете настроить файл следующим образом (я скопировал данные из вашего вывода openssl):

RSA Session-ID:663C000068D5E2DFCC69EE1FA40489927A80EFE118703BBAD28E1E81EDD02B15 Master-Key:ACB5F8C6302DE96555A680FBD37A83CBF81087368685A36B2B04E23A822E403CDF35FAACF959F55107AC4641AE1531DB 

и в настройках SSL на wireshark укажите имя файла журнала (Pre) -Master-Secret.

Не забудьте включить пустую строку в файл

Спасибо NuTTyX. У меня нет ключа [server] или файла ключа. Используя OpenSL `s_client`, у меня есть главный секрет для сеанса, который наблюдал Wireshark. jww 10 лет назад 0

Похожие вопросы