Quem está nadando nas águas sul-coreanas? Conheça o golfinho de ScarCruft

Nó Fonte: 1764571

Os pesquisadores da ESET descobrem o Dolphin, um backdoor sofisticado que estende o arsenal do grupo ScarCruft APT

Os pesquisadores da ESET analisaram um backdoor não relatado anteriormente usado pelo grupo ScarCruft APT. O backdoor, que chamamos de Dolphin, tem uma ampla gama de recursos de espionagem, incluindo monitoramento de unidades e dispositivos portáteis e exfiltração de arquivos de interesse, keylogging e captura de tela e roubo de credenciais de navegadores. Sua funcionalidade é reservada para alvos selecionados, nos quais o backdoor é implantado após o comprometimento inicial usando malware menos avançado. Em linha com outras ferramentas ScarCruft, o Dolphin abusa dos serviços de armazenamento em nuvem – especificamente o Google Drive – para comunicação C&C.

Durante nossa investigação, vimos o desenvolvimento contínuo do backdoor e as tentativas dos autores do malware de evitar a detecção. Um recurso notável das versões anteriores do Dolphin que analisamos é a capacidade de modificar as configurações das contas do Google e do Gmail das vítimas para diminuir sua segurança, provavelmente para manter o acesso às caixas de entrada de e-mail das vítimas.

Nesta postagem do blog, fornecemos uma análise técnica do backdoor Dolphin e explicamos sua conexão com a atividade ScarCruft documentada anteriormente. Apresentaremos nossas descobertas sobre esta nova adição ao conjunto de ferramentas do ScarCruft no AVAR 2022 conferência.

Pontos-chave neste blogpost:

  • Os pesquisadores da ESET analisaram o Dolphin, um backdoor não relatado anteriormente usado pelo grupo ScarCruft APT.
  • Dolphin é implantado apenas em alvos selecionados; ele pesquisa as unidades de sistemas comprometidos em busca de arquivos interessantes e os exfiltra para o Google Drive.
  • O backdoor foi usado como a carga final de um ataque de vários estágios no início de 2021, envolvendo um ataque watering hole em um jornal online sul-coreano, uma exploração do Internet Explorer e outro backdoor ScarCruft, chamado BLUELIGHT.
  • Desde a descoberta inicial do Dolphin em abril de 2021, os pesquisadores da ESET observaram várias versões do backdoor, nas quais os agentes de ameaças melhoraram os recursos do backdoor e fizeram tentativas de evitar a detecção.
  • Um recurso notável das versões anteriores do Dolphin que analisamos é a capacidade de modificar as configurações das contas do Google e do Gmail das vítimas para diminuir sua segurança.

perfil ScarCruft

ScarCruft, também conhecido como APT37 ou Reaper, é um grupo de espionagem que opera desde pelo menos 2012. Ele se concentra principalmente na Coréia do Sul, mas outros países asiáticos também foram visados. A ScarCruft parece estar interessada principalmente em organizações governamentais e militares e em empresas de vários setores ligados aos interesses da Coreia do Norte.

Visão geral dos golfinhos

Em 2021, ScarCruft conduziu um ataque watering hole a um jornal online sul-coreano focado na Coreia do Norte. O ataque consistia em vários componentes, incluindo uma exploração do Internet Explorer e shellcode que levava a um backdoor chamado BLUELIGHT, relatado por Volexidade e Kaspersky.

Nesses relatórios, o backdoor BLUELIGHT foi descrito como a carga final do ataque. No entanto, ao analisar o ataque, descobrimos por meio da telemetria da ESET um segundo backdoor mais sofisticado, implantado em vítimas selecionadas via BLUELIGHT. Chamamos esse backdoor de Dolphin com base em um caminho PDB encontrado no executável.

Enquanto o backdoor BLUELIGHT realiza reconhecimento básico e avaliação da máquina comprometida após a exploração, o Dolphin é mais sofisticado e implantado manualmente apenas contra vítimas selecionadas. Ambos os backdoors são capazes de exfiltrar arquivos de um caminho especificado em um comando, mas o Dolphin também pesquisa ativamente unidades e exfiltra automaticamente arquivos com extensões de interesse do ScarCruft.

