RansomExx – o ransomware por trás dos ataques a marcas brasileiras

Ataques de ransomware contra lojas e empresas brasileiras nos últimos dias repercutem em todo o país pelo seu poder destrutivo. O uso do RansomExx vem chamando a atenção. Com uma evolução do malware para afetar não somente sistemas Windows, mas também sistemas Linux, torna-se uma ameaça muito mais perigosa para organizações e entidades governamentais. Por isso, a equipe de gerência de entrega e serviços de segurança da ISH escreveu um relatório mais detalhado sobre o RansomExx e as maneiras de mitigá-lo.

RansomExx – Visão Geral

RansomExx, também conhecido como Ransom X, Target777, Defray777, Defray e Defray 2018, é um ransomware ativo desde 2018, atacando empresas mundialmente. Sendo atribuído aos grupos Gold Dupont e Sprite Spider, esse ransomware é notável por sua evolução, atacando não somente máquinas Windows, mas sendo transferido para também afetar sistemas Linux.

Variante Windows

Como o malware roda inteiramente na memória, são poucos exemplos encontrados. Ele é normalmente entregue como um payload secundário na memória, sem nunca tocar no disco, o que torna mais difícil de detectar. Em casos recentes, o malware foi carregado na memória e executado pelo Cobalt Strike, que por sua vez, foi entregue e carregado pelo loader Vatet. A variante do Windows também tem uma funcionalidade já vista em outros ransomwares, que desabilita vários produtos de segurança para sua execução na máquina infectada.

Em uma análise realizada pela Cybereason em uma amostra do malware, foi revelado que o código está parcialmente ofuscado, mas inclui informações indicativas, como a string “ransom.exx”. Após a execução, RansomEXX começa a descriptografar algumas strings necessárias para sua operação, que incluem principalmente logs. RansomEXX então gera uma thread separada em segundo plano para lidar com o processo de registro. O processo continua com o encerramento de processos e serviços do sistema que podem interferir na execução, mas exclui aqueles que são relevantes para sua execução.

Os comandos listados a seguir são executados pelo RansomEXX após a criptografia. A função desses comandos é evitar que a vítima restaure seu sistema excluindo backups e evitando que se execute a recuperação de erros do Windows, por exemplo. Por último, uma nota de resgate é deixada na máquina.

 

Comandos Ações
“C:\Windows\System32\fsutil.exe” usn deletejournal /D C: fsutil.exe deleta o Update Sequence Number journal
“C:\Windows\System32\wbadmin.exe” delete catalog -quiet wbadmin.exe deleta o catálogo de backup
“C:\Windows\System32\wevtutil.exe” cl Setup

“C:\Windows\System32\wevtutil.exe” cl System

“C:\Windows\System32\wevtutil.exe” cl Application

“C:\Windows\System32\wevtutil.exe” cl Security

wevtutil limpa os eventos de log
“C:\Windows\System32\bcdedit.exe” /set {default} bootstatuspolicy ignoreallfailures

“C:\Windows\System32\bcdedit.exe” /set {default} recoveryenabled no

Bcdedit desabilita o modo de recuperação
“C:\Windows\System32\cipher.exe” /w:C: cipher sobrescreve arquivos deletados no drive C
“C:\Windows\System32\schtasks.exe” /Change /TN “\Microsoft\Windows\SystemRestore\SR” /disable schtasks desabilita a restauração do sistema pela tarefa agendada
“C:\Windows\System32\wevtutil.exe” sl Security /e:false wevtutil desativa os logs de eventos de segurança

Variante Linux

Com a possibilidade de infectar sistemas Linux desde julho de 2020, o grupo que opera o ransomware pode ir contra uma infraestrutura capaz de executar binários ELF, como servidores VMWare ESXI. As vítimas afetadas por essa versão, são organizações que usam a virtualização para hospedar muitos de seus sistemas corporativos em nesses servidores ESXi. Ao implantar o ransomware nesses hosts ESXi, o grupo é capaz de aumentar rapidamente o escopo dos sistemas afetados dentro dos ambientes da vítima.

