Voltar
Malware Intelligence
Tabela de conteúdo
  • Pesquisador: Anandeshwar Unnikrishnan
  • Editores: Suchita Katira e Hansika Saxena

Um ladrão de informações é um software malicioso (malware) que busca roubar dados privados de um dispositivo comprometido, incluindo senhas, cookies, informações de preenchimento automático de navegadores e informações de carteiras de criptomoedas.

Desde o início de 2019, o malware Raccoon foi oferecido como malware como serviço em vários fóruns de crimes cibernéticos. O grupo Raccoon Stealer, no entanto, foi dissolvido em março de 2022 como resultado da morte de um de seus desenvolvedores seniores na guerra Ucrânia-Rússia.

Em junho de 2022, uma nova versão do ladrão de guaxinins foi identificada na natureza pelos pesquisadores da Sekoia. Inicialmente, o malware foi chamado de”Quebrador de recordes”, mas foi posteriormente identificado como uma versão revivida do Raccoon Stealer. O desenvolvedor do Raccoon stealer (MaaS) é muito ativo em fóruns clandestinos, atualizando regularmente o malware e publicando sobre as novas versões de recursos no fórum.

Post describing the technical details of recent samples and modifications made in the Raccoon Stealer
Postagem descrevendo os detalhes técnicos de amostras recentes e modificações feitas no Raccoon Stealer

 

O malware

Amostras de guaxinim foram vistas na natureza em várias ocasiões. Enquanto alguns deles foram protegidos por protetores de código comerciais, como VMProtect e Themida, outros foram vistos embalados em pacotes comunitários populares, como Armadillo.

CloudSEKA telemetria da foi capaz de coletar uma amostra muito interessante do Raccoon que empregou técnicas de anti-análise e anti-depuração muito eficazes para frustrar as tentativas de análise. A amostra abordada neste relatório é única em termos da implantação do malware.

A implantação do malware

O empacotador usado para ofuscar o ladrão foi projetado especificamente para realizar as duas tarefas principais:

  • Identifique o sandbox e a depuração
  • Execute o engate para controlar a transferência para o ladrão

O processo de anti-análise e anti-depuração

  • Para detectar ambientes em área restrita, especialmente ambientes virtuais, o empacotador usa Contador de carimbo de data/hora de leitura (RDTSC), uma instrução de CPU muito conhecida usada para detectar VM calculando a diferença de tempo (delta) entre duas chamadas para o RDTSC. O RDTSC também foi observado, consultando informações do sistema, como a tabela de informações do firmware, para identificar VMs.
  • Para evitar a antidepuração, o malware inclui verificações de depuração em nível de processo e oculta o thread principal do depurador.

Ganchos maliciosos

O rastreamento da API do malware proporcionou uma maior compreensão da parte interna do empacotador, sem precisar passar muito tempo em um depurador. Um comportamento muito interessante encontrado no registro de rastreamento é mostrado abaixo.

  • Os segmentos no processo atual são enumerados usando as seguintes APIs:
    • kernel32! Criar um instantâneo do ToolHelp32
    • kernel32! Tópico 32 Próximo
  • As roscas são então abertas e suspensas.
  • Depois que os threads são suspensos, parte da memória é alocada e os dados são adicionados a ela.
  • Finalmente, as proteções de memória são alteradas de RWX para RX.
API trace present in the malware
Rastreamento de API presente no malware

 

A sequência de operações acima é executada duas vezes e, em seguida, o empacotador retoma as roscas suspensas.

Image of the packer resuming the suspended threads
Imagem do empacotador retomando as roscas suspensas

 

Os dados gravados pelo malware foram recuperados pelos pesquisadores do CloudSEK com a ajuda da instrumentação.

  • Conforme mostrado na imagem abaixo, foi feita uma chamada para kernel32! Memória do processo de gravação foi interceptado para ver os dados passados. É interessante notar que o Endereço LP parâmetro em ambas as chamadas aponta para ntdll.dll na memória do malware. Um total de cinco bytes dos dados foram gravados na região de memória do ntdll carregado.

Hooking the NT API Calls
Conectando as chamadas da API NT

 

  • Os dados gravados são um PULAR instrução (salto), seguida por um endereço específico que aponta para um dos segmentos no empacotador.

Updated function entry after hooking
Entrada de função atualizada após a conexão

 