A Figura 1 fornece uma visão geral dos componentes de ataque que levam à execução do backdoor Dolphin.

Figura 1. Visão geral dos componentes de ataque que levam à execução do backdoor Dolphin

análise de golfinhos

A análise dos componentes do Dolphin e seus recursos é fornecida na seção a seguir.

A análise é baseada na primeira versão do backdoor que encontramos, 1.9 (baseada em uma string encontrada no código) com informações adicionais sobre mudanças em versões mais recentes. Uma descrição resumida das alterações de versão pode ser encontrada no evolução dos golfinhos seção.

instalador Dolphin

As seções a seguir descrevem os componentes do instalador e do carregador responsáveis ​​pela execução do backdoor Dolphin no cenário de ataque analisado.

Vale a pena notar que este instalador e o carregador implantado não são exclusivos do Dolphin e foram usados ​​anteriormente com outro malware ScarCruft.

O shellcode do instalador segue estes objetivos principais:

  • Baixe e implante um interpretador Python
  • Gerar e implantar uma cadeia de carregamento com sua carga útil
  • Garantir a persistência da cadeia de carga

O instalador baixa um arquivo CAB do OneDrive, contendo um interpretador Python 2.7 legítimo. O CAB é descompactado para % APPDATA%, e dependendo da arquitetura, o interpretador termina em um dos seguintes diretórios:

  • %dados do aplicativo%Python27(32)
  • %dados do aplicativo%Python27(64)

O instalador gera dois caminhos de arquivo para componentes da cadeia de carregamento, e , com o formato .

é selecionado aleatoriamente de

  • %DADOS DO PROGRAMA%
  • %PÚBLICO%
  • %APPDATA%Microsoft
  • %APPDATA%MicrosoftWindows
  • % LOCALAPPDATA%
  • %LOCALAPPDATA% Microsoft
  • %LOCALAPPDATA%MicrosoftWindows

e são selecionados aleatoriamente a partir de nomes de arquivos existentes (sem extensão) em %windir%inf*.inf e %windir%system32*.dll.

Para gerar a Etapa 1 do Loader, ele usa um modelo de script que é preenchido com nomes gerados aleatoriamente (variáveis, função). O modelo com o exemplo gerado é mostrado na Figura 2.

Figura 2. Modelo da Etapa 1 e exemplo gerado

O script é então escrito para .

A etapa 2 (incorporada no instalador) contendo o restante da cadeia de carregamento, incluindo a carga útil, é criptografada com uma chave XOR de um byte derivada da hora atual e gravada em .

Para persistir o início da cadeia de carregamento, o instalador define um valor de registro Run:

HKCUSoftwareMicrosoftWindowsCurrentVersionRun”%appdata%Python27({32|64})pythonw.exe” “” “”

A é selecionado aleatoriamente a partir de nomes de arquivos existentes correspondentes %WINDIR%inf*.inf, descartando o inf extensão.

Para iniciar a cadeia de carregamento após a instalação, ela cria uma tarefa agendada única.

Carregador Dolphin

O carregador Dolphin consiste em um script Python e shellcode.

A Etapa 1, o script Python, lê um arquivo especificado, descriptografa com XOR seu conteúdo e executa o shellcode resultante.

A etapa 2, shellcode, cria um processo de host (executável CLI aleatório de %WINDIR%System32*.exe), o XOR descriptografa o shellcode adicional carregado em si mesmo e o injeta no processo criado.

Etapa 3, outro shellcode, descriptografa com XOR um arquivo PE incorporado – o backdoor Dolphin – e o carrega e executa usando um carregador PE personalizado.

Porta dos fundos do golfinho

Dolphin é um backdoor que coleta informações e executa comandos emitidos por seus operadores. O backdoor é um executável normal do Windows, escrito em C++. Ele se comunica com o armazenamento em nuvem do Google Drive, que é usado como seu servidor C&C.

Nomeamos o backdoor Dolphin com base em um caminho PDB encontrado no executável:

