Предоставить мастер-ключ сеанса для Wireshark UI?
Я работаю над проблемой с HTTPS. Я подозреваю, что это связано с клиентскими сертификатами. Я хочу прочитать некоторые зашифрованные сообщения о рукопожатии, которые следуют ServerHelloDone
сообщение. (Однажды ServerHelloDone
отправляется, поток обычно переключается на зашифрованный):
Трассировка 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 ответ
Предполагается, что у вас есть файл, содержащий закрытый ключ, содержащий что-то вроде
-----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.
Не забудьте включить пустую строку в файл