A conexão desempenha um papel importante na fase de carregamento do ladrão, e o empacotador está conectando as duas APIs a seguir:

  • ntdll! Ingressão remota do DBGUI — O gancho Ingressão remota do DBGUI levará o fluxo de controle para sair. Essa é outra técnica anti-depuração na qual a API de destino é usada principalmente pelos depuradores do Windows para interromper o software. Portanto, o empacotador redireciona o fluxo, o que leva ao encerramento do malware.
  • ntdll! Memória virtual ZW Protect — Se isso não acontecer, o empacotador faz uma chamada para ntdll! Memória virtual ZW Protect e implanta o Raccoon Stealer v2 no sistema de destino.

Experimentando com os valores de retorno do kernel32! Memória do processo de gravação a chamada durante a análise ajudou a confirmar a conexão de ntdll! Memória virtual ZW Protect, que é uma etapa crucial no processo de infecção. Falha ao enganchar ntdll! Memória virtual ZW Protect faz com que o malware seja encerrado e o seguinte aviso apareça.

Warning popup triggered upon failure of hooking
Pop-up de aviso acionado após falha na conexão

 

Esse comportamento não é observado quando o malware não consegue se conectar. ntdll! Ingressão remota do DBGUI, pois o programa não é encerrado.

A execução do malware

Carregamento dinâmico de API

Depois que o Raccoon Stealer é executado, as APIs são carregadas dinamicamente na memória. Essas APIs são usadas posteriormente pelo malware para realizar atividades maliciosas na máquina comprometida.

Code responsible for runtime dynamic linking of DLLs
Código responsável pela vinculação dinâmica de DLLs em tempo de execução

 

Decodificação de strings

Depois de carregar as bibliotecas com sucesso, o ladrão decodifica todas as strings na memória. As versões anteriores do ladrão usavam a decodificação RC4 para criptografar as sequências.

RC4 decryption routine used in the old malware samples
Rotina de decodificação RC4 usada nas amostras antigas de malware

 

No entanto, a versão recente usa uma codificação personalizada baseada em XOR para criptografar as cadeias de caracteres.

Custom XOR encoding used in new malware samples
Codificação XOR personalizada usada em novas amostras de malware

 

Detecção do idioma russo

O ladrão chama o kernel32! Obtenha o nome local padrão para recuperar o idioma do sistema (nome do local) e, em seguida, compará-lo com a string “RU”. No caso de uma correspondência positiva, nenhuma lógica é implementada para execução, o que mostra que o malware ainda está em desenvolvimento. No futuro, podemos esperar que o ladrão se mate depois que uma partida for encontrada.

Mutex

Após a verificação do nome da localidade, o ladrão procura por qualquer amostra ativa de malware, ligando Kernel3.2. OpenMutexw. Se um processo ativo de malware for encontrado, a execução atual do malware será encerrada, caso contrário, um novo mutex será criado no sistema.

Code responsible for mutex creation
Código responsável pela criação de mutex

 

Leia também Análise técnica do Bumblebee Malware Loader

Verificação administrativa

Depois que o Mutex é criado, o Raccoon verifica os privilégios do processo do usuário seguindo as etapas abaixo:

  • AdvAPI 3.2. Processo aberto é chamado para obter um identificador para o token do processo.
  • AdvAPI 3.2. Obtenha informações sobre o token é chamado no identificador do token do processo adquirido passando TOKEN_USER como o valor para Classe de informações sobre tokens parâmetro, que retorna um SID do usuário estrutura.
  • A estrutura SID é convertida em uma string chamando Advapi 32! Converte SID em StringSidw.
  • A string SID é comparada com o valor “S-1-5-18”, o valor SID para Local/sistema ou membros do Administrador local grupo.
  • Se o processo do usuário for elevado, o valor 0 será retornado.
Administrator check performed by the stealer
Verificação do administrador realizada pelo ladrão

 

Enumeração de processos

Se o processo estiver elevado, os processos em execução no sistema serão enumerados conforme mostrado abaixo:

  • Kernel 32! Criar um instantâneo do ToolHelp32 é chamado passando o sinalizador TH32CS_SNAPPROCESS para incluir todos os processos em execução no sistema no instantâneo.
  • O Kernel 32! Processe 32 First e Kernel 32! Processo 32 Próximo As APIs são usadas para percorrer o instantâneo que contém as informações dos processos em execução no sistema.