D:DesenvolvimentoBACKDOORDolphinx64ReleaseDolphin.pdb

Persistência

O backdoor verifica periodicamente e cria sua própria persistência, certificando-se de que a Etapa 1 do carregador seja executada toda vez que o sistema for iniciado, por meio de um valor Run do registro, da mesma forma que no instalador:

HKCUSoftwareMicrosoftWindowsCurrentVersionRun”%appdata%Python27({32|64})pythonw.exe” “” “”

Empresa

As seguintes informações básicas sobre o computador e o backdoor são coletadas:

  • Configuração atual do backdoor
  • Nome de Utilizador
  • nome do computador
  • Endereço IP local e externo
  • Lista de produtos de segurança instalados
  • Tamanho e uso da RAM
  • Resultado da verificação do depurador e outras ferramentas de inspeção (como o Wireshark)
  • Versão do sistema operacional
  • Hora atual
  • Versão do malware

O Dolphin baixa comandos, emitidos por seus operadores, do armazenamento do Google Drive e os executa. Após a execução, a saída dos comandos é carregada. A maioria dos recursos do Dolphin é controlada por meio de comandos.

Os recursos mais relevantes são descritos abaixo.

Exfiltração de arquivo

Por padrão, o Dolphin pesquisa todas as unidades não fixas (USBs), cria listas de diretórios e exfiltra arquivos por extensão. Essa busca pode ser estendida para drives fixos (HDDs), via comandos dedicados.

As seguintes extensões de arquivo de interesse, específicas para mídia, documentos, e-mails e certificados, são especificadas na configuração padrão:

jpg, doc, xls, ppt, hwp, url, csv, pdf, show, celular, eml, odt, rtf, nxl, amr, 3gp, m4a, txt, msg, chave, der, cer, docx, xlsx, pptx, pfx, mp3

Além dessa busca automática, arquivos específicos podem ser exfiltrados.

Nas versões mais recentes, a pesquisa padrão foi estendida para unidades fixas. O comando para obter arquivos específicos foi aprimorado, armazenando-o em cache/armazenando-o na configuração até a conclusão.

Dispositivos portáteis

Entre as unidades comuns, o Dolphin também pesquisa dispositivos portáteis, como smartphones, usando a API Windows Portable Device (WPD). Ele cria listagens de diretórios e exfiltra arquivos. Essa funcionalidade parecia estar em desenvolvimento na primeira versão que encontramos, por vários motivos:

  • Baseando-se em um caminho codificado com um nome de usuário que provavelmente não existe no computador da vítima
  • Inicialização de variável ausente - algumas variáveis ​​são consideradas inicializadas com zero ou desreferenciadas como ponteiros sem inicialização
  • Filtro de extensão ausente

O código é fortemente baseado na API COM de Dispositivos Portáteis da Microsoft amostra de código.

Além da pesquisa automática, os operadores podem especificar arquivos individuais a serem extraídos de dispositivos portáteis.

Nas versões mais recentes, esse recurso foi finalizado e aprimorado com a adição de filtragem de extensão. Por motivos desconhecidos, o comando para recuperar arquivos específicos de dispositivos portáteis foi removido.

Keylogging e capturas de tela

O Dolphin registra as teclas digitadas para janelas com títulos contendo substrings especificadas em sua configuração. Os padrões são cromo e explorar internet (sic). Isso é feito através do GetAsyncKeyState API, com as teclas digitadas sendo registradas junto com o nome da janela e a hora atual. As capturas de tela também são feitas em um intervalo configurável; o padrão é uma vez a cada 30 segundos.

Capturas de tela e keylogging são ativados por padrão e podem ser alternados por meio de um comando.

código shell

Dolphin pode receber shellcode para execução. O shellcode é armazenado no registro, sob uma das seguintes chaves:

  • HKCUSoftwareMicrosoftWindowsCurrentVersionThemesClassic
  • HKCUSoftwareMicrosoftOneDriveUpdate
  • HKCUSoftwareMicrosoftWindowsVersão AtualConfigurações da InternetHttpsSoftwareMicrosoftInternet ExplorerZona (duas subchaves como uma, provavelmente um erro de codificação)