A versão Linux contém a mesma lógica de varredura de arquivo e de criptografia que a versão do Windows e é projetada para receber um argumento de linha de comando com um caminho para o diretório onde iniciará seu processo de criptografia recursiva. Os arquivos são criptografados usando AES no modo de cifra ECB com uma chave de 256 bits gerada exclusivamente para cada arquivo, e implementa seu esquema criptográfico usando funções da biblioteca de código aberto mbedtls. A chave é então criptografada usando uma chave pública RSA incorporada de 4096 bits e anexada ao arquivo criptografado. Além disso, o malware inicia um thread que regenera e criptografa novamente a chave AES a cada 0,18 segundos. Cada vítima é alvo de uma compilação exclusiva, contendo uma chave pública RSA exclusiva. Se a vítima pagar o resgate, receberá uma ferramenta de descriptografia contendo uma chave privada RSA que corresponde à chave pública de criptografia.

Para comprometer os dispositivos ESXi, os operadores tentam coletar credenciais que podem ser usadas para autenticação na interface da web do vCenter. Tenta-se recuperar credenciais do vCenter armazenadas em navegadores da web, como também coletar credenciais da memória do host. Após a autenticação no vCenter, o SSH é habilitado para permitir o acesso persistente aos dispositivos ESXi. Em alguns casos, o grupo também altera a senha da conta root ou as chaves SSH do host.

Embora bastante efetivo, a versão Linux do ransomware carece de muitas funcionalidades adicionais, como nenhuma comunicação C&C, nenhum encerramento de processos em execução, não desabilita software de segurança, entre outros.

IoCs – Indicadores de Comprometimento

Alguns indicadores de comprometimento podem ser encontrados abaixo:

Regra Yara

Como forma de auxiliar equipes de Threat Hunting, a McAfee desenvolveu uma regra para detectar a ameaça para ambas as versões, Windows e Linux, como pode ser visualizado abaixo:

Yara         rule RANSOM_ransomexx_windows




{




meta:




        description = "Rule to detect Windows and Linux version of RansomeXX"




        author = "McAfee ATR team "




        rule_version = "v1"




        mitre_attack = "T1027,T1497.001,T1083,T1057,T1012,T1082,T1033,T1129,T1543.003"




        malware_type = "Ransom"




        malware_family = "Ransom:Win/RansomeXX"




        actor_type = "Cybercrime"




        actor_group = "Unknown"




  strings:




    $0 = {223E95459D82E1E7229F633169D26B57474FA337C9981C0BFB91314D55B9E9

1C5A5EE49392CFC52312D5562C4A6EFFDC10D0685A194D5E2B31581454DEF675FB79

58FEC7DB873E5689FC9D03217C68D8033820F9E65E04D856F3A9C44A4CBDC1D00846

F5983D771C1B137E4E0F9D8EF409F92ED254FCFF021E69D229C9CFAD85FA486C1B54B

8FF0642BFF521F15C1C0B665F3F34011656B429008F3563ECB5F2590723A054303D8A

7EA9889D903E077C6F218F44416AC2D1F53C583303917E6BE9EBE048E31E9E256718F

29229319C19F15BA4058CCFFDBBCB382D1F6F56585D8A4ADEC34C052CC0DA8D7345

1A}




    $1 = {FC54612808977EE8F548B2258D310BDC9D2D256B3EE9DAAE347BE6F4DC835A

467FFE8EB208F7E05D987A9B044A8E98C6B087F15A0BFC5D0689EF49D2FAE572B881B

123A85FFA21595F36F71C27109C692C1B56BBDCEB5B9D2865B3708DBC12A053384A9

C0C88E405A06C27DCF49ADA62EB2BB0E20B6E3116640286ED3A87A5713079B21F518

99B752E45573D4B39F4DBD3323CAB82BF63326BFB982F}




    $2 = {7C09E81700C11004018D9A9AEAC0F6596F559C6D4DAF59A5F26D9F200857C

A6C3E9CAC524BD9ACC92ADC7E84BFDA79164B7ECD8486985D38604FEBDC6740D20

B3AC88F6AD82A4FB08D71AB47A086E86EEDF39D1C5BBA97C4080126141D67F37BE8

538F5A8BE740E484AE6852F8121067CC4BF7A5765577F39E7E24067817FAE0D7}




    $3 = {2A755EE16E1430B26E1430B26E1430B2943729B26C1430B2676CA3B2791430

B26E1431B2811430B201629BB2711430B201629AB2161430B201629FB2451430B20

162AEB2791430B20162ABB26F1430B20162ADB26F1430B2}




    $4 = {EC9B9FE9A3EADDA692CD43D2F59598ED858C02C2652FBF922EC454185E6A

16936E39334038ACEF838BFB186FFF7480ADC4289382ECD6D394F0AF85336B597A

FC1A900B2EB21EC949D292DF4C047E0B2153}




    $5 = {16918F03F53C52DAC54ED8259740051E9C5FECF64344F7A82260EDCC304C65

28F659C77866A510D9C1D6AE5ECDC80D6FDDF18CAB34C25909C99A4174FCC28B8D}




    $6 = {004503615937300CE53865A20D27086D422F631D5F08017241651B402B190

50DDD54D3334D34224351BB2006285551897457671F526F38B091A20CD280000000}




    $7 = "!NEWS_FOR" fullword ascii




    $8 = "Study this message REGARDFULLY" fullword ascii




  condition:




    (uint16(0) == 0x5a4d or uint32(0) == 0x464C457F) and filesize < 500KB and  4 of them




}