Process enumeration done by the malware
Enumeração de processos feita pelo malware

 

É interessante notar que o resultado retornado (1/0) não é usado em nenhum lugar pelo Raccoon. A principal razão por trás disso pode ser a grande probabilidade de o malware ainda estar sendo desenvolvido ativamente, e algumas mudanças no código de futuras amostras do Raccoon devem ser antecipadas.

Também para ler Aviso da Intel sobre a ameaça de malware Raccoon Stealer

Rede C2

Os atacantes empregam um conjunto de ferramentas e procedimentos conhecidos como infraestrutura de comando e controle, geralmente abreviados como C2 ou C&C, para manter contato com os dispositivos comprometidos após a obtenção do acesso inicial. O ladrão Raccoon liga para casa pela primeira vez enviando uma string exclusiva para o C2. A string, para a comunicação, é criada com as seguintes informações:

  • GUID da máquina recuperado do seguinte local no registro:

Computador\ HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Criptografia

  • O nome de usuário, obtido por meio do Advapi 32! Obter nome de usuário W API.
  • O ID de configuração, que é decodificado usando a chave RC4 em algumas amostras e uma sequência alfanumérica exclusiva em outras.
Format of the victim profile sent to the C2
Formato do perfil da vítima enviado para o C2

 

The HTTP POST request and the victim identification data sent by Raccoon Stealer to the C2
A solicitação HTTP POST e os dados de identificação da vítima enviados pelo Raccoon Stealer para o C2

 

Configuração C2

O ladrão Raccoon usa as seguintes etiquetas identificadoras C2 para controlar o comportamento do ladrão.

IdentificadorDescriçãolibs_Biblioteca PE/DLL para baixarnoticias_Extensões do navegadorwalts_Roubo de carteiras criptográficassstmnfo_ Coleta informações do sistema e lista de aplicativos instaladosscrnsht_Faz uma captura de telatlgrm_Rouba dados do Telegram Desktopgrbr_Captador de senhasdscrd_Ladrão de Discordldr_Lança cargas úteis adicionais, como RATsfichaIdentificador exclusivo para rastrear a campanha
C2 configuration fetched by the malware
Configuração C2 obtida pelo malware

 

Buscando biblioteca

Depois que o ladrão obtém a configuração C2 do C2, ele começa a analisar a configuração, procurando a libs_ identificador para baixar os arquivos legítimos da biblioteca, como:

  • ns33.dll
  • msvcp140.dll
  • vcruntime140.dll
  • mozglue.dll
  • freeble.dll
  • softok3.dll
  • sqlite3.dll

Eles são baixados para o Usuário\ AppData\ LocalLow diretório e não são carregados na memória.

Legitimate DLLs downloaded by the malware
DLLs legítimas baixadas pelo malware

 

O malware carrega as DLLs necessárias na memória, durante o processo de roubo de informações, e resolve dinamicamente várias funções. As imagens abaixo mostram o carregamento dinâmico da API de sqlite.dll e ns33.dll, respectivamente.

Runtime dynamic loading of sqlite.dll
Carregamento dinâmico de tempo de execução do sqlite.dll

 

Runtime dynamic loading of ns33.dll
Carregamento dinâmico de tempo de execução do ns33.dll

Enumeração Sysinfo

Depois de buscar as bibliotecas, um perfil do host é criado e enviado para o C2 como um Sistema Info.txt arquivo.

System information sent to C2
Informações do sistema enviadas para C2

 

O ladrão executa o perfil do host somente se identificador sstmnfo_ está presente na configuração C2. As seguintes informações são enumeradas no perfil do host:

  • Informações de localidade, obtidas do sistema por meio do Kernel 32! Obtenha informações locais.
  • Informações de fuso horário, obtidas do sistema via Kernel 32! Obtenha informações sobre o fuso horário.
  • Nome do produto (OS), obtido do registro.
  • Arquitetura da vítima, identificada pela verificação da presença de SysWOW64 diretório.
  • Informações sobre o fornecedor e o modelo da CPU, obtidas pelo Instrução de montagem do CPUID.
  • Informações do sistema recuperadas do Kernel 32! Obtenha informações do sistema API.
  • Informações de memória, obtidas do sistema via Kernel 32! Status de memória global E.
  • Resolução da tela, obtida do sistema via Usuário 32! Obtenha métricas do sistema
  • Adaptadores de vídeo e monitores conectados ao sistema.
  • Aplicativos instalados via SSOFTWARE\\ Microsoft\\ Windows\\ Versão atual\\ Desinstalar.

