WinorDLL64: Um backdoor do vasto arsenal do Lazarus?

WinorDLL64: Um backdoor do vasto arsenal do Lazarus?

Nó Fonte: 1975596

A região de destino e a sobreposição de comportamento e código sugerem que a ferramenta é usada pelo infame grupo APT alinhado à Coreia do Norte

Pesquisadores da ESET descobriram uma das cargas úteis do Downloader Wslink que descobrimos em 2021. Chamamos essa carga útil de WinorDLL64 com base em seu nome de arquivo WinorDLL64.dll. Wslink, que tinha o nome de arquivo WinorLoaderDLL64.dll, é um carregador para binários do Windows que, ao contrário de outros carregadores, é executado como um servidor e executa os módulos recebidos na memória. Como o texto sugere, um carregador serve como uma ferramenta para carregar uma carga, ou o malware real, no sistema já comprometido. O vetor de comprometimento Wslink inicial não foi identificado.

A carga inicialmente desconhecida do Wslink foi carregada no VirusTotal da Coréia do Sul logo após a publicação de nosso blogpost e atingiu uma de nossas regras YARA com base no nome exclusivo do Wslink WinorDLL64GenericName. Em relação ao Wslink, a telemetria da ESET teve apenas algumas detecções – na Europa Central, América do Norte e Oriente Médio.

A WinorDLL64GenericName A carga útil serve como um backdoor que, principalmente, adquire informações extensas do sistema, fornece meios para manipulação de arquivos, como exfiltração, substituição e remoção de arquivos e executa comandos adicionais. Curiosamente, ele se comunica por meio de uma conexão já estabelecida pelo carregador Wslink.

Em 2021, não encontramos nenhum dado que sugerisse que o Wslink é uma ferramenta de um agente de ameaças conhecido. No entanto, após uma extensa análise da carga útil, atribuímos WinorDLL64GenericName ao grupo Lazarus APT com baixa confiança com base na região de destino e uma sobreposição em comportamento e código com amostras conhecidas do Lazarus.

Ativo desde pelo menos 2009, esse infame grupo alinhado à Coreia do Norte é responsável por incidentes de alto nível, como o Corte da Sony Pictures Entertainment e dezenas de milhões de dólares roubos cibernéticos em 2016, WannaCryptor (também conhecido como WannaCry) em 2017 e um longo histórico de ataques disruptivos contra Infraestrutura pública e crítica sul-coreana desde pelo menos 2011. O US-CERT e o FBI chamam esse grupo de COBRA OCULTA.

Com base em nosso conhecimento extenso das atividades e operações desse grupo, acreditamos que o Lazarus é composto por uma grande equipe sistematicamente organizada, bem preparada e composta por vários subgrupos que utilizam um grande conjunto de ferramentas. No ano passado, nós descobriu uma ferramenta Lazarus que aproveitou o CVE-2021-21551 vulnerabilidade para atingir um funcionário de uma empresa aeroespacial na Holanda e um jornalista político na Bélgica. Foi o primeiro abuso registrado da vulnerabilidade; em combinação, a ferramenta e a vulnerabilidade levaram ao bloqueio do monitoramento de todas as soluções de segurança nas máquinas comprometidas. Também fornecemos uma descrição extensa do estrutura da máquina virtual usado em amostras de Wslink.

Este blogpost explica a atribuição do WinorDLL64 ao Lazarus e fornece uma análise da carga útil.

Links para Lázaro

Descobrimos sobreposições tanto no comportamento quanto no código com amostras do Lazarus de Operação GhostSecret e os votos de Implante de Bankshot descrito pela McAfee. A descrição dos implantes nos artigos GhostSecret e Bankshot contém sobreposições na funcionalidade com WinorDLL64 e encontramos algumas sobreposições de código nas amostras. Nesta postagem do blog, usaremos apenas o FE887FCAB66D7D7F79F05E0266C0649F0114BA7C amostra do GhostSecret para comparação com WinorDLL64 (1BA443FDE984CEE85EBD4D4FA7EB1263A6F1257F), a menos que especificado.

Os detalhes a seguir resumem os fatos de suporte para nossa atribuição de baixa confiança a Lazarus:

1. Vitimologia

  • Colegas pesquisadores do AhnLab confirmaram vítimas sul-coreanas de Wslink em sua telemetria, o que é um indicador relevante considerando os alvos tradicionais do Lazarus e que observamos apenas alguns acertos.