Outra regra Yara está disponível no Malpedia e  é capaz de detectar a versão Windows da ameaça - win.ransomexx:




rule win_ransomexx_auto {




    meta:

        author = "Felix Bilstein - yara-signator at cocacoding dot com"

        date = "2021-06-10"

        version = "1"

        description = "Detects win.ransomexx."

        info = "autogenerated rule brought to you by yara-signator"

        tool = "yara-signator v0.6.0"

        signator_config = "callsandjumps;datarefs;binvalue"

        malpedia_reference = "https://malpedia.caad.fkie.fraunhofer.de/details/win.ransomexx"

        malpedia_rule_date = "20210604"

        malpedia_hash = "be09d5d71e77373c0f538068be31a2ad4c69cfbd"

        malpedia_version = "20210616"

        malpedia_license = "CC BY-SA 4.0"

        malpedia_sharing = "TLP:WHITE"




    /* DISCLAIMER

     * The strings used in this rule have been automatically selected from the

     * disassembly of memory dumps and unpacked files, using YARA-Signator.

     * The code and documentation is published here:

     * https://github.com/fxb-cocacoding/yara-signator

     * As Malpedia is used as data source, please note that for a given

     * number of families, only single samples are documented.

     * This likely impacts the degree of generalization these rules will offer.

     * Take the described generation method also into consideration when you

     * apply the rules in your use cases and assign them confidence levels.

     */







    strings:

        $sequence_0 = { 8bcf 895dfc 8955f4 e8???????? 85c0 7975 895dfc }

            // n = 7, score = 100

            //   8bcf                 | mov                 ecx, edi

            //   895dfc               | mov                 dword ptr [ebp - 4], ebx

            //   8955f4               | mov                 dword ptr [ebp - 0xc], edx

            //   e8????????           |                    

            //   85c0                 | test                eax, eax

            //   7975                 | jns                 0x77

            //   895dfc               | mov                 dword ptr [ebp - 4], ebx




        $sequence_1 = { 2bfe 8945fc 83ff40 721f 8b4508 53 e8???????? }

            // n = 7, score = 100

            //   2bfe                 | sub                 edi, esi

            //   8945fc               | mov                 dword ptr [ebp - 4], eax

            //   83ff40               | cmp                 edi, 0x40

            //   721f                 | jb                  0x21

            //   8b4508               | mov                 eax, dword ptr [ebp + 8]

            //   53                   | push                ebx

            //   e8????????           |                    




        $sequence_2 = { 7410 817df8f0070000 7507 56 ff15???????? 5b 56 }

            // n = 7, score = 100

            //   7410                 | je                  0x12

            //   817df8f0070000       | cmp                 dword ptr [ebp - 8], 0x7f0

            //   7507                 | jne                 9

            //   56                   | push                esi

            //   ff15????????         |                    

            //   5b                   | pop                 ebx

            //   56                   | push                esi




        $sequence_3 = { 6a00 33ff 8d442474 e8???????? 83c404 85c0 0f8535020000 }

            // n = 7, score = 100

            //   6a00                 | push                0

            //   33ff                 | xor                 edi, edi

            //   8d442474             | lea                 eax, dword ptr [esp + 0x74]

            //   e8????????           |                    

            //   83c404               | add                 esp, 4

            //   85c0                 | test                eax, eax

            //   0f8535020000         | jne                 0x23b




        $sequence_4 = { 884736 c1ea10 0fb65640 885737 0fb6464f 884738 c1e908 }

            // n = 7, score = 100

            //   884736               | mov                 byte ptr [edi + 0x36], al

            //   c1ea10               | shr                 edx, 0x10

            //   0fb65640             | movzx               edx, byte ptr [esi + 0x40]

            //   885737               | mov                 byte ptr [edi + 0x37], dl

            //   0fb6464f             | movzx               eax, byte ptr [esi + 0x4f]

            //   884738               | mov                 byte ptr [edi + 0x38], al

            //   c1e908               | shr                 ecx, 8




        $sequence_5 = { f30f7f0a f30f6f4210 f30f6f8ab0000000 660f38dbc0 660f38dbc9 f30f7f82b0000000 }

            // n = 6, score = 100

            //   f30f7f0a             | movdqu              xmmword ptr [edx], xmm1

            //   f30f6f4210           | movdqu              xmm0, xmmword ptr [edx + 0x10]

            //   f30f6f8ab0000000     | movdqu              xmm1, xmmword ptr [edx + 0xb0]

            //   660f38dbc0           | aesimc              xmm0, xmm0

            //   660f38dbc9           | aesimc              xmm1, xmm1

            //   f30f7f82b0000000     | movdqu              xmmword ptr [edx + 0xb0], xmm0




        $sequence_6 = { 6a00 ff15???????? 8b1d???????? 57 6a00 6a01 }

            // n = 6, score = 100

            //   6a00                 | push                0

            //   ff15????????         |                    

            //   8b1d????????         |                    

            //   57                   | push                edi

            //   6a00                 | push                0

            //   6a01                 | push                1




        $sequence_7 = { 8b4df8 40 49 8945fc }

            // n = 4, score = 100

            //   8b4df8               | mov                 ecx, dword ptr [ebp - 8]

            //   40                   | inc                 eax

            //   49                   | dec                 ecx

            //   8945fc               | mov                 dword ptr [ebp - 4], eax




        $sequence_8 = { 897c2418 75a4 8db42460020000 8d5c2470 e8???????? 8bf0 }

            // n = 6, score = 100

            //   897c2418             | mov                 dword ptr [esp + 0x18], edi

            //   75a4                 | jne                 0xffffffa6

            //   8db42460020000       | lea                 esi, dword ptr [esp + 0x260]

            //   8d5c2470             | lea                 ebx, dword ptr [esp + 0x70]

            //   e8????????           |                    

            //   8bf0                 | mov                 esi, eax




        $sequence_9 = { 40 8bc8 c1e105 8bb9084c4200 0bb90c4c4200 75c8 5f }

            // n = 7, score = 100

            //   40                   | inc                 eax

            //   8bc8                 | mov                 ecx, eax

            //   c1e105               | shl                 ecx, 5

            //   8bb9084c4200         | mov                 edi, dword ptr [ecx + 0x424c08]

            //   0bb90c4c4200         | or                  edi, dword ptr [ecx + 0x424c0c]

            //   75c8                 | jne                 0xffffffca

            //   5f                   | pop                 edi




    condition:

        7 of them and filesize < 372736

}

