O desafio Marshal in The Middle foi muito interessante e na verdade me fez aprender diversas coisas que eu não sabia.
Primeiro precisamos baixar o arquivo do desafio
Após extrair todos os arquivos recebemos alguns arquivos interessantes
Vamos começar pela esquerda, que temos um diretório chamado de “bro”
Dentro desse diretório está cheio de Logs
Cada log tem colunas diferentes e valores diferentes, mas o que me chamou a atenção foi o nome “bro” algo que eu nunca tinha ouvido antes
Literalmente pesquisando o nome da pasta e logs depois me deu o resultado perfeito.
Onde eu pude estudar bastante sobre o que são os Bro Logs. Inclusive o link em roxo da Rapid7 é exatamente o que você precisa para não só entender o que são esses logs mas também para utilizar eles em ataques ou extração de informações.
https://www.rapid7.com/blog/post/2016/06/02/working-with-bro-logs-queries-by-example/
O próximo arquivo bundle.pem é um certificado mas eu não sei para o que exatamente ainda
Depois possuímos um arquivo .pcap que são os famosos arquivos do Wireshark e como o nome desse desafio tem “In the middle” já é de se esperar que provavelmente vamos encontrar algum tipo de request que precisamos analisar. Mas antes de abrir o Wireshark , vamos dar uma olhada no ultimo arquivo.
Secrets.log é algo que já chama a atenção para o seu nome
Mas os valores são bem diferentes. Por totalmente ao acaso em meus estudos eu já vi esses valores ou pelo menos o “Padrão” deles anteriormente em um vídeo do Chris Greer https://www.youtube.com/c/ChrisGreer
Mas uma rápida busca no Google também revelaria exatamente o que são:
Esses valores são as chaves SSL para descriptografar o trafego utilizando o TLS/SSL
Legal!
Agora vamos abrir o Wireshark e analisar o pcap
A primeira coisa que eu gosto de fazer é abrir o TCP stream, assim eu consigo ter uma visão melhor do que aconteceu
A segunda Stream
Me chamou muito a atenção pois meu olho bateu direito em /etc/shadow.
Para quem não sabe o arquivo /etc/shadow é onde ficam as hashes de todas as senhas dos usuários locais no Linux, então é um arquivo extremamente sensível e se algo chamou ele, provavelmente não deveria.
Mas primeiramente temos alguns pings para um banco de dados, talvez isso seja um CheckAlive para um C2.
Basicamente é o sistema de vítima testando a conexão com o servidor do atacante, para que talvez ele extraia alguma coisa (Já que eu já vi o Etc/Shadow)
Essa parte nos mostra a execução de algum script em Bash.
E logo depois dois Curls (Provavelmente provocados pela execução do script)
Para o Shadow e Passwd. Isso não é nada bom, já que ambos os arquivos comprometidos são uma receita para o desastre, e parte mais complicada? Tudo isso foi para o PasteBin.
Pastebin é um serviço de Paste Site, basicamente é um local para hospedar arquivos de texto. Ele é muito utilizado para compartilhar códigos mas também é bastante visado para salvar documentos extraidos de vitimas por atacantes. Incluindo até mesmo Cartões de Crédito, Nomes, Documentos Pessoais. Então chamada ao pastebin com o arquivo de Shadow nos mostra que claramente isso foi uma extração feita pelo Atacante.
Para continuar complicando as coisas possuímos mais postagens de algo que parece ser Cartões de Crédito, reconhecidos pelo nome “American Express”
E por fim o atacante me parece estar limpando ou “Escondendo” o ataque dele
Mas talvez esteja faltando algo aqui, já que a Flag não está em nenhum desses logs.
Primeiro vamos subir o arquivo secrets.log para o Wireshark, assim já conseguimos dados que estejam criptografados.
O que precisamos lembrar aqui é que temos o IP do atacante, para onde ele está enviando os arquivos e de que forma ele está fazendo isso.
Então provavelmente vamos girar nossas análises para isso.
Para incorporar as chaves no wireshark vá em Edit >> Preferences >> Protocols, navegue até TLS depois em (Pre)-Master-Secret de um Browse e selecione o Secrets.log e de um OK
Agora em vez de Follow TCP habilitamos a possibilidade de dar um Follow TLS. Mas primeiro precisamos limitar a nossa pesquisa.
Acredito que o que melhor vai limitar(Caso seja isso mesmo) seja a palavra “Pastebin” já que é algo que não aparece em nenhum outro local normalmente, a não ser quando o atacante está extraindo algo.
Novamente eu poderia ter usado o IP dele ou até mesmo o “Curl” porém essas duas pesquisas vão me gerar muito mais coisa para olhar do que a palavra Pastebin, então é por onde eu vou começar.
O filtro http.host nos permite buscar todos os packets que possuem o host como Pastebin.com
http.host=="pastebin.com"
Vendo alguns materiais após a conclusão desse desafio eu também percebi que utilizando os Bro Logs (Que eu nem mesmo lembrei) é possivel descobrir um acesso ao Pastebin que chama a atenção.
Apenas para exemplificar se você usar o IP da máquina como filtro
Mas podemos melhorar esse filtro pois sabemos que o método de upload o atacante é um POST
Isso da um resultado bem menor. Agora vamos dar uma Follow no TLS Stream
E olha a quantidade de cartões de crédito! Nada bom!
Nessa parte eu literalmente passei reto pela flag e não notei ela.
Mas no meio desses cartões ;
Está a nossa conclusão do desafio.
E esse foi o desafio!
Espero que você tenha gostado
Um grande abraço de urso e TCHAU!