Fornece a chave mestra da sessão para a interface do usuário do Wireshark?

1

Estou trabalhando em um problema com HTTPS. Eu suspeito que isso esteja relacionado a certificados de clientes. Desejo ler algumas das mensagens de handshake criptografadas que seguem a mensagem ServerHelloDone . (Quando o ServerHelloDone é enviado, o fluxo geralmente é alterado para criptografado):

OtraçadoWiresharkfoigeradocoms_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

Como o rastreio do Wireshark foi gerado com s_client , eu tenho a chave mestra para a sessão. Eu tenho a chave mestra porque s_client imprimiu no terminal. OBSERVAÇÃO : não reivindico nada sobre a chave pública ou privada do servidor. Eu só pretendo ter uma chave para esta sessão.

Eu visitei Secure Socket Layer (SSL) no wiki do Wireshark, mas ele não diz como conectar a chave mestra a GUI. (Eles discutem como usá-lo, mas não está relacionado à GUI).

Existe uma maneira de conectar a chave mestra na interface gráfica do Wireshark para que eu possa ler o tráfego criptografado?

    
por jww 07.08.2014 / 22:48

1 resposta

1

Supondo que você tenha um arquivo contendo a chave privada, contendo algo como

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

você precisa abrir o wireshark - > editar - > preferências ....

Na coluna da esquerda, localize em "protocolos" o item "SSL". Dependendo da versão, a sintaxe pode variar. Assumindo a versão mais atualizada, em "Lista de chaves RSA", clique em Editar ... Em seguida, em "Novo" e preencha os campos, usando "http" como protocolo (não https) e deixando a senha em branco.

NOTA: em algumas circunstâncias, você não poderá descriptografar:

  • se você não capturou TODO o tráfego, desde o primeiro pacote
  • se o cliente reutilizou uma sessão SSL (verifique no pacote client_hello por "ID da sessão")
  • se o SSL foi negociado com sigilo de encaminhamento

Eu descobri que também há outra possibilidade: se você tiver ID de sessão e chave mestra, você poderia configurar um arquivo como este (eu copiei os dados da sua saída openssl):

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

e sob as preferências SSL no wireshark, aponte o nome do arquivo de log (Pre) -Master-Secret para ele.

Lembre-se de incluir uma linha em branco no arquivo

    
por 07.08.2014 / 23:51