Breve Estudo Sobre Ransomwares e Análise Estática/Dinâmica do WannaCry

Os ransomwares são malwares que impedem que o detentor legítimo dos arquivos de acessar seus dados. A liberação dos dados só é efetivada mediante pagamento, normalmente realizado em Bitcoins por não ser rastreável. Esta categoria de malware explora vulnerabilidades específicas do sistema alvo, buscando criptografar recursivamente os dados e bloquear o acesso a eles.

[ Hits: 12.361 ]

Por: Acquila Santos Rocha em 23/07/2019 | Blog: https://www.linkedin.com/in/acquila-santos-rocha-b8305a134/


Análise WannaCry



O ransomware WannaCry foi o mais falado dos últimos tempos, devido ao impacto internacional que gerou. O malware atacou instituições nacionais como a Petrobrás , Vivo e a Corte Nacional de Justiça de São Paulo [13] e instituições internacionais, como a Renault [14], Nissan [15] e Russian Railways [16], assim o dano econômico do WannaCry em apenas 4 dias passou 1 bilhão de dólares [4].

O ataque começou em 12 de maio de 2017 em uma quinta-feira e, ao que tudo indica, foi iniciado na Ásia [17]. A infecção inicial se dava por uma vulnerabilidade na porta SMB (Server Message Block). O SMB é um protocolo de compartilhamento de arquivos implementado pela Microsoft, funciona com a arquitetura cliente-servidor e consiste em um conjunto de pacotes de dados, cada um contendo uma solicitação enviada pelo cliente ou uma resposta enviada pelo servidor [18].

Para modularizar a análise do ransomware, a dividiremos em análise estática e dinâmica. Na análise dinâmica o WannaCry será executado em uma Máquina Virtual, onde serão capturadas as informações necessárias para compreender o funcionamento do ransomware. Na análise estática, fatores como as dlls chamadas e as funções de criptografia e virulência serão extraídas.

A análise aqui realizada não caracteriza uma Análise Forense completa do malware, mas busca exemplificar em um contexto real os conceitos mostrados nas seções anteriores. Referências são utilizadas para o embasamento conceitual e técnico do que é dito.

Para realização da análise estática, utilizamos a ferramenta de engenharia reversa Ghidra, desenvolvida pela Agência Nacional de Segurança dos Estados Unidos (National Security Agency - NSA) [19] e alguns scripts disponíveis em [21] . Ao importar o executável do WannaCry na ferramenta, percebemos a presença de 4 DLLs importadas: advapi32.dll, kernel32.dll, msvcrt.dll e user32.dll, assim como indicado na Figura 1.
Linux: Um breve estudo sobre Ransomwares e análise estática/dinâmica do WannaCry
Figura 1 - DLL importadas
A ADVAPI32, ou também Advanced Application Programming Interface, é um processo essencial do sistema Windows projetado para suportar várias APIs, incluindo chamadas de segurança. As duas bibliotecas kernel32.dll and msvcrt.dll são as principais bibliotecas invocadas para criptografia [20].

Em [20], uma análise mais detalhada das funções chamadas pelo WannaCry foi realizada, mostrando que a biblioteca Crypto API é usada para gerar e gerenciar chaves criptográficas simétricas e assimétricas aleatórias, logo esta biblioteca é a utilizada para criptografia.

O executável do malware é um arquivo PE, este tipo de arquivo consiste em vários cabeçalhos e seções que informam ao vinculador dinâmico do sistema operacional como mapear o arquivo na memória. O script em Python pecheck.py presente em [21] realiza uma análise completa do arquivo PE passado como argumento.

Em um arquivo PE a ".rsrc" é a seção de recursos, da qual contém informações dos recursos do artefato analisado. Na maioria dos casos, mostram ícones e imagens que compõem o arquivo. Executando o seguinte comando: "python pecheck.py -o r wannaCry.exe", obtemos uma visão geral da seção de recursos do WannaCry (Figura 2).
Linux: Um breve estudo sobre Ransomwares e análise estática/dinâmica do WannaCry
Figura 2 - Seção de recursos
A assinatura "504b0304" do elemento XIA presente nessa seção, indica que esse arquivo é um arquivo zip [22]. Tentando realizar o dumping deste arquivo, percebemos que está protegido por senha. Para conseguir essa senha, partimos do pressuposto que ela está disposta em alguma campo do arquivo, para que no momento da execução ela possa ser recuperada.

Desta forma, fazemos uma busca no próprio arquivo pela senha em questão, passando toda a saída do comando strings para uma word list chamada "passwords". Assim, conseguimos extrair as informações do arquivo zip XIA (Comando: python pecheck.py -o r -g 1 -D wannaCry.exe | python zipdump.py -P passwords) (Figura 3). Através desse ponto, também conseguimos extrair qual a senha utilizada pelo malware nesse arquivo zip: WNcry@2ol7.

Percebemos que esses arquivos estão criptografados, por causa da extensão ".wnry", mas temos uma noção de como o malware irá operar no sistema operacional após a infecção mesmo antes de executá-lo na máquina alvo. A próxima subseção é referente ao momento da Análise dinâmica do WannaCry, ou seja, executar o malware em uma VM.

Os testes da análise dinâmica foram feitos em uma máquina virtual do Windows 7. As características da máquina host são:
  • Processador Intel© Celeron© CPU 3855U @ 1.60GHz × 2
  • 3.8 GiB de memória RAM
  • Sistema operacional utilizado na máquina host é um Linux Mint 19.1 Cinnamon.

