blank

blank

O FortiGuard Labs identificou recentemente o uso de um documento Word em russo equipado com uma macro maliciosa na campanha Konni em andamento. Apesar da data de criação do documento ser setembro, a atividade contínua no servidor C2 da campanha é evidente na telemetria interna, conforme mostrado na Figura 1.

Esta campanha conta com um trojan de acesso remoto (RAT) capaz de extrair informações e executar comandos em dispositivos comprometidos. Operando há vários anos, esta campanha emprega diversas estratégias para acesso inicial, entrega de carga útil e estabelecimento de persistência nas redes das vítimas. Neste blog, iremos detalhar o comportamento do malware em cada estágio.

Plataformas afetadas: Microsoft Windows
Usuários afetados: Microsoft Windows
Impacto: Atacantes remotos ganham controle dos sistemas infectados
Nível de gravidade: Crítico

ADVERSÁRIO: Konni
ATT&CK IDS: T1574 – Fluxo de execução de sequestro, T1027 – Arquivos ou informações ofuscadas, T1134 – Manipulação de token de acesso, T1569 – Serviços do Sistema, T1543 – Criar ou modificar processo do sistema, T1547 – Execução de inicialização automática de inicialização ou logon, T1082 – Descoberta de informações do sistema, T1059 – Interpretador de Comandos e Scripts, T1137 – Inicialização do aplicativo Office, T1140 – Desofuscar/Decodificar Arquivos ou Informações, T1560 – Arquivar dados coletados, T1548 – Mecanismo de Controle de Elevação de Abuso

 

blank
Figura 1: Telemetria

Conta-gotas – Documento Word

Ao abrir o documento, uma barra de aviso amarela aparece, exibindo “Ativar conteúdo” ao lado de algum texto russo ambíguo (Figura 2). Ao selecionar o botão, é iniciado um script VBA que exibe um artigo em russo que se traduz como “Avaliações Ocidentais do Progresso da Operação Militar Especial”.

blank
Figura 2: Documento Word

O script VBA (Figura 3) recupera informações de “OLEFormat.IconLabel” e as armazena em uma pasta temporária com o nome de arquivo “temp.zip”. Após extrair o conteúdo do arquivo, ele executa o script “check.bat” utilizando o parâmetro “vbHide”, garantindo que o script em lote seja executado sem apresentar uma janela de prompt de comando ao usuário. Esse método é valioso quando um agente de ameaça procura executar um script discretamente em segundo plano, evitando a interação do usuário ou janelas visíveis.

blank
Figura 3: conteúdo VBA

Preparação – check.bat

O arquivo de script inicial, denominado “check.bat” (Figura 4), realiza diversas verificações. Inicialmente, verifica a presença de uma sessão de conexão remota. Se detectado, ele inicia diretamente o script “netpp.bat”. O script então avalia se o sistema atual está executando o Windows 10, atribuindo um valor 1 à variável “%Num%” independentemente do resultado. Posteriormente, essa variável desempenha um papel na seleção do método de desvio do UAC. Esta configuração do UAC é diferente das campanhas KONNI do passado que definiam 4 ou 1 para diferentes sistemas operacionais.

Além disso, examina se o sistema opera em uma arquitetura de 64 bits. Nesse caso, ele renomeia os arquivos DLL correspondentes para “netpp.dll” e “wpns.dll” e remove arquivos DLL estranhos. Finalmente, ele executa “wpns.dll” com três parâmetros: “QQQQQQQ” como o nome do ponto de entrada de destino, “%Num%” denotando o método de desvio do UAC escolhido e “netpp.bat” para ações adicionais.

blank
Figura 4: check.bat

Módulo de desvio UAC — wpns.dll

Cada arquivo DLL no documento do Word foi compactado usando UPX. Iremos nos aprofundar nos detalhes usando os arquivos da versão de 64 bits, uma vez que seus equivalentes de 32 bits têm funcionalidades semelhantes. Em primeiro lugar, “wpns.dll” é invocado no arquivo em lote “check.bat”. Ele foi projetado principalmente para bypass UAC. No arquivo batch, o parâmetro é configurado como 1, solicitando a seleção da função sub_180001B90, conforme ilustrado na Figura 5.

blank
Figura 5: Código Assembly no ponto de entrada de “QQQQQQQ”

Ele inicia o processo “wusa.exe”, um utilitário legítimo do Windows responsável por instalar e desinstalar atualizações e pacotes do Windows. Por ser assinado e confiável pelo sistema operacional, ele é executado com privilégios elevados sem acionar prompts de Controle de Conta de Usuário (UAC). Depois de estabelecer “wusa.exe”, ele duplica seu token de acesso e prossegue para executar um comando especificado usando “CreateProcessWithLogonW” usando esse token. Finalmente, ele executa um script “netpp.bat” que herda os privilégios elevados. Um segmento do código é mostrado na Figura 6.