Figura 1. Vítima sul-coreana relatada, onde mstoned7 é o pesquisador da Ahnlab

2. Malware

  • A amostra mais recente do GhostSecret relatada pela McAfee (FE887FCAB66D7D7F79F05E0266C0649F0114BA7C) é de fevereiro de 2018; vimos a primeira amostra do Wslink no final de 2018 e outros pesquisadores relataram acessos em agosto de 2018, que divulgaram após nossa publicação. Portanto, essas amostras foram localizadas com um período de tempo relativamente curto.
  • A cabeçalhos enriquecidos PE indicam que o mesmo ambiente de desenvolvimento e projetos de tamanho semelhante foram usados ​​em várias outras amostras conhecidas do Lazarus (por exemplo, 70DE783E5D48C6FBB576BC494BAF0634BC304FD6; 8EC9219303953396E1CB7105CDB18ED6C568E962). Encontramos essa sobreposição usando as seguintes regras que cobrem apenas essas amostras Wslink e Lazarus, que é um indicador com baixo peso. Nós os testamos em Caça retro do VirusTotal e nosso corpus de arquivo interno.

rich_signature.length == 80 e
pe.rich_signature.toolid(175, 30319) == 7 e
pe.rich_signature.toolid(155, 30319) == 1 e
pe.rich_signature.toolid(158, 30319) == 10 e
pe.rich_signature.toolid(170, 30319) >= 90 e
pe.rich_signature.toolid(170, 30319) <= 108

Essa regra pode ser traduzida para a seguinte notação que é mais legível e usada pelo VirusTotal, onde é possível ver a versão do produto e o ID da compilação (VS2010 compilação 30319), número e tipo de arquivos de origem/objeto usados ​​([LTCGC++] onde LTCG significa Link Time Code Generation, [ASM], [C]), e número de exportações ([EXP]) na regra:

[LTCG C++] VS2010 compilação 30319 contagem = 7
[EXP] VS2010 compilação 30319 contagem = 1
[ASM] VS2010 compilação 30319 contagem = 10
[ C ] VS2010 build 30319 conta em [ 90 .. 108 ]

  • O artigo do GhostSecret descreveu “um componente exclusivo de coleta de dados e instalação de implantes que escuta na porta 443 para conexões de servidor de controle de entrada” que também é executado como um serviço. Esta é uma descrição precisa do comportamento do downloader Wslink, além do número da porta, que pode variar com base na configuração. Resumindo, mesmo que a implementação seja diferente, ambos servem ao mesmo propósito.
  • O loader é virtualizado pelo Code Virtualizer da Oreans, que é um protetor comercial que é usado freqüentemente por Lázaro.
  • O carregador usa o Módulo de memória biblioteca para carregar módulos diretamente da memória. A biblioteca não é comumente usada por malware, mas é bastante popular entre grupos alinhados à Coreia do Norte, como Lazarus e Kimsuky.
  • Sobreposição no código entre WinorDLL64 e GhostSecret que encontramos durante nossa análise. Os resultados e a significância na atribuição estão listados na Tabela 1.

Tabela 1. Semelhanças entre WinorDLL64 e GhostSecret e sua importância na atribuição de ambos ao mesmo ator de ameaça

Outras semelhanças entre WinorDLL64 e GhostSecret Impacto
Sobreposição de código no código responsável por obter a arquitetura do processador Baixo
Sobreposição de código na manipulação do diretório atual Baixo
Sobreposição de código na obtenção da lista de processos Baixo
Sobreposição de código no envio de arquivos Baixo
Sobreposição de comportamento em processos de listagem Baixo
Sobreposição de comportamento na manipulação do diretório atual Baixo
Sobreposição de comportamento na listagem de arquivos e diretórios Baixo
Sobreposição de comportamento na listagem de volumes Baixo
Sobreposição de comportamento na leitura/gravação de arquivos Baixo
Sobreposição de comportamento na criação de processos Baixo
Considerável sobreposição de comportamento na remoção segura de arquivos Baixo
Considerável sobreposição de comportamento no encerramento de processos Baixo
Considerável sobreposição de comportamento na coleta de informações do sistema Baixo

A sobreposição de código na funcionalidade de envio de arquivo é destacada na Figura 2 e na Figura 3.

