Se você já tentou usar o Wireshark para monitorar o tráfego da Web, provavelmente encontrou um problema – muitos deles são criptografados. De fato, a maioria dos sites usa criptografia SSL ou TLS para manter seus usuários seguros. A criptografia onipresente é uma coisa boa se você está comprando na Amazon, mas é uma dor real quando você está tentando administrar uma rede. Veja como descriptografar SSL com o Wireshark.
O que são Wireshark e SSL?
Wireshark é um analisador de tráfego de rede; é um utilitário básico que muitos administradores usam para solucionar problemas em suas redes. Especificamente, ele captura quadros – os blocos de construção de pacotes – e permite classificá-los e analisá-los. Usando o Wireshark, você pode observar o tráfego que flui pela sua rede e dissecá-lo, obtendo uma olhada dentro dos quadros nos dados brutos.
SSL é um protocolo de criptografia que opera na camada de transporte do modelo OSI. Ele usa vários métodos de criptografia para proteger os dados enquanto eles se movem pelas redes. Nota: neste guia, vou me referir principalmente ao SSL como um termo genérico para SSL e TLS, seu sucessor.
A criptografia SSL torna o uso do Wireshark mais desafiador, pois impede que os administradores visualizem os dados que cada pacote carrega. Quando o Wireshark é configurado corretamente, ele pode descriptografar o SSL e restaurar sua capacidade de visualizar os dados brutos.
Usando uma chave secreta pré-mestre para descriptografar SSL e TLS
Usar uma chave secreta pré-mestre para descriptografar o SSL no Wireshark é o método recomendado. UMA chave secreta pré-mestre é gerado pelo cliente e usado pelo servidor para derivar uma chave mestra que criptografa o tráfego da sessão. É o padrão atual em criptografia e geralmente é implementado via Diffie-Hellman.
Seu navegador pode ser criado para registrar a chave secreta pré-master, que o Wireshark usa para descriptografar sessões SSL e TLS.
Aqui estão as etapas para descriptografar SSL e TLS com uma chave secreta pré-mestre:
- Defina uma variável de ambiente
- Inicie o seu navegador
- Configurar o Wireshark
- Capturar e descriptografar a sessão
Quando terminar, você poderá descriptografar as sessões SSL e TLS no Wireshark sem precisar acessar o servidor de destino.
Definir uma variável de ambiente do Windows
Dentro janelas, você precisará definir uma variável de ambiente usando o Configurações avançadas do sistema Utilitário. Essa variável, chamada SSLKEYLOGFILE, contém um caminho onde as chaves secretas pré-master são armazenadas.
Comece clicando com o botão direito do mouse em Meu computador, e selecionando Propriedades no menu. o Sistema o menu será aberto.
Em seguida, clique em Configurações avançadas do sistema na lista à esquerda. o Propriedades do sistema janela abrirá.
No Avançado guia, clique no variáveis ambientais botão.
Clique no Novo… botão abaixo Variáveis de usuário. Você também pode criar a variável em Variáveis do sistema se você deseja registrar chaves SSL para todos os usuários do sistema, mas prefiro mantê-las restritas ao meu perfil.
Debaixo Nome variável, digite o seguinte:
SSLKEYLOGFILE
No Valor variável campo, digite um caminho para o arquivo de log. Você também pode clicar no Procurar arquivo… e especifique o caminho usando o seletor de arquivos.
Como observação, se você estiver criando isso como uma variável de ambiente para todo o sistema, precisará usar curingas apropriados ou armazenar o arquivo em um local acessível a todos os usuários. Por exemplo, você pode escolher % USERPROFILE% \ App Data \ ssl-keys.log ou C: \ ssl-keys.log.
Depois de terminar, clique em Está bem e vá para o próximo conjunto de etapas.
Defina uma variável de ambiente Linux ou Mac
Dentro Linux e Mac, você precisará definir o SSLKEYLOGFILE variável de ambiente usando nano. Dentro Linux, a variável é armazenada em ~ / .bashrc. No Mac, você criará a variável no arquivo ~ / .MacOSX / ambiente.
Abra um terminal e use este comando no Linux:
nano ~ / .bashrc
Aberto Plataforma de lançamento, clique De outros, e lançar um terminal para execute este comando no Mac OSX:
nano ~ / .bash_profile
As etapas a seguir são as mesmas para os dois sistemas operacionais.
No final do arquivo, adicione esta linha:
exportar SSLKEYLOGFILE = ~ / .ssl-key.log
pressione Ctrl + X, Y para salvar suas alterações.
Feche a janela do terminal e abra outra para definir a variável e digite o seguinte para confirmar que foi definida com êxito:
echo $ SSLKEYLOGFILE
Depois de executar o comando, você verá uma saída semelhante à imagem acima. /Users/comparitech/.ssl-key.log é o caminho completo para o meu log de chaves pré-master SSL. Nota: você deseja fazer uma anotação sua, que será diferente, para entrar no Wireshark.
Agora que a variável foi definida, você pode passar para o próximo conjunto de etapas.
Inicie seu navegador e verifique o arquivo de log
Antes de iniciar o Wireshark e configurá-lo para descriptografar o SSL usando uma chave pré-master, inicie o navegador e confirme se o arquivo de log está sendo usado..
Para preencher o log, é importante que você visite um site com o SSL ativado. Estou usando meu próprio servidor Apache para teste, mas qualquer site funcionará. Um dos maiores benefícios do uso de uma chave compartilhada pré-master é você não precisa acessar o servidor descriptografar SSL.
Depois de visitar um site habilitado para SSL, verifique se há dados no arquivo. Dentro janelas, você pode usar Bloco de anotações. Dentro Linux ou Mac, use o seguinte comando:
cat ~ / .ssl-log.key
Em qualquer sistema operacional, seu arquivo deve se parecer com o meu acima. Depois de confirmar que seu navegador está registrando chaves pré-master no local selecionado, você pode configurar o Wireshark para usar essas chaves para descriptografar o SSL.
Configure o Wireshark para descriptografar SSL
Depois que seu navegador estiver registrando chaves pré-master, é hora de configurar o Wireshark para usar esses logs para descriptografar o SSL.
Abra o Wireshark e clique em Editar, então Preferências. o Preferências a caixa de diálogo será aberta e, à esquerda, você verá uma lista de itens. Expandir Protocolos, role para baixo e clique em SSL.
Na lista de opções para o protocolo SSL, você verá uma entrada para Nome do arquivo (Pre) -Master-Secret log. Navegue até o arquivo de log que você configurou na etapa anterior ou cole o caminho.
Quando você terminar de definir o Nome do arquivo (Pre) -Master-Secret log, clique Está bem e volte para Wireshark. Você está pronto para seguir em frente.
Capturar a sessão e descriptografar SSL
A etapa final é capturar uma sessão de teste e verifique se o Wireshark descriptografa o SSL com êxito.
- Inicie uma sessão de captura não filtrada, minimize-a e abra seu navegador.
- Visite um site seguro para gerar dados e, opcionalmente, defina um filtro de exibição de ‘ssl’ para minimizar o ruído da sessão.
- Clique em qualquer quadro que contenha dados criptografados.
No meu caso, selecionarei um que contenha tráfego HTTP com codificação de texto / HTML, pois gostaria de ver o código-fonte que o servidor da web está enviando para o meu navegador. Mas qualquer tráfego criptografado que use uma chave secreta pré-master funcionará com esse método. Isso inclui todos os dados que utilizam PFE (Perfect Forward Encryption) através da Diffie-Hellman ou trocas de chaves comparáveis.
Depois de selecionar um quadro criptografado, observe o Visualização de pacote de bytes, e, especificamente, as guias abaixo da visualização. Você deve ver uma entrada para SSL descriptografado dados, entre outros.
Você perceberá que minha sessão ainda parece cheia de lixo e nenhum HTML é visível. Isso ocorre porque meu servidor Web (e a maioria dos servidores Apache) usa a compactação GZIP por padrão.
Quando você clica no Corpo da entidade não compactado Na guia, que só aparece nesse caso com a descriptografia SSL ativada, você pode visualizar o código-fonte do site. Por exemplo, aqui está o elemento de título da página padrão do Apache em texto sem formatação.
Usando uma chave RSA para descriptografar SSL
Você deve ter notado anteriormente que o Wireshark possui um campo que permite carregar suas chaves RSA e usá-las para descriptografar o SSL. Na prática, A descriptografia de chave RSA foi descontinuada.
O motivo pelo qual descriptografar o SSL com uma chave RSA não é mais mais usado é o Perfect Forward Encryption (PFE) que o tornou obsoleto. As sessões negociadas com Diffie-Hellman não usam a chave RSA diretamente; em vez disso, eles geram uma chave única, armazenada apenas na RAM, criptografada usando a chave no disco.
Se você estava usando uma chave RSA anteriormente para decodificar o tráfego e parou de funcionar, pode confirmar que a máquina de destino está usando trocas Diffie-Hellman ativando o log SSL.
Para ativar o log, clique em Editar no menu da barra de ferramentas e selecione Preferências. Expandir o Protocolos item de menu à esquerda e role para baixo até SSL. A partir daqui, você pode clicar no Squeaky toy botão e defina a localização do seu log SSL.
Depois que o local é definido, todas as interações SSL serão registradas no arquivo especificado.
Capture uma sessão com seu host habilitado para SSL e verifique os logs. Especificamente, você deve rolar até encontrar o quadro em que o handshake TLS foi negociado. É provável que você veja uma entrada de DHE reveladora na sequência de códigos.
Isso significa que as trocas de chaves Diffie-Hellman estão ativadas. No meu caso, o Apache está usando especificamente Diffie-Hellman com teclas de curva elíptica, que são denotadas pela string ECDHE.
Role um pouco mais e você provavelmente verá que o segredo principal não pode ser encontrado.
Se seus logs tiverem essa aparência e você não puder descriptografar o tráfego usando uma chave RSA, não terá outra opção a não ser mudar para o método secreto pré-mestre acima.
Como o PFE está se tornando uma prática padrão, com o TLSv1.3 provavelmente forçando o problema, a descriptografia simples de chave RSA foi descontinuada e não deve ser usada.
O Wireshark facilita a descriptografia do tráfego SSL
Eu realmente gosto da maneira como o Wireshark lida com a descriptografia SSL. A criptografia é complicada e os padrões mudam constantemente para se tornar mais seguro. Mas uma vez que o Wireshark e seu ambiente estejam configurados corretamente, tudo que você precisa fazer é alterar as guias para visualizar os dados descriptografados. Não fica mais fácil do que isso.
ários. Defina uma variável de ambiente Linux ou Mac Em sistemas Linux ou Mac, você pode definir a variável de ambiente usando o terminal. Abra o terminal e digite o seguinte comando: export SSLKEYLOGFILE=/path/to/log/file.log Certifique-se de substituir /path/to/log/file.log pelo caminho real para o arquivo de log. Inicie seu navegador e verifique o arquivo de log Depois de definir a variável de ambiente, inicie o seu navegador e visite um site que use SSL. O navegador deve registrar a chave secreta pré-master no arquivo de log especificado na variável de ambiente. Verifique o arquivo de log para garantir que a chave tenha sido registrada corretamente. Configure o Wireshark para descriptografar SSL Agora que você tem a chave secreta pré-master, configure o Wireshark para usá-la. Abra o Wireshark e vá para Editar > Preferências > Protocolos > SSL. Clique no botão Editar ao lado de (Pre)-Master-Secret log filename e especifique o caminho para o arquivo de log que contém a chave secreta pré-master. Capturar a sessão e descriptografar SSL Agora você está pronto para capturar a sessão SSL e descriptografá-la. Inicie a captura no Wireshark e visite o site que deseja monitorar. O Wireshark deve capturar o tráfego SSL e descriptografá-lo automaticamente usando a chave secreta pré-master. Se tudo estiver configurado corretamente, você deve ser capaz de ver os dados brutos nos quadros capturados pelo Wireshark. O Wireshark facilita a descriptografia do tráfego SSL Embora a criptografia SSL possa ser um obstáculo para os administradores de rede, o Wireshark torna a descriptografia do tráfego SSL relativamente fácil. Usando uma chave secreta pré-master, você pode descriptografar sessões SSL e TLS sem precisar acessar o servidor de destino. Com o Wireshark, você pode monitorar o tráfego da Web com mais eficiência e solucionar problemas em sua rede com mais facilidade.