RansomExx: expandindo o alcance e aumentando a velocidade

O RansomExx, ransomware responsável por vários ataques envolvendo grandes empresas este ano, tem apresentado melhorias e maior efetividade em suas abordagens. O relatório mais recente nos mostra o uso de novas variantes adaptadas para servidores Linux que expandem de forma efetiva o alcance para mais do que apenas servidores Windows.

Entenda mais nesse artigo do Leandro Froés

 

Identificamos recentemente o RansomExx comprometendo empresas nos Estados Unidos, Canadá e Brasil, assim como a utilização com maior frequência da sua variante para Linux. Este artigo detalha nossa análise de uma campanha do RansomExx que utiliza o trojan IcedID como o vetor de entrada, Vatet Loader como o método de carregamento dos payloads e ambos Pyxie e Cobalt Strike como ferramentas de pós-intrusão. A combinação destas abordagens levou apenas 5 horas desde o acesso inicial até a execução do ransomware.

O RansomExx costuma ser operado por um grupo nomeado pela SecureWorks como GOLD DUPONT, grupo este que aparenta estar ativo desde 2018. Baseado nos ataques mais recentes, este grupo demonstrou uma abordagem efetiva e rápida para comprometer o ambiente. Malwares como Vatet Loader, Pyxie, Trickbot e RansomExx, assim como ferramentas de pós-intrusão como Cobalt Strike, geralmente fazem parte do arsenal deste grupo.

Vale a pena checarmos malwares como estes pelo fato de terem demonstrado técnicas efetivas e observadas frequentemente em campanhas de ransomware em 2020. Os métodos utilizados incluem a utilização de softwares trojanados para carregar payloads maliciosos, além de serem ataques executados extremamente rápido. 

 

Investigação

O incidente que observamos se iniciou através de um e-mail de phishing contendo um arquivo ZIP com senha. Este arquivo possuia um documento do Word contendo uma macro maliciosa (detectado como Trojan.W97M.SHATHAK.A). O conteúdo do documento é uma mensagem que induz o usuário a habilitar o conteúdo da macro:

Figura 1. Conteúdo do documento do Word malicioso

 

Assim que a macro contida no documento é habilitada, o script irá tentar fazer o download do Trojan IcedID (detectado como TrojanSpy.Win32.ICEDID.BP) de uma URL maliciosa. Logo após o download o malware é executado utilizando a ferramenta regsvr32.exe:

 

Figura 2. Trecho do código da macro

Como de costume, esta variante do IcedID utilizou esteganografia como um dos métodos para se obter um dos seus payloads, sendo este um arquivo .png baixado de uma URL maliciosa. A imagem é decriptada e o payload injetado em memória. Para fins de persistência, o malware cria uma tarefa agendada que rodará de uma em uma hora. Esta tarefa utilizará o regsvr32.exe novamente para carregar a DLL maliciosa:

 

Figura 3. Tarefa agendada maliciosa

Neste incidente, observamos a utilização da ferramenta msiexec.exe para injetar o último payload do malware. Com o último estágio do trojan rodando, o atacante foi capaz de carregar e executar um payload do Cobalt Strike, permitindo assim que a máquina se comunicasse com o servidor de comando e controle (C&C):

 

Figura 4. Telemetria da máquina de ponto de entrada comunicando com o servidor de Comando e Controle

 

Após a comunicação com o servidor malicioso, o atacante começa a coletar informações sobre a máquina em que estava e, então, mover lateralmente. Neste artigo, não possuímos evidências de todas as abordagens utilizadas para movimentação lateral, apenas uma que foi utilizando SMB.

 

Figura 5. Algumas informações da máquina de ponto de entrada obtidas pelo atacante

 

O artefato utilizado para carregar os outros componentes executados no ambiente foi uma versão trojanada do software Notepad++ – Vatet Loader (detectado como Trojan.Win32.VATET.SM). Como já comentado no nosso artigo anterior, o Vatet Loader decripta um arquivo (no nosso caso o config.dat) utilizando uma operação com XOR. Após a execução desta operação, o Trojan aloca memória, injeta o conteúdo do config.dat decriptado na memória alocada e então executa o payload malicioso:

 

Figura 6. Trecho de código da rotina maliciosa do Vatet Loader

O Vatet Loader pode carregar qualquer payload, contanto que ele siga a operação de XOR e o fullpath do arquivo config.dat esperado pelo loader. Identificamos múltiplos config.dat sendo utilizados para tarefas diversas, tais como levantamento de informações utilizando Pyxie, Lazagne e Mimikatz, assim como o próprio RansomExx na última fase do ataque. Um ponto importante a se destacar é que o config.dat utilizado para levantar informações possuía um IP interno no seu arquivo de configuração que especificava o servidor para o qual as informações deveriam ser enviadas para uma possível exfiltração. Este tipo de comportamento nos fez concluir que o ataque foi de fato muito rápido e que alguns dos arquivos utilizados foram criados no momento do incidente.

 

Uso da variante para ambientes Linux

Correlacionando o incidente descrito anteriormente com outros ataques recentes envolvendo o RansomExx, observamos o uso de uma nova variante do ransomware para Linux sendo utilizada para comprometer especificamente servidores Linux. Não possuímos informações de como o malware é enviado ao servidor, mas observamos o malware focando servidores que armazenam arquivos referentes a ambientes VMware especificamente. Utilizando o Telfhash da Trend Micro, achamos três variantes do RansomExx para Linux e todas elas possuem o mesmo comportamento. O malware que analisamos é um ELF compilado para 64 bits que utiliza a biblioteca de código aberto mbedtls para todas as suas operações de criptografia. O arquivo é multi-thread e vai direto ao ponto, ou seja, não possui nenhuma outra funcionalidade como por exemplo atividade de rede, técnicas de antidebugging ou qualquer outra técnica a não ser a criptografia em si. O malware também possui algumas informações de depuração, nos dando acesso a itens como nomes de funções e nomes de arquivos referentes ao código fonte em si:

 

