Como o Ryuk ransomware que ataca empresas



O Ryuk é uma das opções de ransomware mais conhecidas nos últimos anos. Desde que ele apareceu pela primeira vez no verão de 2018, ele compilou uma lista impressionante de vítimas , especialmente no ambiente de negócios, que é o principal alvo de seus ataques.

1. Informações Gerais


Este documento contém uma análise da opção Ryuk ransomware, bem como do gerenciador de inicialização responsável por baixar o malware no sistema.

O Ryuk ransomware apareceu pela primeira vez no verão de 2018. Uma das diferenças entre o Ryuk e outro ransomware é que ele visa atacar ambientes corporativos.

Em meados de 2019, grupos de crimes cibernéticos atacaram um grande número de empresas espanholas com a ajuda desse cripto.


FIG.


Figura
1: Trecho do El Confidencial referente ao ataque do Ryuk ransomware [1] 2: Trecho do El País sobre um ataque do Ryuk ransomware [2]
Este ano, o Ryuk atacou um grande número de empresas em diferentes países. Como você pode ver nas figuras abaixo, Alemanha, China, Argélia e Índia foram as que mais sofreram.

Comparando o número de ataques cibernéticos, podemos ver que milhões de usuários foram afetados pelo Ryuk e a enorme quantidade de dados foi comprometida, resultando em sérios danos econômicos.


FIG. 3: Ilustração da atividade global de Ryuk.


FIG. 4: 16 países mais afetados por Ryuk


Fig. 5: O número de usuários atacados pelo Ryuk ransomware (em milhões)

De acordo com o princípio usual da operação de tais ameaças, este ransomware após criptografia mostra à vítima uma notificação de resgate que deve ser paga em bitcoins no endereço especificado para restaurar o acesso aos arquivos criptografados.

Este malware mudou desde que apareceu pela primeira vez.
Uma variante dessa ameaça analisada neste documento foi descoberta durante uma tentativa de lançar um ataque em janeiro de 2020.

Devido à sua complexidade, esse malware é frequentemente atribuído a cibercriminosos organizados, também conhecidos como grupos APT.

Parte do código Ryuk tem uma notável semelhança com o código e a estrutura de outro conhecido criptógrafo Hermes, com o qual eles têm várias funções idênticas. É por isso que Ryuk foi inicialmente associado ao grupo norte-coreano Lazarus, que na época era suspeito de estar por trás do ransomware Hermes.

Posteriormente, o Falcon X da CrowdStrike observou que Ryuk foi realmente criado por WIZARD SPIDER [4].

Há alguma evidência para apoiar essa suposição. Em primeiro lugar, esse ransomware foi anunciado no site exploit.in, que é um mercado de malware russo bem conhecido e anteriormente estava associado a alguns grupos russos de APT.
Este fato exclui a teoria de que Ryuk poderia ser desenvolvido pelo grupo Lazarus APT, como isso não corresponde à maneira como o grupo age.

Além disso, Ryuk foi apontado como um criptografador que não funcionará nos sistemas russo, ucraniano e bielorrusso. Esse comportamento é determinado pela função encontrada em algumas versões do Ryuk, onde verifica o idioma do sistema em que esse criptografador está sendo executado e interrompe sua operação se o sistema tiver russo, ucraniano ou bielorrusso. Finalmente, ao realizar uma análise especializada de uma máquina que foi invadida pelo grupo WIZARD SPIDER, foram descobertos vários “artefatos” que supostamente eram usados ​​no desenvolvimento do Ryuk como uma variante do ransomware Hermes.

Por outro lado, as especialistas Gabriela Nicolao e Luciano Martins sugeriram que o criptografador poderia ter sido desenvolvido pela equipe do CryptoTech APT [5].
Isso decorre do fato de que alguns meses antes do surgimento do Ryuk, esse grupo postou informações no fórum do mesmo site em que eles haviam desenvolvido uma nova versão do ransomware Hermes.

Vários usuários do fórum se perguntaram se a CryptoTech realmente criou o Ryuk. Depois disso, esse grupo se defendeu e afirmou ter evidências de que havia desenvolvido 100% desse criptografador.