Roubo de informações

Dados do navegador

O malware rouba informações salvas pelos navegadores da web no diretório AppData do usuário local. Os diretórios primários visados são “Dados do usuário” e Perfil .

O ladrão está interessado nos seguintes dados do navegador:

  • Biscoitos
  • Preenchimentos automáticos
  • Senhas armazenadas
  • Informações armazenadas do cartão de crédito

Como qualquer ladrão, o Raccoon realiza as seguintes operações para roubar os dados do navegador:

  • Ele recupera o arquivo do banco de dados SQL de destino armazenado pelo navegador. Alguns dos bancos de dados críticos do Chrome, visados pelo ladrão, estão listados abaixo.
Dados roubadosLocalização dos dados roubadosSenhasC:\Users\user\AppData\Local\Google\Chrome\User Data\ Default\ Dados de loginPreenchimentos automáticosC:\Users\user\AppData\Local\Google\Chrome\User Data\ Default\ Web DataCartões de créditoC:\Users\user\AppData\Local\Google\Chrome\User Data\ Default\ Web DataBiscoitosC:\Users\user\AppData\Local\Google\Chrome\User Data\ Default\ Network\ Cookies
  • O malware rouba a chave de decodificação, armazenada noEstado local arquivo do navegador, que é usado para proteger os dados armazenados em bancos de dados no Dados do usuário diretório, mencionado acima.
  • O malware então abre o banco de dados e descriptografa os dados.
  • Os dados roubados são então enviados de volta para o C2.

Comandos para roubar os dados do navegador

O baixado anteriormente sqlite.dll é carregado na memória para resolver os endereços das funções necessárias para consultar dados do banco de dados do navegador. As imagens a seguir contêm as várias consultas SQL empregadas pelo malware para roubar os dados do navegador Chrome.

SQL queries used by Raccoon to steal cookie data from Chrome browser’s cookie store
Consultas SQL usadas pelo Raccoon para roubar dados de cookies do armazenamento de cookies do navegador Chrome

 

SQL queries used by Raccoon to steal credit card information saved on the browser
Consultas SQL usadas pelo Raccoon para roubar informações de cartão de crédito salvas no navegador

 

SQL queries used by Raccoon to steal autofill data stored in the browser
Consultas SQL usadas pelo Raccoon para roubar dados de preenchimento automático armazenados no navegador

 

O baixado anteriormente ns33.dll é carregado na memória para recuperar os dados armazenados pelo Mozilla Firefox. O ladrão então passa a roubar os dados de cookies, login e histórico de formulários do navegador. O ffcookies.txtO nome do arquivo é usado para enviar dados roubados do Firefox para o servidor C2.

Mozilla Firefox cookies targeted by Raccoon
Cookies do Mozilla Firefox direcionados pelo Raccoon

 

SQL query issued by Raccoon on the cookie.sqlite file, to steal cookie data from Firefox
Consulta SQL emitida pelo Raccoon no arquivo cookie.sqlite, para roubar dados de cookies do Firefox

 

SQL query used by Raccoon to steal form history from Firefox
Consulta SQL usada pelo Raccoon para roubar o histórico de formulários do Firefox

Carteiras e extensões de navegador

A tabela abaixo contém a lista de carteiras e extensões da web alvo do malware Raccoon.

CarteirasExodus Atomic Jaxx Liberty Electron Cash Binance Coin Omi Electrum Ledger Guarda Monero Ron Indaedalus Blockstream Green MetawasabiExtensões da WebMetaxxDefi Waves Keeper Solflare Rabby Cyanocoin Base Auromina KHC Tezbox Coin 98 Temple Icon Exsollet Clover Polymesh Neoline Keplr Terrastation Liquality Saturn Wallet Guildwallet Phantom Link Brave Metamaskron em MewCX Tongo by BitKeep CosmoStation Gamestop Stargazerenkryptjyptjypt Carteira Axx Liberty Clover

Capturas de arquivos