Prevenindo Ataques de Ransomware

Mantenha backups de dados criptografados e offline e teste-os regularmente. Os procedimentos de backup devem ser realizados regularmente. É importante que os backups sejam mantidos offline, pois muitas variantes do ransomware tentam localizar e excluir ou criptografar backups acessíveis.

Além disso, crie, mantenha e execute um plano básico de resposta a incidentes cibernéticos, um plano de recuperação e um plano de comunicações associado:

  • O plano de resposta a incidentes cibernéticos deve incluir procedimentos de resposta e notificação para incidentes de ransomware. Recomendamos o CISA and Multi-State Information and Sharing Center (MS-ISAC) Joint Ransomware Guide para obter mais detalhes sobre a criação de um plano de resposta a incidentes cibernéticos.
  • O plano de recuperação deve abordar como operar se você perder o acesso ou o controle de funções críticas. A CISA oferece avaliações de resiliência cibernética sem custo e não técnicas para ajudar as organizações a avaliar sua resiliência operacional e práticas de segurança cibernética.

Também mitigue vulnerabilidades e configurações incorretas voltadas para a Internet para reduzir o risco de atores que exploram essa superfície de ataque:

  • Empregue as melhores práticas para o uso de Remote Desktop Protocol (RDP) e outros serviços de área de trabalho remota. Os atores da ameaça geralmente obtêm acesso inicial a uma rede por meio de serviços remotos expostos e mal protegidos e, posteriormente, propagam o ransomware;
  • É importante ainda auditar a rede para sistemas usando RDP, portas RDP fechadas não usadas. Aplique bloqueios de conta após um número especificado de tentativas, aplique autenticação multifator (MFA) e registre tentativas de login RDP;
  • Realize varreduras de vulnerabilidades regulares para identificar e resolver vulnerabilidades, especialmente aquelas em dispositivos voltados para a Internet. A CISA oferece uma variedade de serviços de higiene cibernética gratuitos, incluindo varredura de vulnerabilidade, para ajudar as organizações de infraestrutura crítica a avaliar, identificar e reduzir sua exposição a ameaças cibernéticas, como ransomware. Tirando proveito desses serviços, organizações de qualquer porte receberão recomendações sobre maneiras de reduzir seus riscos e mitigar vetores de ataque;
  • Atualize o software, incluindo sistemas operacionais, aplicativos e firmware, em tempo hábil. Priorize a correção oportuna de vulnerabilidades críticas e vulnerabilidades em servidores voltados para a Internet – bem como software de processamento de dados da Internet, como navegadores da web, plug-ins de navegador e leitores de documentos. Se a correção rápida não for viável, implemente as atenuações fornecidas pelo fornecedor;
  • Certifique-se de que os dispositivos estão configurados corretamente e os recursos de segurança estão ativados, por exemplo, desativar portas e protocolos que não estão sendo usados ​​para uma finalidade comercial;
  • Desative ou bloqueie o protocolo SMB (Server Message Block) de entrada e saída e remova ou desative as versões desatualizadas do SMB.