2. Características


Começamos com o gerenciador de inicialização, cuja tarefa é identificar o sistema em que está localizado, para que você possa executar a versão "correta" do criptografador Ryuk.
O hash do carregador de inicialização é o seguinte:

MD5 A73130B0E379A989CBA3D695A157A495
SHA256 EF231EE1A2481B7E627921468E79BB4369CCFAEB19A575748DD2B664ABC4F469

Um dos recursos deste carregador de inicialização não é esse: os criadores deste malware não incluíram nenhuma informação nele.

Às vezes, eles incluem dados incorretos para fazer o usuário pensar que ele está supostamente iniciando um aplicativo legítimo. No entanto, como veremos mais adiante, no caso de a infecção não envolver interação com o usuário (como é o caso deste criptografador), os invasores não consideram necessário o uso de metadados.


FIG. 6:

Amostra de metadados A amostra foi compilada no formato de 32 bits para que possa ser executada em sistemas de 32 e 64 bits.

3. Vetor de penetração


A amostra que baixa e inicia o Ryuk entrou em nosso sistema por uma conexão remota e os parâmetros de acesso foram obtidos graças a um ataque RDP preliminar.


FIG. 7: Registro de ataque Um

invasor conseguiu fazer logon remotamente. Depois disso, ele criou um arquivo executável com nossa amostra.
Este arquivo executável foi bloqueado por uma solução antivírus antes do lançamento.


FIG. 8: Bloqueio da amostra



Fig. 9: Bloqueio de amostra

Quando um arquivo malicioso foi bloqueado, o invasor tentou baixar uma versão criptografada do arquivo executável, que também foi bloqueada.


FIG. 10: Um conjunto de amostras que um invasor tentou executar

Finalmente, ele tentou baixar outro arquivo malicioso através de um console criptografado
PowerShell para ignorar a proteção antivírus. Mas ele também foi bloqueado.


FIG. 11: PowerShell com o conteúdo malicioso bloqueado


Fig. 12: PowerShell com conteúdo malicioso bloqueado

4. Carregador de Inicialização


Quando é executado, ele grava o arquivo Leia-me na pasta % temp% , típica do Ryuk. Este arquivo - uma demanda de resgate, contendo o domínio protonmail do endereço de email, bastante comum nessa família de malware: msifelabem1981@protonmail.com




Fig. 13: Requisito de resgate

No tempo de execução, o gerenciador de inicialização pode ver que ele executa vários arquivos executáveis ​​com nomes aleatórios. Eles são armazenados em uma pasta PUBLIC oculta , mas se a opção "Mostrar arquivos e pastas ocultos" não estiver ativa no sistema operacional , eles permanecerão ocultos. Além disso, esses arquivos são de 64 bits, diferentemente do arquivo pai, que é de 32 bits.




FIG. 14: Arquivos executáveis ​​iniciados pelo exemplo

Como você pode ver na figura acima, o Ryuk lança o icacls.exe, que será usado para modificar todas as ACLs (lista de controle de acesso), garantindo assim o acesso e a alteração dos sinalizadores.

Ele obtém acesso total em todos os usuários a todos os arquivos no dispositivo (/ T), independentemente de erros (/ C) e sem mostrar nenhuma mensagem (/ Q).


FIG. Figura 15: Opções de execução do icacls.exe iniciadas pelo exemplo.É

importante observar que o Ryuk verifica qual versão do Windows está sendo executada. Para fazer isso, ele
verifica a versão usando GetVersionExW , na qual verifica o valor do sinalizador lpVersionInformationmostrando se a versão atual do Windows é posterior ao Windows XP .





Dependendo de você estar executando uma versão posterior ao Windows XP, o carregador de inicialização gravará na pasta do usuário local - nesse caso, na pasta % Public% .


FIG. 17: Verificando a versão do sistema operacional O

arquivo gravado é Ryuk. Em seguida, lança-o, passando seu próprio endereço como parâmetro.


FIG. 18: Executando o Ryuk através do ShellExecute

