Análise do ransomware WannaCry

Ontem, sexta-feira (dia de maldade) 12 de maio de 2017 na minha humilde opinião foi um dia importante para o cenário brasileiro da segurança da informação, mais especificamente no que diz respeito a análise de malware que é o foco desse post.
Pudemos observar cooperação entre empresas, órgãos públicos, curiosos, analistas profissionais e amadores… Enfim, a comunidade de reverse brasileira contribuiu bastante para gerar uma consciência situacional sobre a ameaça subsidiando outros profissionais da segurança para uma mitigação efetiva.

Esse post será um relato do ocorrido junto com a análise do malware… Tudo misturadão buscando uma linguagem clara pra facilitar a leitura e entendimento. Em cada termo técnico ou que necessite de uma definição para o leitor mais leigo, sempre haverá um link com uma referência. Vou contar a história como aconteceu a partir da minha perspectiva. “Não sei, só sei que foi assim…” (Chicó).

Tomei conhecimento do ocorrido com a notícia que algumas empresas na Espanha tinham sido atacadas por ransomware, dentre elas a Telefonica. Como ransomware é um tipo de malware que vem ganhando seu espaço com os atores do crimeware, por ser bem efetivo em atingir o objetivo do ganho rápido e ilícito, (foco  principal dos nossos algozes) as incidências desse tipo de malware são cada vez mais frequentes no Brasil e no mundo. Logo, tenho bastante interesse no assunto e fui atrás de mais informações.

O primeiro contato com o sample veio do Ivo Peixinho que laçou o hash do sample no canal do telegram:
ed01ebfbc9eb5bbea545af4d01bf5f1071661840480439c6e5babe8e080e41aa que prontamente foi disponibilizado pelo Marcos Cícero.

Rapidamente todos que ali estavam começaram a fazer o reverse do sample. Pudemos perceber que o binário não estava criptografado e rapidamente o Ivo juntou algumas evidências indicaram que se tratava de um arquivo comprimido dentro do executável.

Geralmente quando quer ter uma noção do todo, damos uma olhada nas strings dentro do binário. Nesse caso não foi diferente. Dentre as várias strings que lá haviam, duas strings chamaram a atenção do Ivo: inflate e unzip… Remeteu a um malware do passado que utilizava a técnica de colocar um arquivo comprimido dentro do executável. Bingo… O nosso desenvolvedor do malware usou essa técnica. Que se mostrou efetiva, pois ocultou as funções mais suspeitas na hora de dropar o binário. Até aí beleza… Mandou descomprimir o arquivo que estava protegido por uma senha. Entretanto dando mais uma olhada nas strings, por tentativa e erro a senha estava lá… Abertinha e pronta pra ser usada “WNcry@2ol7”

Assim conseguimos descompactar arquivo dentro do executável e acessamos os arquivos que tem as funcionalidades do ransomware:

A pasta msg possui vários arquivos que são importados pelo decrypter de acordo com a linguagem que o windows usa. (Decrypter é a ferramenta disponibilizada pelo autor do malware para decifrar os arquivos caso o pagamento seja efetuado). Se a máquina está instalada com a linguagem Português, ele carega um arquivo que tem o formato .RTF com a linguagem correspondente ao ambiente infectado, no caso minha VM está instalada com PT-Br, logo carregou m_portuguese.wnry conforme a imagem abaixo:

O arquivo u.wnry na verdade será renomeado para @WanaDecryptor@.exe, que é o decryptor já citado anteriormente. Entraremos em mais detalhes posteriormente sobre o decryptor.

O arquivo b.wnry é um arquivo .BMP, ima imagem que será trocada no plano de fundo para que o usuário seja alertado da presença do ransomware e siga as instruções de pagamento.

O arquivo c.wnry possui alguns hosts necessários para suporte ao mecanismo de pagamento / TOR, a seguir:

gx7ekbenv2riucmf.onion
57g7spgrzlojinas.onion
xxlvbrloxvriy2c5.onion
76jdd2ir2embyv47.onion
cwwnhwhlz52maqm7.onion
https://dist.torproject.org/torbrowser/6.5.1/tor-win32-0.2.9.10.zip

Sendo esse último uma dica de onde a vítima poderia baixar o TOR, rede de anonimato utilizada para evitar a descoberta da identidade do atacante quando receber seus bitcoins.

Nesse momento começaram a chegar algumas outras informações nos canais de Telegram,  WhatsApp, blogs e televisão… Algumas erradas, outras muito erradas e poucas confiáveis. A Rede Globo chegou a noticiar que o ganho da campanha do malware já passava de 300 BTC (Bitcoins) que seria um ganho absurdo de mais de meio milhão de dólares em algumas horas. Quando na verdade a campanha até o momento está aproximadamente em 15.44 BTC, conforme o site http://howmuchwannacrypaidthehacker.com/.

