Articles

TLS

Transport Layer Security (TLS) fornece segurança na comunicação entre dois hosts. Fornece integridade, autenticação e confidencialidade. É usado mais comumente em navegadores web, mas pode ser usado com qualquer protocolo que usa TCP como a camada de transporte.

Secure Sockets Layer (SSL) é o antecessor do protocolo TLS. Estes nomes são frequentemente usados indistintamente, o que pode levar a alguma confusão:

  • uma configuração que usa o protocolo SSL (SSLv2/SSLv3) é insegura. Em vez disso, deve utilizar-se o protocolo TLS.

  • X. 509 os certificados de autenticação são por vezes também chamados de certificados SSL.

  • algumas aplicações (como o e-mail) usam um único porto para as sessões não cifradas e encriptadas. Para mudar de cifrado para cifrado, é usado o (START)TLS. Quando um único porto usa diretamente o protocolo TLS, ele é muitas vezes referido como SSL.

  • Por razões históricas, o software (incluindo Wireshark) refere-se a SSL ou SSL/TLS, enquanto que na verdade significa o protocolo TLS, uma vez que isso é hoje em dia o que todos usam.

dependências do Protocolo

  • TCP: Tipicamente, TLS usa TCP como seu protocolo de transporte.

TLS dissecção em Wireshark