A primeira coisa que o Ryuk faz é obter os parâmetros de entrada. Desta vez, existem dois parâmetros de entrada (o próprio arquivo executável e o endereço do conta-gotas), que são usados ​​para remover seus próprios rastreamentos.




FIG. 19: Criando um processo

Você também pode ver que, assim que ele lança seus arquivos executáveis, ele se exclui, deixando assim nenhum vestígio de sua presença na pasta em que foi executado.


FIG. 20: exclusão de arquivo

5. RYUK


Presença 5.1 O
Ryuk, como outros malwares, tenta permanecer no sistema pelo maior tempo possível. Como mostrado acima, uma maneira de atingir esse objetivo é criar e executar secretamente arquivos executáveis. Para isso, a prática mais comum é modificar a chave do Registro CurrentVersion \ Run .
Nesse caso, você pode ver que, para esse fim, o primeiro arquivo executável VWjRF.exe
(o nome do arquivo é gerado aleatoriamente) inicia o cmd.exe .




FIG. 21: Executando o arquivo VWjRF.exe

Em seguida, um comando RUN é inserido com o nome " svchos"Assim, se você quiser verificar as chaves do registro a qualquer momento, não poderá notar facilmente essa alteração, dada a semelhança desse nome com o svchost. Graças a essa chave, o Ryuk garante sua presença no sistema. Se o sistema ainda não foi infectado quando você reiniciar o sistema, o executável tentará novamente


Fig. 22: O exemplo garante a presença da chave do registro

Também podemos ver que esse executável interrompe os dois serviços:
" audioendpointbuilder ", que, como o próprio nome indica, corresponde ao sistema áudio,


Figura 23: Amostra pára de áudio do sistema

e serviço SamSs, que é um serviço de gerenciamento de contas. A interrupção desses dois serviços é uma característica do Ryuk. Nesse caso, se o sistema estiver conectado ao sistema SIEM, o criptografador tentará parar de enviar qualquer aviso ao SIEM . Assim, ele defende seus próximos passos, já que alguns serviços de SAM não poderão iniciar seu trabalho corretamente após a execução do Ryuk.


FIG. 24: A amostra interrompe o serviço Samss

5.2 Privilégios

Em geral, o Ryuk começa com o movimento horizontal na rede ou é iniciado por outro programa malicioso, como o Emotet ou o Trickbot , que, em caso de escalonamento de privilégios, transfere esses direitos elevados para o criptografador.

Com antecedência, como um prelúdio ao processo de implementação, vemos que ele executa o processo ImpersonateSelf , o que significa que o conteúdo de segurança do token de acesso será transferido para o fluxo, onde será recebido imediatamente usando GetCurrentThread .


FIG. 25: Chamando ImpersonateSelf

Em seguida, vemos que ele associará o token de acesso ao fluxo. Também vemos que um dos sinalizadores é DesiredAccess , que pode ser usado para controlar o acesso que o fluxo terá. Nesse caso, o valor que a edx receberá deve ser TOKEN_ALL_ACESS, ou TOKEN_WRITE .




FIG. 26: Criando um token de fluxo

Em seguida, ele usaráO SeDebugPrivilege fará uma chamada para obter direitos de depuração de depuração com relação ao fluxo, como resultado, especificando PROCESS_ALL_ACCESS , ele poderá acessar qualquer processo necessário. Agora, considerando que o criptografador já possui um fluxo preparado, resta apenas prosseguir para o estágio final.


FIG. 27: Chamando SeDebugPrivilege e a função de escalar direitos

Por um lado, temos LookupPrivilegeValueW, que fornece as informações necessárias sobre os privilégios que queremos aumentar.


FIG. 28: Solicitando informações sobre privilégios para sua escalação

Por outro lado, temos o AdjustTokenPrivileges , que nos permite obter os direitos necessários ao nosso fluxo. Nesse caso, o mais importante é o NewState.cuja bandeira concederá privilégios.




FIG. Figura 29: Definindo direitos para o token

5.3 Implantação

Nesta seção, mostraremos como a amostra executa o processo de implantação mencionado anteriormente neste relatório.