Ele pode ser executado localmente ou em um processo separado especificado que é criado e injetado.

Nas versões mais recentes, o shellcode é armazenado em arquivos ao invés do registro, e o shellcode armazenado é carregado e executado na inicialização do Dolphin, o que não acontecia na versão 1.9 (a versão original que analisamos).

Comandos de shell

Dolphin pode executar comandos shell; isso é feito através do Popen API e sua saída é recuperada.

Roubar credenciais

O Dolphin pode recuperar credenciais de navegadores na forma de senhas e cookies salvos. Os seguintes navegadores são suportados:

  • Chrome
  • borda
  • Internet Explorer

Na versão 2.2, esse recurso foi removido, presumivelmente para evitar a detecção. Posteriormente, foi restaurado na versão 3.0, mas de uma forma diferente. Agora é recebido dinamicamente do C&C na forma de shellcode.

Conta do Google

Outro dos comandos do Dolphin modifica as configurações da conta do Google atualmente conectada, diminuindo sua segurança em relação às configurações padrão. Ele rouba o cookie existente da conta conectada do navegador e cria solicitações que modificam as configurações.

Primeiro, permite o acesso ao Gmail por meio do protocolo IMAP enviando uma solicitação HTTP POST para:

  • https://mail.google.com/mail/u/0/?ik=&at=&view=up&act=prefs

Em seguida, ele permite “acesso ao aplicativo menos seguro” enviando uma solicitação RPC não documentada por meio de um POST HTTP para:

  • https://myaccount.google.com/_/AccountSettingsUi/data/batchexecute

Essas modificações são chamadas de “acesso de trovão” no backdoor, provavelmente sendo uma referência ao cliente de e-mail Thunderbird. Acessar as caixas de entrada de suas vítimas com um cliente de terceiros via IMAP provavelmente ajuda os operadores do ScarCruft a manter o acesso aos e-mails das vítimas após o roubo de credenciais, o que pode não ser suficiente por conta própria, devido à detecção do Google de tentativas de login suspeitas.

Esse recurso foi encontrado nas versões 1.9 e 2.0 do backdoor; não está presente nas versões 2.2 ou 3.0.

Preparação de dados

O Dolphin exfiltra dados para o armazenamento do Google Drive, organizando os dados em arquivos ZIP criptografados antes do upload. O backdoor também mantém uma lista de arquivos na forma de hashes MD5, a fim de evitar o upload do mesmo arquivo várias vezes. Esta lista pode ser redefinida por meio de um comando dedicado.

Configuração

O backdoor contém uma configuração padrão inicial que é mantida na primeira execução e carregada nas execuções subsequentes. Está armazenado no arquivo %ProgramData%.inf, Onde é selecionado aleatoriamente a partir de nomes de arquivos existentes correspondentes %windir%inf*.inf. O conteúdo é criptografado usando AES CBC com chaves aleatórias de 16 bytes e IVs, que são armazenados no início do arquivo. A configuração usa o formato JSON, com chaves do tipo hash. Um exemplo de configuração descriptografada é mostrado na Figura 3.

Figura 3. Configuração da porta traseira do Dolphin

A configuração pode ser modificada através de comandos. Contém, entre outros, o seguinte:

  • chaves de criptografia
  • Credenciais para acesso à API do Google Drive
  • Títulos de janela para keylog
  • Lista de extensões de arquivo para exfiltrar

evolução dos golfinhos

Desde a descoberta inicial do Dolphin em abril de 2021, observamos várias versões do backdoor, nas quais os agentes de ameaças melhoraram os recursos do backdoor e fizeram tentativas de evitar a detecção. A Figura 4 resume as versões vistas; uma descrição mais detalhada das mudanças de versão é fornecida abaixo.

Figura 4. Linha do tempo da evolução dos golfinhos

Novembro de 2021 – versão 2.0