Figura 2. GhostSecret enviando um arquivo

Figura 3. Wslink enviando um arquivo

Análise técnica

O WinorDLL64 serve como um backdoor que, principalmente, adquire informações extensas do sistema, fornece meios para manipulação de arquivos e executa comandos adicionais. Curiosamente, ele se comunica por uma conexão TCP que já foi estabelecida por seu carregador e usa algumas das funções do carregador.

Figura 4. Visualização da comunicação do Wslink

O backdoor é uma DLL com uma única exportação sem nome que aceita um parâmetro – uma estrutura de comunicação que já foi descrita em nosso postagem anterior do blog. A estrutura contém um contexto TLS – soquete, chave, IV – e retornos de chamada para enviar e receber mensagens criptografadas com AES-CBC de 256 bits que permitem que o WinorDLL64 troque dados com segurança com a operadora em uma conexão já estabelecida.

Os seguintes fatos nos levam a acreditar com alta confiança que a biblioteca realmente faz parte do Wslink:

  • A estrutura única é usada em todos os lugares da maneira esperada, por exemplo, o contexto TLS e outros parâmetros significativos são fornecidos na ordem antecipada para os retornos de chamada corretos.
  • O nome da DLL é WinorDLL64.dll e o nome de Wslink era WinorLoaderDLL64.dll.

WinorDLL64 aceita vários comandos. A Figura 5 exibe o loop que recebe e manipula comandos. Cada comando está vinculado a um ID exclusivo e aceita uma configuração que contém parâmetros adicionais.

Figura 5. A parte principal do loop de recebimento de comandos do backdoor

A lista de comandos, com nossos rótulos, está na Figura 6.

Figura 6. A lista de comandos

A Tabela 2 contém um resumo dos comandos WinorDLL64, onde as categorias modificadas e antigas referem-se ao relacionamento com a funcionalidade do GhostSecret documentada anteriormente. Destacamos apenas mudanças significativas na categoria modificada.

Tabela 2. Visão geral dos comandos backdoor

Categoria Código do comando Funcionalidade Descrição
Novo 0x03 Executar um comando do PowerShell WinorDLL64 instrui o interpretador do PowerShell a executar sem restrições e a ler comandos da entrada padrão. Depois disso, o backdoor passa o comando especificado para o interpretador e envia a saída para o operador.
0x09 Compactar e baixar um diretório WinorDLL64 itera recursivamente em um diretório especificado. O conteúdo de cada arquivo e diretório é compactado separadamente e gravado em um arquivo temporário que é posteriormente enviado ao operador e removido com segurança.
0x0D Desconectar uma sessão Desconecta um usuário conectado especificado da sessão de Serviços de Área de Trabalho Remota do usuário. O comando também pode executar diferentes funcionalidades com base no parâmetro.
0x0D Listar sessões Adquire vários detalhes sobre todas as sessões no dispositivo da vítima e os envia ao operador. O comando também pode executar diferentes funcionalidades com base no parâmetro.
0x0E Meça o tempo de conexão Usa a API do Windows Gettickcount para medir o tempo necessário para se conectar a um host especificado.
Modificado 0x01 Obter informações do sistema Adquire detalhes abrangentes sobre o sistema da vítima e os envia ao operador.
0x0A Remova arquivos com segurança Sobrescreve os arquivos especificados com um bloco de dados aleatórios, renomeia cada arquivo para um nome aleatório e, finalmente, os remove com segurança um por um.
0x0C Matar processos Encerra todos os processos cujos nomes correspondem a um padrão fornecido e/ou com um PID específico.
Velho 0x02/0x0B Crie um processo Cria um processo como o usuário atual ou especificado e, opcionalmente, envia sua saída para o operador.
0x05 Definir/Obter diretório atual Tenta definir e subsequentemente adquirir o caminho do diretório de trabalho atual.
0x06 Listar volumes Itera sobre as unidades de C: a Z: e adquire o tipo de unidade e o nome do volume. O comando também pode executar diferentes funcionalidades com base no parâmetro.
0x06 Listar arquivos em um diretório Itera sobre arquivos no diretório especificado e adquire informações como nomes, atributos, etc. O comando também pode executar diferentes funcionalidades com base no parâmetro.
0x07 Gravar em um arquivo Faz o download e anexa a quantidade declarada de dados ao arquivo especificado.
0x08 Ler de um arquivo O arquivo especificado é lido e enviado ao operador.
0x0C Listar processos Obtém detalhes sobre todos os processos em execução no dispositivo da vítima e, adicionalmente, envia o ID do processo atual.