O principal objetivo do processo de implementação, bem como a escalação, é obter acesso a cópias de sombra . Para fazer isso, ele precisa trabalhar com o fluxo com direitos mais altos que os do usuário local. Assim que obtiver esses direitos mais altos, ele excluirá as cópias e fará alterações em outros processos para tornar impossível retornar a um ponto de restauração anterior no sistema operacional.

Como geralmente ocorre com esse tipo de malware, ele usa o CreateToolHelp32Snapshot para concluir a implementação, para obter uma captura instantânea dos processos em execução no momento e tentar acessar esses processos usando o OpenProcess . Assim que ele obtém acesso ao processo, ele também abre um token com suas informações para obter os parâmetros do processo.


FIG.

Figura 30: Recebendo processos de um computador Podemos ver dinamicamente como ele recebe uma lista de processos em execução na rotina 140002D9C usando CreateToolhelp32Snapshot. Depois de recebê-los, ele percorre a lista, tentando abrir processos um por um usando o OpenProcess até que ele possa fazê-lo. Nesse caso, o primeiro processo que ele conseguiu abrir foi "taskhost.exe" .


FIG. 31: Execução dinâmica de um procedimento para obter um processo

Podemos ver que ele posteriormente lê o token do processo, por isso é OpenProcessToken com o " 20008 "


Fig. 32: Lendo informações do token do processo

Também verifica se o processo no qual ele será incorporado não é csrss.exe , explorer.exe, lsaas.exe ou se possui um conjunto de permissões de autoridade do NT .


FIG. Figura 33: Processos excluídos.Podemos

ver dinamicamente como ele primeiro verifica usando as informações do token do processo em 140002D9C para descobrir se a conta cujos direitos são usados ​​para executar o processo é uma conta NT AUTHORITY .


FIG. 34: Verificando a AUTORIDADE NT

E, posteriormente, fora do procedimento, verifica se não é csrss.exe, explorer.exe ou lsaas.exe .


FIG. 35: Verificando a AUTORIDADE do NT

Depois que ele tirou um instantâneo dos processos, abriu os processos e verificou que nenhum deles foi excluído, ele está pronto para anotar os processos que serão implementados na memória.

Para fazer isso, ele primeiro reserva uma região na memória ( VirtualAllocEx ), grava nela ( WriteProcessmemory ) e cria um fluxo ( CreateRemoteThread ). Para trabalhar com essas funções, ele usa os PIDs dos processos selecionados, que ele obteve anteriormente usando o CreateToolhelp32Snapshot .


FIG. 36: Código incorporado

Aqui podemos observar dinamicamente como ele usa o PID do processo para chamar a função VirtualAllocEx.


FIG. Figura 37: Invocando a

criptografia do VirtualAllocEx 5.4
Nesta seção, veremos parte deste exemplo relacionado à criptografia. Na figura a seguir, você pode ver duas rotinas chamadas " LoadLibrary_EncodeString " e " Encode_Func ", responsáveis ​​pela execução do procedimento de criptografia.


FIG. 38: Procedimentos de criptografia

Inicialmente, podemos ver como ela carrega uma string que posteriormente será usada para ocultar tudo o que é necessário: importações, DLLs, comandos, arquivos e CSPs.


FIG. 39: Cadeia de desofuscação

A figura a seguir mostra a primeira importação desofuscada no registro R4, LoadLibrary . Isso será usado posteriormente para carregar as DLLs necessárias. Também podemos ver outra linha no registro R12, que é usado junto com a linha anterior para realizar a desofuscação.


FIG. 40: Desofuscação dinâmica:

ele continua carregando comandos que serão executados posteriormente para desativar backups, pontos de restauração e modos de inicialização segura.


FIG. 41: Download de comandos

Em seguida, ele carrega o local onde irá soltar 3 arquivos: Windows.bat, run.sct e start.bat .








FIG. 42: Locais dos Arquivos

Esses 3 arquivos são usados ​​para verificar os privilégios que cada local possui. Se os privilégios necessários não estiverem disponíveis, o Ryuk interrompe a execução.

Ele continua carregando linhas correspondentes a três arquivos. O primeiro, DECRYPT_INFORMATION.html , contém as informações necessárias para restaurar arquivos. O segundo, PUBLIC , contém a chave pública RSA.