A versão 2.0 introduziu as seguintes alterações na versão encontrada em abril de 2021:

  • Resolução dinâmica de APIs suspeitas em vez de importações estáticas (por exemplo GetAsyncKeyState) adicionado
  • Capacidade de shellcode finalizada e aprimorada
    • Shellcode persistente armazenado em arquivos em vez de registro
    • Shellcode persistente carregado e executado na inicialização do Dolphin (anteriormente ausente)
  • Capacidade de exfiltração de arquivo de dispositivo portátil finalizada e aprimorada
    • Exfiltração por extensões adicionadas
    • Reconhecimento de memória interna e cartões SD (a partir do ID do dispositivo) adicionado
    • Comando para obter arquivos de dispositivos portáteis efetivamente um NOP
  • Detecção de dispositivo/drive e exfiltração de arquivo aprimorada
    • O Dolphin agora cria listas de diretórios incondicionalmente e exfiltra arquivos por extensão a cada 30 minutos para todas as unidades e dispositivos (unidades fixas, unidades removíveis, dispositivos portáteis). Anteriormente, era apenas para unidades removíveis; unidades fixas foram desativadas por padrão e o código usado para acessar dispositivos portáteis estava com erros e quebrado.

Dezembro de 2021 – versão 2.2

As alterações introduzidas na versão 2.2 focaram principalmente na evasão de detecção. O recurso de roubo de credenciais e os comandos relacionados a ele – o roubo de credenciais e os comandos da conta do Google – foram removidos. A maioria das strings nesta versão são codificadas em base64.

Janeiro de 2022 - versão 3.0

