Voltar
Malware Intelligence
Tabela de conteúdo

Em 27 de agosto de 2021, pesquisadores de segurança cibernética descobriram um carregador de malware chamado Colibri sendo vendido em um fórum russo clandestino. Os atores afirmam que o carregador é furtivo e pode ser usado para atingir sistemas Windows, para colocar outros malwares no sistema infectado.

Características do malware Colibri loader

Os recursos do carregador, conforme listado no anúncio, incluem o seguinte:

  • O carregador é escrito em C/ ASM.
  • Ele funciona em sistemas operacionais Windows, incluindo servidores Windows.
  • O carregador não tem dependências, indicando que funciona sem depender de outras entidades do sistema.
  • O carregador não tem uma IAT (tabela de endereços de importação) que contenha funções WinAPI usadas.
  • O carregador Colibri tem apenas duas seções na estrutura PE, a saber: “.texto” (seção de código) e o “.reloc” (seção de realocação).
  • Todas as cadeias de caracteres no carregador, bem como o canal de conexão entre o servidor C2 e o carregador, são criptografadas.
Threat actor’s post on the cybercrime forum about the Colibri Malware Loader
Postagem do ator da ameaça no fórum de crimes cibernéticos sobre o Colibri Malware Loader

Postagem do ator da ameaça no fórum de crimes cibernéticos

Análise técnica do Colibri

Desembalando o carregador

O carregador Colibri vem embalado em um arquivo executável trojanizado. Usando x64dbg (depurador) e colocando pontos de interrupção na função Virtual Alloc conseguimos extrair a carga útil real do carregador Colibri.

Amostra embalada74c4f24e9c025d55c4dd8aca8b91fce3Amostra desembalada de Colibri58FEE16BBEA42A378F4D87D0E8A6F9C8

O código automodificável no malware

Ao testar a carga extraída com o PeStudio, é evidente que a carga tem apenas duas seções, .texto (Seção de Código) e .reloc (Seção de realocação). Os resultados da varredura da carga útil também mostram a existência de uma seção automodificável no código. Isso implica que a carga útil é capaz de resolver dinamicamente outras partes do código que não são acessíveis por meio da análise estática da carga.

Ao executar a carga em um depurador IDA, poderemos resolver a seção de código automodificável da carga.

Two sections that exist in the payload, besides the self-modifying property
Duas seções que existem na carga útil, além da propriedade de automodificação

O código automodificável

Dynamically resolved code section
Seção de código resolvida dinamicamente

Resolução dinâmica do IAT

Para evitar a detecção estática pelos AVs, o autor da carga faz o hash de todas as funções do WinAPI, ignorando a Tabela de Endereços de Importação (IAT), que ajuda a reconhecer estaticamente a atividade do malware. A carga resolve os nomes das funções dinamicamente usando as operações XOR e Shift. Depois de resolver o nome da função, o endereço da função é armazenado no registro eax e uma função de chamada é criada.

Dehashing do nome da função

Dehashing dos nomes das funções

Mate a si mesmo se já houver um processo de instância em execução

Antes de ser executada no sistema, a carga cria um mutex chamando a função createMuteXw e, em seguida, testa se há uma instância da carga já em execução no sistema infectado. Se houver um processo de carga em execução no sistema, a carga chamará a função ExitProcess e sairá da execução. Se não houver nenhuma instância da carga em execução no sistema, a carga continuará a execução e chamará a Dormir função de dormir por 3 segundos como uma maneira simples de evitar a proteção.

Check the existence of the payload on the system
Verifique a existência da carga útil no sistema

A conexão com o servidor C2

Para tornar a análise estática mais difícil e evitar a detecção, o autor desse malware criptografou todas as sequências. Depois de resolver os nomes das funções dinamicamente e usar o depurador, as sequências de caracteres extraídas da carga útil terão os seguintes artefatos:

  • Endereço IP do servidor C2 80,92,205,102
  • URL com outra carga a ser baixada /gate.php

A carga útil inicializa primeiro o uso das funções WinINet chamando Internet OpenW, seguido pelo qual ele abre a seção HTTP com a função Conexão à Internet W. A carga cria uma solicitação HTTP chamando a função HTTP OpenRequestW sob os seguintes parâmetros:

  • O tipo de solicitação: /OBTER
  • Nome do objeto de destino: /gate.php? type=check&uid=59045f4ff04f133112200
  • Versão HTTP a ser usada na solicitação: HTTP/1.1

Depois disso, a carga envia a solicitação GET para o servidor chamando a função httpSendRequestW. Em seguida, a carga chama a função Dados de consulta na Internet disponíveis para determinar a quantidade de dados solicitados. Com base nos resultados das chamadas de função anteriores, a carga útil lê os dados chamando a função Arquivo de leitura na Internet. Nossa suposição é que a carga solicita o servidor C2 e baixa outra carga útil no sistema.

A carga chama a função CryptString para binário, para descriptografar dados depois de baixar os dados do servidor C2, o que indica que os dados podem ser criptografados.

GET request to the C2 server
Solicitação GET para o servidor C2

Indicadores de compromisso — Malware Colibri Loader

MD574c4f24e9c025d55c4dd8aca8b91fce3 58FEE16BBEA42A378F4D87D0E8A6F9C8IP80,92,205,102URL80,92.205,102/gate.php? type=check&uid=59045f4ff04f133112200

Conclusão

O carregador Colibri é um tipo de malware usado para carregar mais tipos de malware no sistema infectado. Esse carregador tem várias técnicas que ajudam a evitar a detecção. Isso inclui omitir o IAT (Tabela de Endereços de Importação) junto com as sequências criptografadas para tornar a análise mais difícil. Como qualquer outro malware carregador, o Colibri pode ser usado para instalar malware que rouba informações, o que pode resultar em perda substancial de informações confidenciais. Portanto, os usuários devem ter cuidado com quaisquer arquivos desconhecidos em seus sistemas.

Nenhum item encontrado.

Blogs relacionados