Figura 7. Exemplos das informações de debugging do RansomExx

Ao ser executado, o malware chama sua primeira função, GeneratePreData, responsável por criar uma chave AES de 256 bits utilizando valores pseudo-randômicos gerados por funções nativas do Linux e também da mbedtls. A chave AES é então encriptada com uma chave pública RSA de 4096 bits hardcoded e o resultado disto é colocado em uma variável global. O conteúdo desta variável será colocado no fim de cada arquivo para ser utilizado na criptografia utilizando AES no modo ECB:

 

Figura 8. Chave pública RSA hardcoded

 

A função GeneratePreData roda em uma outra thread criada pelo malware em um looping infinito a cada 0,18 segundos, ou seja, uma nova chave poderá ser escrita na variável global a cada 0,18 segundos. Esta thread fica executando até o fim da execução do malware.

 

Figura 9. Trecho de código da função main do ransomware

 

Figura 10. Trecho de código da criptografia utilizando AES

 

O malware só irá executar corretamente se um diretório for passado como argumento na linha de comando. A preparação para a criptografia se inicia em uma função chamada list_dir. A primeira ação executada por esta função é garantir que o argumento passado via linha de comando é de fato um diretório. Uma vez que a checagem é feita, a função responsável pela criação da ransom note é chamada.

Se os outros arquivos dentro do diretório forem outros diretórios, a função list_dir é chamada novamente. Caso sejam arquivos comuns, o malware procura pela ocorrência da extensão esperada pelo ransomware no nome do arquivo observado para decidir se o mesmo precisa ser encriptado. Para cada arquivo sem a ocorrência da extensão do ransomware, o malware adiciona uma tarefa para criptografar o arquivo em questão posteriormente:

 

Figura 11. Trecho de código mostrando a função list_dir()

 

Figura 12. Trecho de código da função responsável por criar a ransom note

 

Recomendações

Atacantes melhoram seu arsenal e abordagens constantemente para serem mais eficazes. O uso de técnicas baseadas em memória, ferramentas legítimas do Windows e ferramentas de pós-intrusão conhecidas para entrega dos payloads principais apresentam uma efetividade muito grande e aumentam a chance de um ataque de ransomware bem-sucedido.

Para usuários, a prevenção contra estes ataques desde o início é a chave para impedir ransomwares de serem executados. A agilidade e a velocidade de campanhas como esta não iria importar no futuro se o acesso inicial fosse bloqueado desde o começo. Além disso, como podemos notar observando esta campanha, usuários devem fazer o download e executar apenas arquivos conhecidos e de fontes legítimas para se evitar a entrada de arquivos maliciosos no ambiente. Os usuários devem também evitar o uso de macros e suspeitar de documentos que pedem a eles para as habilitarem.

Em linhas gerais, medidas de segurança mais robustas podem prevenir ransomwares e outras ameaças de terem um impacto grande no ambiente. Dentre estas medidas, estão a utilização do padrão de menor privilégio necessário e garantir que os sistemas estejam sempre atualizados. Se a utilização de um sistema legado não pode ser evitada, soluções como Virtual Patching podem ajudar a garantir que o sistema legado esteja protegido.

 

Soluções da Trend Micro

O Trend Micro Cloud One™– Workload Security possui uma funcionalidade de virtual patching que pode proteger sistemas contra explorações. Além disso, uma vez que algumas das técnicas utilizadas por estes malwares podem burlar soluções de segurança baseadas em assinatura, tecnologias como Trend Micro Behavior Monitoring e Machine Learning podem ser usadas para prevenir e bloquear tais ameaças.

Empresas podem também utilizar as vantagens do Trend Micro XDRTM , que coleta e correlaciona os dados dos endpoints, e-mails, cloud e rede, entregando um contexto melhor elaborado e ajudando em investigações ao usar uma única console. Isto permite os times a responderem a ameaças similares muito mais rápido e detectarem ataques avançados previamente.

 

Indicadores de Comprometimento

Trend Micro Detection Name

SHA256

Ransom.Linux.EXX.YAAK-A

cb408d45762a628872fa782109e8fcfc3a5bf456074b007de21e9331bb3c5849

Ransom.Linux.EXX.YAAK-B

08113ca015468d6c29af4e4e4754c003dacc194ce4a254e15f38060854f18867

Ransom.Linux.EXX.YAAK-B

78147d3be7dc8cf7f631de59ab7797679aba167f82655bcae2c1b70f1fafc13d

Trojan.W97M.SHATHAK.A

6fb5af0a4381411ff1d9c9041583069b83a0e94ff454cba6fba60e9cd8c6e648

TrojanSpy.Win32.ICEDID.BP

3c5af2d1412d47be0eda681eebf808155a37f4911f2f2925c4adc5c5824dea98

TrojanSpy.Win32.ICEDID.BP

87e732bdc3a1ed19904985cfc20da6f26fa8c200ec3b2806c0abc7287e1cdab7

TrojanSpy.Win32.ICEDID.BP

884fe75824ad10d800fd85d46b54c8e45c4735db524c247018743eb471190633