O malware usa o identificador grbr_ para ativar a funcionalidade grabber e começa a pesquisar no sistema por arquivos como arquivos de senha, sementes de carteira, etc.

File grabbing C2 configuration in Raccoon
Configuração C2 de captura de arquivos no Raccoon

 

Dados do Telegram e do Discord

Raccoon rouba dados do Telegram do “Telegram Desktop”\ tdata diretório. Ele está particularmente interessado nos diretórios que contêm user_data, emoji, tdummy e dumps.

O ladrão também é capaz de roubar dados do Discord, como tokens, mas esse recurso não é ativado por padrão. O operador do malware precisa fornecer explicitamente um “dscrd_” identificador na configuração para ativar essa opção.

Captura de tela

Além de roubar informações, o Raccoon também pode fazer capturas de tela do sistema comprometido usando o “scrnsht_” identificador na configuração C2. Os detalhes do processo de captura de tela são explicados abaixo.

  • O Raccoon utiliza duas bibliotecas, a saber gdi32.dll e gdiplus.dll para capturar a tela da vítima. Essas bibliotecas são carregadas dinamicamente e os endereços da API são resolvidos.
Malware taking screen capture using gdi32.dll and gdiplus.dll
Malware fazendo captura de tela usando gdi32.dll e gdiplus.dll

 

Lista de APIs resolvidasGdiplus! GDIplus Inicialize o GDI Plus! GDIP Descarte a imagem GDIplus! GDIP Obtenha codificadores de imagem GDIPLUS! Obtenha codificadores de imagem do tamanho GDI Plus! GDIP Crie bitmap a partir do hBitmap GDIplus! GDIP Salve a imagem no arquivo GDI32! BitBLTGDI32! Crie um Bitmap GDI32 compatível! Crie um CGDI32 compatível! Exclua o objeto GDI32! Obtenha o objeto WGDI32! Selecione o objeto GDI32! Defina o modo Stretch BLT GDI 32! Tampão elástico
  • O processo realizado para captura de tela usando as bibliotecas acima não é simples. Isso requer técnicas abrangentes de processamento de imagens, o que está além do escopo deste relatório. Em poucas palavras, a imagem capturada é salva no disco em um jpeg formato. Inicialmente, o nome atribuído ao arquivo é aleatório, no entanto, quando é enviado para o C2, a imagem é transferida como — captura de tela.jpg. A imagem abaixo mostra a conversa do Raccoon com C2.
Screenshot being sent to the C2 endpoint
Captura de tela sendo enviada para o endpoint C2

 

Execução de carga útil adicional

O Raccoon stealer, como qualquer outro malware de sua classe, tem a capacidade de executar malwares adicionais fornecidos pelo usuário (como RATs) no sistema comprometido. De acordo com a análise de várias amostras do CloudSEK, esse recurso não está presente por padrão. Assim, quando o ladrão busca a configuração, o operador precisará habilitar explicitamente esse recurso fornecendo a ldr_ identificador com uma URL para buscar o executável de carga adicional junto com as informações do diretório, para instalá-lo/soltá-lo no sistema para execução posterior.

A imagem abaixo mostra o módulo responsável por esse recurso. Inicialmente, o módulo verifica a identificador ldr_ na configuração C2. Se nenhum Idr_ estiver presente, o fluxo retornará à sua função principal.

Checking the C2 configuration for additional payload execution option
Verificando a configuração C2 para obter uma opção adicional de execução de carga

 

Se o C2 contiver um identificador ldr_, o código a seguir é usado para executar o executável obtido. O shell32! Shell Execute W A API é chamada passando o arquivo e a operação 'open' como parâmetros.

Code responsible for additional payload execution via the ShellExecuteW API
Código responsável pela execução adicional da carga útil por meio da API ShellExecuteW

 

Limpando

Antes de sair do sistema, o ladrão exclui os arquivos DLL que foram carregados na memória durante a operação e encerra sua execução.

Indicadores de compromisso (IOCs)

Binário494ab44bb96537fc8a3e832e3cf032b0599501f96a682205bc46d9b7744d52abdd2db9bfa45002375af028ac00ca1b5e0c1db30a116c21cac2b4c75cb4ff9aecIPv4193,56,146,177

Referências

Nenhum item encontrado.

Blogs relacionados