Reduza o risco de e-mails de phishing chegarem aos usuários finais:

  • Habilitando filtros de spam;
  • Implementar um programa de conscientização e treinamento do usuário de segurança cibernética que inclua orientação sobre como identificar e relatar atividades suspeitas (por exemplo, phishing) ou incidentes.

Utilize as melhores práticas disponíveis de segurança cibernética:

  • Garanta que o software antivírus, antimalware e as assinaturas estejam atualizados;
  • Implemente a lista de permissões de aplicativos (application allowlisting);
  • Garanta que as contas de usuários e privilégios sejam limitadas por meio de políticas de uso de contas, controle de contas de usuários e gerenciamento de contas com privilégios;
  • Empregue MFA para todos os serviços que forem possíveis, especialmente para webmail, redes privadas virtuais (VPNs) e contas que acessam sistemas críticos.

Referências

  1. https://kc.mcafee.com/corporate/index?page=content&id=KB93665
  2. https://malpedia.caad.fkie.fraunhofer.de/details/win.ransomexx
  3. https://otx.alienvault.com/pulse/611ecd98c0e17d68bf061a06/
  4. https://www.trendmicro.com/en_ie/research/21/a/expanding-range-and-improving-speed-a-ransomexx-approach.html
  5. https://www.cybereason.com/blog/cybereason-vs.-ransomexx-ransomware
  6. https://securelist.com/ransomexx-trojan-attacks-linux-systems/99279/
  7. https://www.kaspersky.com.br/blog/ransomexx-egregor-ransomware-ataques/16712/
  8. https://unit42.paloaltonetworks.com/vatet-pyxie-defray777/4/
  9. https://unit42.paloaltonetworks.com/vatet-pyxie-defray777/3/
  10. https://www.crowdstrike.com/blog/carbon-spider-sprite-spider-target-esxi-servers-with-ransomware/
  11. https://unit42.paloaltonetworks.com/ransomware-threat-assessments/8/
  12. https://github.com/pan-unit42/iocs/blob/master/Defray777_IOC.text
  13. https://www.cisa.gov/sites/default/files/publications/CISA_Fact_Sheet-Protecting_Sensitive_and_Personal_Information_from_Ransomware-Caused_Data_Breaches-508C.pdf

Por Nathalia Ordonio Magalhaes Palmeira e Paulo Trindade