Na versão 3.0, o código foi reorganizado e as classes renomeadas, com os recursos permanecendo inalterados. As strings codificadas em base64 eram texto simples novamente nesta versão. Observamos as seguintes alterações adicionais:

  • Comando para roubar credenciais restauradas de forma diferente; ele agora executa shellcode do C&C
  • Comando para obter arquivos de dispositivos portáteis completamente removidos
  • O comando para obter arquivos das unidades agora é armazenado em cache/armazenado na configuração até a conclusão. Se interrompido (por exemplo, pelo desligamento do computador), isso é feito na próxima execução. Isso também é útil no caso de unidades removíveis que podem não estar conectadas quando o comando é emitido.
  • Verificação de conexão com a Internet adicionada (https://www.microsoft.com); nenhum código malicioso é executado se estiver offline

As diferenças entre as versões 2.2 e 3.0, especialmente a discrepância na codificação de strings, sugerem a possibilidade de que as versões estivessem sendo desenvolvidas em paralelo por pessoas diferentes.

Conclusão

O Dolphin é outra adição ao extenso arsenal de backdoors da ScarCruft que abusam dos serviços de armazenamento em nuvem. Depois de implantado em alvos selecionados, ele pesquisa as unidades dos sistemas comprometidos em busca de arquivos interessantes e os transfere para o Google Drive. Um recurso incomum encontrado em versões anteriores do backdoor é a capacidade de modificar as configurações das contas do Google e do Gmail das vítimas para diminuir sua segurança, presumivelmente para manter o acesso à conta para os agentes da ameaça. Durante nossa análise de várias versões do backdoor Dolphin, vimos um desenvolvimento contínuo e tentativas de evitar a detecção.

Para quaisquer dúvidas sobre nossa pesquisa publicada no WeLiveSecurity, entre em contato conosco em ameaçaintel@eset.com.

A ESET Research também oferece relatórios de inteligência APT privados e feeds de dados. Para qualquer dúvida sobre este serviço, visite o Inteligência de ameaças ESET Disputas de Comerciais.

IoCs

SHA-1 Nome do arquivo nome de detecção ESET Descrição
F9F6C0184CEE9C1E4E15C2A73E56D7B927EA685B N/D Win64/Agente.MS Dolphin backdoor versão 1.9 (x64)
5B70453AB58824A65ED0B6175C903AA022A87D6A N/D Win32/Spy.Agent.QET Dolphin backdoor versão 2.0 (x86)
21CA0287EC5EAEE8FB2F5D0542E378267D6CA0A6 N/D Win64/Agente.MS Dolphin backdoor versão 2.0 (x64)
D9A369E328EA4F1B8304B6E11B50275F798E9D6B N/D Win32/Agente.UYO Dolphin backdoor versão 3.0 (x86)
2C6CC71B7E7E4B28C2C176B504BC5BDB687C4D41 N/D Win64/Agente.MS Dolphin backdoor versão 3.0 (x64)

Técnicas MITER ATT e CK

Esta tabela foi construída usando versão 12 da estrutura MITER ATT & CK.

Tática ID Nome Descrição
Acesso Inicial T1189 Compromisso de passagem ScarCruft usa ataques watering hole para comprometer as vítimas.
Execução T1059.006 Comando e interpretador de scripts: Python O carregador Dolphin usa um script Python.
T1059.007 Comando e interpretador de scripts: JavaScript ScarCruft usou JavaScript malicioso para um ataque watering hole.
T1203 Exploração para execução do cliente O ScarCruft explora o CVE-2020-1380 para comprometer as vítimas.
T1106 API nativa Dolphin usa funções de API do Windows para executar arquivos e injetar processos.
Persistência T1053.005 Tarefa/Trabalho Agendado: Tarefa Agendada O Dolphin usa uma tarefa agendada temporária para iniciar após a instalação.
T1547.001 Execução de inicialização automática de inicialização ou logon: chaves de execução do registro/pasta de inicialização Dolphin usa chaves Run para persistência de seu carregador.
Evasão de Defesa T1055.002 Injeção de Processo: Injeção Executável Portátil Dolphin pode injetar em outros processos.
T1027 Arquivos ou informações ofuscados Dolphin tem componentes criptografados.
Acesso de credencial T1555.003 Credenciais de armazenamentos de senhas: Credenciais de navegadores da Web Dolphin pode obter senhas salvas de navegadores.
T1539 Roubar Cookie de Sessão Web Dolphin pode obter cookies de navegadores.
Discovery T1010 Descoberta de janela de aplicativo Dolphin captura o título da janela ativa.
T1083 Descoberta de arquivos e diretórios O Dolphin pode obter listas de arquivos e diretórios.
T1518.001 Descoberta de Software: Descoberta de Software de Segurança O Dolphin obtém uma lista de software de segurança instalado.
T1082 Descoberta de informações do sistema O Dolphin obtém várias informações do sistema, incluindo a versão do sistema operacional, o nome do computador e o tamanho da RAM.
T1016 Descoberta de configuração de rede do sistema O Dolphin obtém o endereço IP local e externo do dispositivo.
T1016.001 Descoberta de configuração de rede do sistema: descoberta de conexão com a Internet Dolphin verifica a conectividade com a Internet.
T1033 Proprietário do sistema/descoberta de usuário Dolphin obtém o nome de usuário da vítima.
T1124 Descoberta de hora do sistema Dolphin obtém a hora atual da vítima.
Coleção T1056.001 Captura de entrada: Keylogging O Dolphin pode registrar as teclas digitadas.
T1560.002 Arquivar dados coletados: arquivar via biblioteca Usando a biblioteca Zipper, o Dolphin compacta e criptografa os dados coletados antes da exfiltração.
T1119 Recolha Automática O Dolphin coleta periodicamente arquivos com certas extensões das unidades.
T1005 Dados do sistema local Dolphin pode coletar arquivos de unidades locais.
T1025 Dados da mídia removível Dolphin pode coletar arquivos de unidades removíveis.
T1074.001 Dados preparados: preparação de dados locais Os estágios do Dolphin coletaram dados em um diretório antes da exfiltração.
T1113 Screen Capture Dolphin pode capturar screenshots.
Comando e controle T1071.001 Protocolo de camada de aplicativo: protocolos da Web Dolphin usa HTTPS para se comunicar com o Google Drive.
T1102.002 Serviço Web: Comunicação Bidirecional O Dolphin se comunica com o Google Drive para baixar comandos e extrair dados.
exfiltration T1020 Exfiltração Automatizada O Dolphin exfiltra periodicamente os dados coletados.
T1567.002 Exfiltração sobre serviço da Web: exfiltração para armazenamento em nuvem Dolphin extrai dados para o Google Drive.

Carimbo de hora:

Mais de Nós Vivemos Segurança