FIG. 43: String DECRYPT INFORMATION.html

Terceiro, UNIQUE_ID_DO_NOT_REMOVE , contém a chave criptografada que será usada na próxima rotina para executar a criptografia.


FIG. 44: ID ÚNICO NÃO REMOVE String

Finalmente, ele carrega as bibliotecas necessárias junto com as importações e o CSP necessários ( Microsoft Enhanced RSAe provedor criptográfico da AES ).


FIG. 45: Fazendo download de bibliotecas

Depois que toda a desofuscação estiver concluída, ele executa as ações necessárias para a criptografia: repita todas as unidades lógicas, execute o que foi carregado na sub-rotina anterior, reforce a presença no sistema, descarte o arquivo RyukReadMe.html, criptografe, enumere todas as unidades de rede, alternando para dispositivos descobertos e sua criptografia.
Tudo começa com o download de " cmd.exe " e a gravação da chave pública RSA.


FIG. 46: Preparando a criptografia

Em seguida, recupera todas as unidades lógicas usando GetLogicalDrives e desativa todos os backups, pontos de recuperação e modos de inicialização segura.


FIG. 47: Desativando ferramentas de recuperação

Depois disso, ele reforça sua presença no sistema, como vimos acima, e grava o primeiro arquivo RyukReadMe.html no TEMP .


FIG.

Figura 48: Publicando uma notificação de recompra Na figura a seguir, você pode ver como ele cria um arquivo, baixa o conteúdo e o grava:


Figura. Figura 49: Baixando e gravando o conteúdo de um arquivo

Para poder executar as mesmas ações em todos os dispositivos, ele usa
" icacls.exe ", como mostramos acima.


FIG. 50: Usando o icalcls.exe

E, finalmente, ele começa a criptografar arquivos, com exceção dos arquivos "* .exe", "* .dll", arquivos do sistema e outros locais especificados como uma lista branca criptografada. Para isso, ele usa importações: CryptAcquireContextW (onde o uso de AES e RSA é indicado), CryptDeriveKey, CryptGenKey , CryptDestroyKey , etc. Também está sendo feita uma tentativa de expandir seu efeito nos dispositivos de rede detectados usando WNetEnumResourceW e depois criptografá-los.


FIG. 51: Criptografia de arquivo do sistema

6. Importações e sinalizadores relacionados


A seguir, é apresentada uma tabela que lista as importações e sinalizadores mais relevantes usados ​​pela amostra:



7. COI




Referências
  • users \ Public \ run.sct
  • Menu Iniciar \ Programas \ Inicialização \ start.bat AppData \ Roaming \ Microsoft \ Windows \ Start
  • Menu \ ProgramasStartup \ start.bat




Relatório técnico do Ryuk ransomware compilado por especialistas em laboratório de antivírus da PandaLabs.

8. Referências


1. “A Rádio Everis e Prisa oferece um ciberataque grave que protege seus sistemas.” Https: // www. elconfidencial.com/tecnologia/2019-11-04/ everis-la-ser-ciberataque-ransomware-15_2312019 /, Publicada em 11/04/2019.

2. “Um vírus de origem russa ataca importantes empresas espanholas.” Https: //elpais.com/ tecnologia / 2019/11/04 / actualidad / 1572897654_ 251312.html, Publicada em 11/04/2019.

3. “Artigo do VB2019: a vingança de Shinigami: a longa cauda do malware Ryuk.” Https://securelist.com/ história do ano-2019-cidades-sob-ransomware-cerco / 95456 /, Publicada el 11 /

12/2019 4. “Grande caça ao Ryuk: outro ransomware baseado em lucro”. Https: // www. crowdstrike.com/blog/big-game-hunting-with-ryuk-another-lucrative-targeted-ransomware/, Publicada em 01/10/2019.

5. “Artigo do VB2019: a vingança de Shinigami: a longa cauda do malware Ryuk.” Https: // www. virusbulletin.com/virusbulletin/2019/10/ vb2019-paper-shinigamis-revenge-long-tail-r

All Articles