Conclusão

A carga útil do Wslink é dedicada a fornecer meios para manipulação de arquivos, execução de código adicional e obtenção de informações abrangentes sobre o sistema subjacente que possivelmente podem ser aproveitadas posteriormente para movimentação lateral, devido ao interesse específico em sessões de rede. O carregador Wslink escuta em uma porta especificada na configuração e pode atender clientes de conexão adicionais e até mesmo carregar várias cargas úteis.

O WinorDLL64 contém uma sobreposição no ambiente de desenvolvimento, comportamento e código com vários exemplos do Lazarus, o que indica que pode ser uma ferramenta do vasto arsenal desse grupo APT alinhado à Coreia do Norte.

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

IoCs

SHA-1 nome de detecção ESET Descrição
1BA443FDE984CEE85EBD4D4FA7EB1263A6F1257F Win64/Wslink.A Despejo de memória da carga Wslink descoberta WinorDll64.

Técnicas MITER ATT e CK

Esta tabela foi construída usando versão 12 da estrutura ATT&CK. Não mencionamos as técnicas do carregador novamente, apenas a carga útil.

Tática ID Nome Descrição
Desenvolvimento de Recursos T1587.001 Desenvolver recursos: malware WinorDLL64 é uma ferramenta personalizada.
Execução T1059.001 Interpretador de comandos e scripts: PowerShell WinorDLL64 pode executar comandos arbitrários do PowerShell.
T1106 API nativa WinorDLL64 pode executar outros processos usando o Criar Processo W e CreateProcessAsUserW APIs.
Evasão de Defesa T1134.002 Manipulação de token de acesso: criar processo com token WinorDLL64 pode chamar APIs WTSQueryUserToken e CreateProcessAsUserW para criar um processo sob um usuário representado.
T1070.004 Remoção do Indicador: Exclusão de Arquivo WinorDLL64 pode remover com segurança arquivos arbitrários.
Discovery T1087.001 Descoberta de conta: conta local WinorDLL64 pode enumerar sessões e listar usuários associados e nomes de clientes, entre outros detalhes.
T1087.002 Descoberta de conta: conta de domínio WinorDLL64 pode enumerar sessões e listar nomes de domínio associados – entre outros detalhes.
T1083 Descoberta de arquivos e diretórios WinorDLL64 pode obter listagens de arquivos e diretórios.
T1135 Descoberta de compartilhamento de rede WinorDLL64 pode descobrir unidades de rede compartilhadas.
T1057 Descoberta de Processo WinorDLL64 pode coletar informações sobre processos em execução.
T1012 Registro de consulta WinorDLL64 pode consultar o registro do Windows para coletar informações do sistema.
T1082 Descoberta de informações do sistema O WinorDLL64 pode obter informações como nome do computador, sistema operacional e versão mais recente do service pack, arquitetura do processador, nome do processador e quantidade de espaço em unidades fixas.
T1614 Descoberta de localização do sistema WinorDLL64 pode obter o nome do país padrão da vítima usando o GetLocaleInfoW API.
T1614.001 Descoberta de localização do sistema: Descoberta de idioma do sistema WinorDLL64 pode obter o idioma padrão da vítima usando o GetLocaleInfoW API.
T1016 Descoberta de configuração de rede do sistema WinorDLL64 pode enumerar informações do adaptador de rede.
T1049 Descoberta de Conexões de Rede do Sistema WinorDLL64 pode coletar uma lista de portas de escuta.
T1033 Proprietário do sistema/descoberta de usuário O WinorDLL64 pode enumerar sessões e listar nomes de usuários, domínios e clientes associados – entre outros detalhes.
Coleção T1560.002 Arquivar dados coletados: arquivar via biblioteca WinorDLL64 pode compactar e exfiltrar diretórios usando o rápido biblioteca.
T1005 Dados do sistema local O WinorDLL64 pode coletar dados no dispositivo da vítima.
Impacto T1531 Remoção de acesso à conta WinorDLL64 pode desconectar um usuário conectado de sessões especificadas.

Carimbo de hora:

Mais de Nós Vivemos Segurança