o dissector TLS é totalmente funcional e até suporta recursos avançados, tais como a descriptografia de TLS, se forem fornecidos segredos apropriados (#Tls_ decriptografia).

desde o Wireshark 3.0, O dissector TLS foi renomeado de SSL para TLS. A utilização do filtro de visualização ssl irá emitir um aviso.

TLS Decryption

Wireshark suporta TLS decryption quando segredos apropriados são fornecidos. Os dois métodos disponíveis são:

  • ficheiro de Registo de Chaves usando segredos por sessão (#Using_the_.28Pre.29-Master-Secret).

  • decriptação usando uma chave privada RSA.

um ficheiro de registo de chaves é um mecanismo universal que permite sempre a descodificação, mesmo que esteja em uso uma troca de chaves Diffie-Hellman (DH). A chave privada RSA só funciona em um número limitado de casos.

o ficheiro de registo de chaves é um ficheiro de texto gerado por aplicações como o Firefox, o Chrome e o curl quando a variável de ambiente SSLKEYLOGFILE está definida. Para ser preciso, sua biblioteca subjacente (NSS, OpenSSL ou boringssl) escreve os segredos por sessão necessários para um arquivo. Este ficheiro pode ser configurado posteriormente no Wireshark (#Using_tho_.28Pre.29-Master-Secret).

o ficheiro de chave privada RSA só pode ser usado nas seguintes circunstâncias:

  • o conjunto de cifras seleccionado pelo servidor não está a usar o DHE (EC).
  • a versão protocolo é SSLv3, (D) TLS 1.0-1.2. Não funciona com TLS 1.3.

  • a chave privada corresponde ao certificado do servidor. Não funciona com o certificado do cliente, nem com o certificado da Autoridade de Certificação (CA).

  • a sessão não foi retomada. O aperto de mão deve incluir a mensagem do aperto de mão do cliente.

o ficheiro de registo de chaves é geralmente recomendado, uma vez que funciona em todos os casos, mas requer a capacidade contínua de exportar os segredos quer da aplicação cliente quer do servidor. A única vantagem da chave privada RSA é que ela precisa ser configurada apenas uma vez em Wireshark para permitir a descriptografia, sujeito às limitações acima.

configuração de preferências

ir para editar – >. Abra a árvore de protocolos e selecione TLS. Em alternativa, seleccione um pacote TLS na lista de pacotes, carregue com o botão direito na camada TLS na área de detalhes do pacote e abra o menu de preferências do Protocolo.

as preferências notáveis do protocolo TLS são:

  • (Pre)-Master-Secret log filename (tls.keylog_ file): localização para ler o ficheiro de registo de chaves do TLS para descodificação.
  • lista de chaves RSA: abre uma janela para configurar as chaves privadas RSA para descodificação. Desactualizado a favor da janela de preferências -> chaves RSA.

  • chave pré-partilhada: usada para configurar a chave de descodificação das suites de cifra PSK. Não é geralmente utilizado.
  • TLS debug file (tls.depug_ logfile): localização para escrever detalhes internos sobre o processo de descodificação. Conterá os resultados da decriptação e as chaves que foram usadas neste processo. Isto pode ser usado para diagnosticar por que a decriptação falha.

as seguintes preferências do protocolo TCP também são necessárias para permitir a descodificação do TLS:

  • Permite ao subdissector reunir os fluxos do TCP. Activado por omissão.
  • Reemble out-of-order segments (since Wireshark 3.0, disabled by default).

a partir de Wireshark 3.0, uma nova janela de chaves RSA pode ser encontrada no Edit – > Preferências -> chaves RSA. Nesta janela, use o ficheiro de teclas Adicionar novo… botão para seleccionar um ficheiro. Ser-lhe-á pedida uma senha, se necessário. A adição de um novo token… o botão pode ser usado para adicionar chaves de um HSM que pode necessitar usando adicionar um novo provedor… para selecionar um arquivo DLL/. so e configuração adicional específica do Fornecedor.

o ficheiro de chave RSA pode ser uma chave privada de formato PEM ou um teclado PKCS # 12 (tipicamente um ficheiro com A.pfx or .P12 extension). O principal PKCS#12 é um arquivo binário, mas o formato PEM é um arquivo de texto que se parece com isso:

  • -----BEGIN PRIVATE KEY-----MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDReQzlKVeAK8b5TRcRBhSi9IYwHX8Nqc8K4HeDRvN7HiBQQP3bhUkVekdoXpRLYVuc7A8h1BLr93Qw...KOi8FZl+jhG+p8vtpK5ZAIyp-----END PRIVATE KEY-----

A programar chaves RSA de diálogo lista pode ser removido em algum ponto. Para configurar as teclas, use a janela de teclas RSA em alternativa. Para alterar o Protocolo para os dados de rede descriptografados, clique com o botão direito em um pacote TLS e use Decode como para alterar o protocolo atual para a porta TLS. Os campos IP e Port não são usados.

ficheiro de captura de exemplo

Veja também as apresentações de SampleCaptures#Ssl_ With_ Decryption_keys. dump.pcapng TLSv1.2 captura com 73 Suites de cifra, precisas desta pré-base.ficheiro txt para descodificar o tráfego. (linked from https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9144)

  • tls12-dsb.PCAPNG-TLS 1.2 trace com as chaves de descodificação incorporadas.
  • https://github.com/wireshark/wireshark/blob/master/test/captures – o conjunto de testes contém vários traços TLS.

  • Filtro de visualização

    uma lista completa dos campos de Filtragem de visualização TLS pode ser encontrada na referência do filtro de visualização

    Mostrar apenas o tráfego baseado em TLS:

    • tls

    Filtro de captura

    não pode filtrar directamente os protocolos TLS durante a captura. No entanto, se você conhecer a porta TCP usada (veja acima), você pode filtrar nesse, por exemplo usando a porta tcp 443.

    usando o (Pre)-Master-Secret

    o master secret activa a descodificação do TLS em Wireshark e pode ser fornecida através do ficheiro de Registo de chaves. O segredo pré-mestre é o resultado da troca de chaves e pode ser convertido em segredo mestre pela Wireshark. Este segredo pré-mestre pode ser obtido quando uma chave privada RSA é fornecida e uma troca de chave RSA está em uso.

    instruções passo-a-passo para descodificar o tráfego de TLS a partir do Chrome ou do Firefox em Wireshark:

    1. feche completamente o navegador (verifique o seu gestor de tarefas apenas para ter a certeza).
    2. configure a variável de ambiente SSLKEYLOGFILE para a localização absoluta de um ficheiro com permissões de escrita.

    3. Inicie o navegador.
    4. verifique se a localização a partir do Passo 2 é criada.
    5. In Wireshark, go to Preferences- > protocolos- > TLS, and change the (Pre)-Master-Secret log filename preference to the path from step 2. inicie a captura de Wireshark.

    6. abra um website, por exemplo https://www.wireshark.org/

    7. verifique se os dados descodificados são visíveis. Por exemplo, usando o filtro tls e (http ou http2).

    Para O Windows, uma variável de ambiente pode ser definida globalmente como descrito nesta passagem, mas isto não é recomendado, uma vez que é fácil de esquecer e pode ser um problema de segurança, uma vez que permite a descriptografia de todo o seu tráfego TLS. Uma melhor maneira de definir a variável de ambiente é através de um arquivo em lote. Criar um ficheiro start-fx.cmd com:

    • @echo offset SSLKEYLOGFILE=%USERPROFILE%\Desktop\keylogfile.txtopen firefox

    altera o caminho do ficheiro SSLKEYLOG conforme necessário, e substitui o firefox pelo Google Chrome. Este mecanismo atualmente (2019) não funciona para Safari, Microsoft Edge e outros, uma vez que suas bibliotecas TLS (Microsoft SChannel/Apple SecureTransport) não suportam este mecanismo. Este mecanismo também funciona para outras aplicações que não navegadores web, mas depende da biblioteca TLS utilizada pela aplicação.

    exemplos de outras aplicações:

    • aplicações usando OpenSSL poderiam usar um GDB ou um truque LD_ preload para extrair os segredos. Isto inclui Python.

      • para um passo a passo para o Servidor HTTP Apache usando este libsslkeylog.so biblioteca, Veja este post.

    • para programas Java, segredos podem ser extraídos da preferência de log de depuração TLS, ou saída diretamente no formato que o Wireshark requer através de um agente Java. Dois projetos similares:
      • jSSLKeyLog: http://jsslkeylog.sourceforge.net/

      • extrair-tls-segredos: https://github.com/neykov/extract-tls-secrets

    • scripts Python podem ser editados para despejo de chaves.

    para uma pesquisa de aplicações e bibliotecas TLS suportadas, ver também a Página 19 da decriptação SSL / TLS SharkFest’18 EU presentation.

    incorporar os segredos de descodificação num ficheiro pcapng

    desde o Wireshark 3.0 pode incorporar o ficheiro de registo de chaves TLS num ficheiro pcapng. Isso torna muito mais fácil distribuir arquivos de captura com segredos de decriptação, e torna mais fácil a troca entre Arquivos de captura, uma vez que a preferência do protocolo TLS não tem que ser atualizada. Para adicionar o conteúdo das chaves de registo de chaves.txt para capturar o ficheiro.pcap e escrever o resultado para out-dsb.pcapng:

    • editcap –inject-secrets tls,keys.txt in.pcap out-dsb.pcapng

    o sufixo dsb significa Decription Secrets Block (DSB) e faz parte da especificação pcapng.

    um ficheiro de registo de chaves pode conter chaves que não estão relacionadas com um ficheiro de captura. Para garantir que chaves desnecessárias não são vazadas, você pode usar o inject-tls-secrets.py script from https://gist.github.com/Lekensteyn/f64ba6d6d2c6229d6ec444647979ea24 to filter the key log file and add the required secrets to a capture file. O script shell foi testado com Linux e macOS, mas uma versão Python 3 também está disponível para todas as plataformas, incluindo Windows. Exemplo:

    • git clone https://gist.github.com/Lekensteyn/f64ba6d6d2c6229d6ec444647979ea24 ~/its~/its/inject-tls-secrets.py keys.txt some.pcap

    Veja também:

    Alguns outros protocolos são derivados a partir de TLS. Isto inclui:

    • DTLS é baseado na norma TLS e funciona em cima do UDP como um protocolo de transporte.

    • QUIC é um protocolo em desenvolvimento que usa TLS para sua criptografia, o estado de Wireshark pode ser rastreado em https://github.com/quicwg/base-drafts/wiki/Tools#wireshark.

    • https://en.wikipedia.org/wiki/Transport_Layer_Security artigo da Wikipédia para TLS

    • https://sharkfesteurope.wireshark.org/assets/presentations16eu/07.pdf SharkFest’16 países da UE apresentação por Causa Blok na resolução de problemas SSL com o Wireshark/Tshark (ou assistir o vídeo da apresentação https://youtu.be/oDaDY9QCnXk)

    • https://lekensteyn.nl/files/wireshark-ssl-tls-decryption-secrets-sharkfest18eu.pdf SharkFest’18 UE apresentação por Pedro Wu em TLS decodificação de vídeo (para uma palestra anterior, na Ásia, no https://youtu.be/bwJEBwgoeBg)

    • https://lekensteyn.nl/files/wireshark-tls-debugging-sharkfest19us.pdf SharkFest’19 US apresentação por Pedro Wu descrevendo TLS decodificação e utilização de incorporada de descriptografia segredos (https://youtu.be/Ha4SLHceF6w). como funciona o SSL / TLS? – Segurança da informação Stack Exchange

    • Sem SSL: O Nitty Gritty Detalhes Técnicos com uma boa introdução no TLS

    • PolarProxy de Netresec é transparente SSL/TLS proxy criado para o incidente de respondentes e pesquisadores de malware que é primariamente projetado para interceptar e decifrar encriptado TLS tráfego de malware. PolarProxy decripts and re-encrypts TLS traffic, while also saving the decrypted traffic in a PCAP file that can be loaded into Wireshark or an intrusion detection system (IDS).

    • CategoryHowTo

    Deixe uma resposta

    O seu endereço de email não será publicado. Campos obrigatórios marcados com *