Em seguida executei o ransomware na VM, monitorando o fera com o procmo. Como o resultado é bem extenso, vou comentar as principais funcões para o funcionamento do código. Além de várias chamadas API de reconhecimento, para descobrir o sistema operacional e a linguagem do windows, ele faz uso dos arquivos .WNRY. Outro passo importante é relacionado à criptografia.

ele vai criar 3 arquivos: 00000000.res que é usado nas comunicações com o C2, 00000000.pky onde fica a chave pública utilizada pelo ransomware para encriptar e 00000000.eky que também é uma chave utilizada para encriptar os arquivos.

Nosso camarada busca apagar as shadow copies para dificultar a recuperação dos dados apagados com os comandos abaixo:

Outro artifício utilizado foi a mudança de atributos dos arquivos (+H) e o comando “icacls . /grant Everyone:F /T /C /Q” para garantir acesso a todos os arquivos.

A essa altura já tinham diversos reverses na internet, posts e notícias sobre o ocorrido. Vou listar abaixo algumas boas fontes que achei durante a noite:

  • https://gist.github.com/rain-1/989428fa5504f378b993ee6efbc0b168
  • https://pastebin.com/raw/0LrH05y2
  • https://pastebin.com/aaW2Rfb6
  • https://blogs.technet.microsoft.com/mmpc/2017/05/12/wannacrypt-ransomware-worm-targets-out-of-date-systems/ (esse com bastante detalhe técnico)

No início da noite já se tinha noção que o malware se espalhava com um scanner em máquinas com ip válido na internet buscando a porta 445 aberta em um SO windows que ainda não tivesse sido atualizado pela falha do recente leak da NSA, mais especificamente o patch relativo ao ms17-010. Outra hipótese que ainda não se confirmou (ao menos pra mim) é que também utilizou-se phish. Porém não vi nenhum email nem soube de alguém que teve contato.

A velocidade do spread se deu por causa da capacidade de worm do artefato. Ao infectar uma máquina, ele faz um scan na rede interna e tenta se espalhar novamente.

Daí pra frente, foram algumas tentativas de fazer um patch no decrypter buscando encontrar alguma fragilidade no processo de pagamento de forma a enganar o ransomware.

Mais tarde, ficamos sabendo que o pesquisador MalwareTech tentando explorar a estrutura de comando e controle do ransomware encontrou um domínio dentro do código fonte que não estava registrado. Achou estranho e registrou o domínio com o intuito de analisar o protocolo do ransomware quando conectado a um servidor de C&C. Sem querer, acionou um mecanismo de segurança que o desenvolvedor criou caso quisesse encerrar a campanha, um killSwitch. Esse mecanismo funciona da seguinte maneira: Caso o domínio respondesse a uma requisição, o ransomware não executa suas funções.

domínio do killSwitch: http://iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com/

Relato do MalwareTech:

https://www.malwaretech.com/2017/05/how-to-accidentally-stop-a-global-cyber-attacks.html

Certamente se o killSwitch não tivesse sido encontrado o estrago seria muito maior. Cabe uma reflexão nesse momento. Imagine se fosse um ransomware mais elaborado que não utilizasse canal de comando e controle e não tivesse um killSwitch… Muito mais empresas estariam de joelho agora.

Como estou bem atrasado com esse post, vou atualizando as informações sobre o ocorrido com a tag [UPDATE dd/mm/aaaa hh:mm] para poder ir pro ar com as informações que temos agora de forma a não perdermos muito o princípio da oportunidade.

Por fim, fazendo uma análise no decrypter, joguei o executável no Resource Hacker para dar uma olhada nos formulários. Achei algo intrigante que merece uma atenção… Encontrei o Dialog 143, que até o momento não vi nenhum comentário a respeito:

Por ser um ransomware modular, pode ser que não tenha funcionalidade alguma para o caso em questão, um aproveitamento de código ou outro motivo qualquer. Mas também pode ser que seja uma funcionalidade que contribua para o bypass do decrypter.

Enfim, alguns pontos não foram citados ainda, já estão prevendo uma segunda onda sem o killSwitch, alguns especulam que foi uma forma de atrair a atenção para uma ação maior poder ser executada… Particularmente acredito que nos próximos grandes leaks veremos uma destruição bem maior, pois tenho certeza tem muita gente aguardando a hora e o exploit certo pra dar um golpe bem mais duro.

Críticas e sugestões como sempre são muito bem-vindas, Abraço!

I'm a developer who is always seeking knowledge related to programming and Cybersecurity. Besides, I'm a military aviator and father of a beautiful family. You can take a look at my vcard on the link below: http://creativecode.com.br/rafael-salema-marques/

12 comments On Análise do ransomware WannaCry

Leave a reply:

Your email address will not be published.