blank
Figura 6: Módulo de bypass UAC

Instalação —netpp.bat

blank
A Figura 7 mostra o conteúdo do arquivo em lote “netpp.bat”. Aqui está uma explicação concisa de suas funções:
  • Parada e verificação de serviço: o script tenta interromper o serviço “netpp” para evitar execução redundante. Em seguida, verifica a presença da string “system32” no sistema.
  • Copiar arquivos: Se a string “system32” estiver ausente, o script avança para a função “COPYFILE”. Este segmento copia vários arquivos (por exemplo, netpp.dll, netpp.dat, netpp.ini) para o diretório “System32” no sistema operacional Windows. Assim que o processo de cópia for concluído, arquivos específicos serão excluídos.
  • Criação de serviço: o script então faz a transição para a seção “INSTALL”, onde gera e configura um serviço chamado “netpp” usando comandos como “sc create”, “sc description” e “sc config”. Ele configura o serviço para iniciar automaticamente usando um nome menos visível, “Internet Print Provider Service”.
    blank
  • Configurações de registro: em seguida, adiciona uma entrada de registro na chave “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SvcHost” com o novo valor “netpp”. Esta configuração de registro provavelmente associa o serviço “netpp” ao Host de serviço do Windows. Em seguida, ele adiciona a chave “HKLM\SYSTEM\CurrentControlSet\Services\netpp\Parameters” e cria um novo valor chamado “Serviceb11” do tipo REG_EXPAND_SZ com os dados do valor “%windir%\System32\netpp.dll”. Esta configuração de registro parece definir um parâmetro para o serviço “netpp”, especificando a localização do arquivo “netpp.dll” no diretório do sistema Windows.
    blank
  • Início e limpeza do serviço: por fim, o script inicia o serviço “netpp” e realiza a remoção dos rastros.
    blank

    Carga útil final — netpp.dll

    Inicialmente, o programa verifica diversas funções da API do Windows em diversas bibliotecas, conforme mostrado na Figura 8. Se conseguir carregar essas funções, o programa continua; caso contrário, ele retornará 0 e terminará. A configuração C2 armazenada em “netpp.ini” é criptografada usando AES-CTR, e a chave é derivada do nome do serviço estabelecido na etapa anterior, ou seja, “netpp”. Os primeiros 16 bytes de “netpp.ini” são usados ​​como Vetor de Inicialização (IV) para descriptografar e revelar a lista de servidores C2, conforme visto na Figura 9.

    blank
    Figura 8: Verificando as funções da API do Windows
    blank
    Figura 9: A lista C2 descriptografada de “netpp.ini”

    O programa então adiciona uma entrada de registro usando o comando “cmd /c REG ADD HKCU\Console /v CodePage /t REG_DWORD /d 65001 /f” e começa a coletar informações do sistema comprometido. Ele usa o comando “cmd /c systeminfo” para coletar detalhes abrangentes sobre o sistema de destino, incluindo a versão do sistema operacional, fabricante do sistema, hotfixes disponíveis, tempo de atividade do sistema e configuração de rede. Esses dados são armazenados em um arquivo temporário, e o programa concatena a string “rr “ com o horário do sistema para criar o nome do arquivo. Em seguida, ele executa “cmd /c makecab” para compactar o arquivo, a menos que o arquivo temporário tenha uma das seguintes extensões: “.7z,” “.zip,” “.rar,” “.cab,” “.docx, ” ou “.xlsx”, conforme mostrado na Figura 10.

blank
Figura 10: Convertendo dados coletados em um arquivo cab

Em seguida, usando o algoritmo AES-CTR, ele usa o nome do arquivo como chave para criptografar o arquivo CAB. Os dados criptografados são então carregados no servidor C2 por meio de uma solicitação POST, empregando uma sintaxe HTTP codificada, conforme ilustrado na Figura 11.

blank
Figura 11: Criando uma solicitação HTTP POST

Posteriormente, ele utiliza o comando “cmd /c tasklist” para buscar uma lista dos processos atualmente ativos no sistema. Isso ajuda o agente da ameaça a compreender o status do sistema e potencialmente identificar medidas de segurança implementadas. e é transmitido ao servidor C2. Toda a solicitação C2 é direcionada para “up.php” com o parâmetro “name=%PCNAME%”, conforme mostrado na Figura 12. Após o upload, o programa remove o arquivo temporário para eliminar rastros.

blank
Figura 12: Uma solicitação POST para fazer upload de dados da lista de tarefas

Em seguida, ele tenta obter uma carga útil ou comando do servidor C2 despachando uma solicitação HTTP para “dn.php” com os parâmetros “name=%PCNAME%” e “prefix”. Os valores potenciais para “prefixo” incluem “cc” seguido por um dígito ou uma string simples “tt”. As sessões C2 são ilustradas na Figura 13.

blank
Figura 13: Sessões C2 para dn.php

Embora o comando real do servidor C2 permaneça não divulgado, podemos deduzi-lo do código assembly dentro do arquivo DLL. Ao receber uma resposta do servidor, o sistema disseca os dados usando “#” como delimitador, realiza a decodificação base64 e descriptografa as informações usando AES. O conteúdo decifrado é então armazenado como um arquivo temporário. O programa então executa “cmd /c expand –R” para recuperar a carga para ações subsequentes, conforme mostrado na Figura 14.

blank
Figura 14: Dados de resposta do processo do servidor C2

A Figura 15 mostra o código parcial de como ele lida com os comandos C2, que incluem a execução de um comando com privilégios específicos, o download de um arquivo e o upload de um arquivo específico.

blank
Figura 15: Comando C2

Conclusão

Este artigo explora um conjunto de ferramentas avançado empregado por um agente de ameaça sofisticado em um documento do Word usando scripts em lote e arquivos DLL. A carga incorpora um bypass UAC e comunicação criptografada com um servidor C2, permitindo que o agente da ameaça execute comandos privilegiados. À medida que este malware continua a evoluir, os utilizadores são aconselhados a ter cuidado com documentos suspeitos.

Proteções Fortinet

O malware descrito neste relatório é detectado e bloqueado pelo FortiGuard Antivirus como:

VBA/Agente.CXE!tr
BASH/Agente.KON!tr
W64/Agente.ATC!tr
W32/Agente.AEQN!tr
W32/Agente.AFRB!tr

FortiGate, FortiMail, FortiClient e FortiEDR suportam o serviço FortiGuard AntiVirus. O mecanismo FortiGuard AntiVirus faz parte de cada uma dessas soluções. Como resultado, os clientes que possuem esses produtos com proteções atualizadas estão protegidos.

A Fortinet também lançou assinaturas IPS para proteger proativamente nossos clientes contra ameaças contidas na lista de exploits.

Os URLs são classificados como “sites maliciosos” pelo serviço FortiGuard Web Filtering.

O serviço FortiGuard CDR (desarme e reconstrução de conteúdo) pode desarmar as macros maliciosas dentro do documento.

Sugerimos também que as organizações passem pelo módulo de treinamento NSE gratuito da Fortinet: NSE 1 – Conscientização sobre Segurança da Informação. Este módulo foi desenvolvido para ajudar os usuários finais a aprender como se identificar e se proteger contra ataques de phishing.

O serviço de reputação IP e segurança anti-botnet FortiGuard bloqueia proativamente esses ataques, agregando dados IP de fontes maliciosas da rede distribuída Fortinet de sensores de ameaças, CERTs, MITRE, concorrentes cooperativos e outras fontes globais que colaboram para fornecer inteligência atualizada sobre ameaças sobre fontes hostis.

Se você acredita que esta ou qualquer outra ameaça à segurança cibernética afetou sua organização, entre em contato com nossa equipe global de resposta a incidentes FortiGuard.

IoCs

Lista C2:

kmdqj1[.]c1[.]biz
ouvxu2[.]c1[.]biz
9b31n8[.]c1[.]biz
3pl0y5[.]c1[.]biz
dpgbep[.]c1[.]biz
7qnbae[.]c1 [.]biz
glws5m[.]c1[.]biz
ewqqa4[.]c1[.]biz
3897lb[.]c1[.]biz
558ga9[.]c1[.]biz
b91stf[.]c1[.]biz
bg5pl1 [.]c1[.]biz
caoy9n[.]c1[.]biz
rziju6[.]c1[.]biz
pm90p1[.]c1[.]biz
pxyunf[.]c1[.]biz
m2jymd[.]c1[ .]biz
aocsff[.]c1[.]biz
6e2nbc[.]c1[.]biz
vqt9i1[.]c1[.]biz

Arquivos:

ac9b814b98a962bc77b2ab862d9c3b1ba5f7e86b80797259b4fcb40bfb389081
f07e55ce20e944706232013241d23282e652de2c9514904dede14d4a711a5d1d
085cdb09aba0024c0cadbefe428817829bbe4ab0f68598572ebccc2f6f25e78f
793b8e72fded73ae6839e678b03bd5c99959f47a1ad632095ba60fb89f66fa91
83e66d912ca592bc2accfd9c275647f287b6dc72a859054a348e616537999b64
656dd6e67a51aebc6c69dc35eaba2e1502f225ae6fd9d0a5ff70879982427844
cfbc7e6a89e4a23a72c7bcd9019197721f18506d9ab842011e0ab9d9eb24c2cc

 

 


Descubra mais sobre DCiber

Assine para receber os posts mais recentes por e-mail.