Descriptografa o tráfego SSL com a ferramenta de linha de comando openssl 9

0

Depois que foi apontado o cliente estava solicitando o segredo mestre estendido e eu estava respondendo com isso também estava decifrando o segredo mestre como se nós não utilizássemos o segredo mestre estendido como definido I RFC7627 Eu mudei a codificação no meu servidor para responder de volta para não usar o segredo mestre estendido e executei o mesmo esboço de processo em meus posts anteriores part 6 , parte 7 e última parte 8

Executando o mesmo processo que o contorno com segredo mestre estendido não sendo enviado pelo servidor Eu descriptografei a mensagem criptografada de handshake Acredito corretamente quando vejo o (14) cliente finalizado e preenchimento adequado

$cat encmsg.bin | openssl aes-256-cbc -d -K $key -iv $iv -nopad |xxd
0000000: 1400 000c a5de 1f35 2324 e871 be46 82a0  .......5#$.q.F..
0000010: a1a0 d659 86b6 1c7f 043d d548 9a62 1e9d  ...Y.....=.H.b..
0000020: 23c6 f8d5 0b0b 0b0b 0b0b 0b0b 0b0b 0b0b  #...............

Para minha prova de conceito, eu quero pular a validação do terminado verificado para o cliente e ir direto para responder com a mensagem finalizada do meu servidor. Eu acredito que para calcular isso eu vou querer alimentar o openssl como eu estive onde

dados =

handshake_messages
         All of the data from all messages in this handshake (not
         including any HelloRequest messages) up to, but not including,
         this message.  This is only data visible at the handshake layer
         and does not include record layer headers

Mas estou um pouco confuso sobre isso porque o RFC também diz na mesma seção:

    The value handshake_messages includes all handshake messages starting
   at ClientHello up to, but not including, this Finished message.

Eu acredito que isso excluiria os primeiros 5 bytes 16 03 03 00 ?? Eu veria o cabeçalho e, embora as mensagens de saudação indiquem um protocolo de handshake, elas também são excluídas, por isso incluo no meu registro wireshark: Certificado, Troca de Chave do Cliente e Mensagem de Handshake Criptografado (mas estou um pouco confuso, isso pode começar com o clienthello e também incluir o serverhello basicamente tudo até este ponto excluindo os registros de cabeçalho)

chamando então o openssl

seed = "server finished"+data (data=above) 
key = master secret
openssl dgst -sha256 -mac hmac -macopt hexkey:$key <seed -binary >a1

Isso, então, é criptografado e enviado de volta como minha mensagem criptografada do servidor correta?

    
por David B 13.08.2018 / 15:02

0 respostas