Linux: Um breve estudo sobre Ransomwares e análise estática/dinâmica do WannaCry
Figura 3 - informações do arquivo zip XIA
A execução do malware no Windows 7, demorou em média 35 segundos, até que todos os arquivos estivessem criptografados e a mensagem do WannaCry aparecesse na tela (Figura 4).

Utilizando o Ghidra para realizar a decompilação, percebemos uma função que recebe como parâmetro uma string semelhante a uma URL: www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com. Esta URL é acessada como um domínio kill switch. Ao invadir o sistema, o processo tenta acessar este endereço, caso a conexão for bem sucedida, o processo do malware é cancelado.

Caso contrário, ele continua executando e registra o seu processo como Microsoft Security Center (2.0) Service, ou seja, um serviço de segurança da Microsoft.

No processo de criptografia, para cada arquivo a ser criptografado, uma chave simétrica AES 16-bytes diferente é usada, e depois criptografada com a chave pública RSA da vítima. Todos os arquivos criptografados são renomeados com uma extensão .WNCRY.

Agora podemos retomar a Figura 3, onde encontramos a senha para ter acesso ao arquivo zip XIA. Dentro desse arquivo existe uma sequência de elementos, os quais serão apresentados e detalhados nos tópicos a seguir:
  • "msg" é uma pasta que contém uma série de arquivos em diferentes línguas com a mensagem de extorsão que aparece na Figura 4.
  • "b.wnry" é um arquivo de imagem, provavelmente com as instruções de como recuperar os dados. Começa com 42 4D 36 F9 15, por isso indica uma imagem bitmap [22].

Linux: Um breve estudo sobre Ransomwares e análise estática/dinâmica do WannaCry
Figura 4 - Mensagem do WannaCry
  • "c.wnry" é um arquivo que contém uma lista com endereços .onion, das carteiras virtuais, e um link comprimido em arquivo zip, com a instalação do navegador Tor para acesso anônimo.
  • "s.wnry" é um arquivo zip, pois contém o header 50 4B 03 04. Fazendo o dumping desse arquivo zip, obtemos executáveis do navegador Tor (Figura 7) (python * * pecheck.py -o r -g 1 -D wannaCry.exe | python zipdump.py -P passwords -s 32 -d | python zipdump.py).
  • "r.wnry" é um texto com algumas instruções de descriptografia.
  • "t.wnry" é um arquivo criptografado com extensão .WNCRY.
  • "taskse.exe" é uma ferramenta que auxilia a execução remota em outros desktops.
  • "taskdl.exe" é uma ferramenta para deletar a extensão .WNCRY.
  • "u.wnry" é um arquivo executável (assinatura 42 4D 36 F9).

Primeiramente, suspeitávamos que tinha algo relacionado à criptografia, por apresentar praticamente as mesmas dlls que o artefato de análise. Depois de algumas pesquisas, confirmamos que, na verdade, esse é o executável para descriptografar o sistema, depois do pagamento.
Linux: Um breve estudo sobre Ransomwares e análise estática/dinâmica do WannaCry
Figura 5 - 1562902316.Dumping do s.wrny
Entretanto, o WannaCry não é invencível. Pesquisadores conseguiram obter os números primos usados para gerar o par de chaves RSA, pois a memória não foi desalocada adequadamente e, se o computador infectado não for desligado, podemos recuperar a chave privada utilizada para descriptografar os dados.

Página anterior     Próxima página

Páginas do artigo
   1. Prefácio
   2. Ransomware
   3. Fatores Históricos
   4. Formas de propagação
   5. Análise WannaCry
   6. Crypto Ransomwares (Prova de Conceito)
   7. Conclusão
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Pydev - Preparando o Eclipse para o Python

ISO8583py - Utilizando Python para o tratamento de mensagens ISO8583

Alimentando Desktopcouch com Zeitgeist

Como baixar fotos e vídeos do Instagram com Python

Redes definidas por Software com Mininet e POX - Criando meu primeiro Controlador

  
Comentários
[1] Comentário enviado por cizordj em 25/07/2019 - 08:56h

Meus parabéns pelo artigo, isso me fez refletir sobre como o meu ambiente de trabalho está implementado, mas me surgiu uma dúvida, se usarmos outro protocolo em um ambiente de trabalho que não seja o Samba o ransomware ainda pode se espalhar pela rede? ou isso depende do ransomware?

<---------------------------------------------------------------->
O seu tempo é o único bem que você não recupera

[2] Comentário enviado por acquila em 25/07/2019 - 11:10h


[1] Comentário enviado por Cizordj em 25/07/2019 - 08:56h

Meus parabéns pelo artigo, isso me fez refletir sobre como o meu ambiente de trabalho está implementado, mas me surgiu uma dúvida, se usarmos outro protocolo em um ambiente de trabalho que não seja o Samba o ransomware ainda pode se espalhar pela rede? ou isso depende do ransomware?

&lt;----------------------------------------------------------------&gt;
O seu tempo é o único bem que você não recupera


Obrigado! Cada ransomware explora uma vulnerabilidade específica, de acordo com o objetivo do malware. Se não me engano, todas as versões do Samba a partir da 3.5.0 estão sujeitas a execução de código remoto, possibilitando que um cliente malicioso carregue e execute uma biblioteca através do servidor. Até onde tenho conhecimento em questão de Ransomware, somente o WannaCry explora essa vulnerabilidade, mas posso estar enganado. Os detalhes sobre essa vulnerabilidade podem ser observados nesse link: https://www.samba.org/samba/security/CVE-2017-7494.html

Espero ter ajudado, até mais!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts