Salim Bitam

Truques e travessuras: a nova ilusão em nível de pixel da GHOSTPULSE

O malware GHOSTPULSE atualizado evoluiu para incorporar dados maliciosos diretamente nas estruturas de pixels, tornando mais difícil a detecção e exigindo novas técnicas de análise e detecção.

13 min de leituraAnálise de malware
Truques e travessuras: a nova enganação em nível de pixel do GHOSTPULSE

Atualizar

Esta pesquisa abrange uma atualização para o estágio 2 do GHOSTPULSE, originalmente divulgado pela Elastic Security Labs em outubro de 2023.

Principais conclusões

  1. O GHOSTPULSE deixou de usar o bloco IDAT dos arquivos PNG e passou a incorporar sua configuração criptografada e carga útil na estrutura de pixels.
  2. Campanhas recentes envolvem enganar as vítimas com técnicas criativas de engenharia social, como validações CAPTCHA que acionam comandos maliciosos por meio de atalhos de teclado do Windows.
  3. A Elastic Security aprimorou suas regras YARA e atualizou a ferramenta de extração de configuração para detectar e analisar as versões antigas e novas do GHOSTPULSE.

Preâmbulo

A família de malware GHOSTPULSE (também conhecida como HIJACKLOADER ou IDATLOADER) tem evoluído continuamente desde sua descoberta em 2023, evitando a detecção com técnicas cada vez mais sofisticadas.

Em suas versões anteriores, o GHOSTPULSE abusava do bloco IDAT de arquivos PNG para ocultar payloads maliciosos, conforme detalhado em um artigo anterior do Elastic Security Labs. No entanto, análises recentes revelaram uma mudança significativa em seu algoritmo. Em vez de extrair a carga útil do bloco IDAT, a versão mais recente do GHOSTPULSE agora analisa os pixels da imagem para recuperar sua configuração e carga útil. Essa nova abordagem envolve a incorporação de dados maliciosos diretamente na estrutura de pixels.

Nesta publicação de pesquisa, exploraremos esse novo algoritmo baseado em pixels e o compararemos com a técnica anterior de segmentação IDAT com regras de detecção atualizadas.

Introdução

Recentemente, observamos diversas campanhas envolvendo o LUMMA STEALER usando o GHOSTPULSE como carregador, um tópico também explorado pelo HarfangLab. Essas campanhas se destacam por suas táticas criativas de engenharia social. As vítimas são enganadas para validar um CAPTCHA, mas o site as instrui a executar uma série de atalhos de teclado do Windows em vez do processo usual. Esses atalhos acionam um comando copiado para a área de transferência por um JavaScript malicioso. Isso leva à execução de um script do PowerShell, que inicia a cadeia de infecção ao baixar e executar um payload do GHOSTPULSE.

Em versões anteriores do GHOSTPULSE, ele era distribuído como parte de um pacote com vários arquivos. Normalmente, esse pacote continha um executável benigno, uma DLL infectada carregada pelo executável e um arquivo PNG armazenando a configuração criptografada.

No entanto, na versão mais recente, o GHOSTPULSE simplificou sua implantação. Agora, todo o pacote consiste em um único arquivo — um executável benigno, porém comprometido, que inclui o arquivo PNG em sua seção de recursos.

Análise técnica

A segunda versão atualizada do malware mantém grande parte de sua estrutura anterior, incluindo o uso do mesmo algoritmo de hash para resolver nomes da API do Windows. No entanto, a mudança mais significativa está na forma como o malware agora localiza sua configuração, que contém tanto a carga útil quanto as instruções críticas para sua implantação.

A seguir, uma captura de tela mostrando o pseudocódigo de ambas as implementações:

Em versões anteriores, o GHOSTPULSE analisava um arquivo PNG em busca de um bloco de dados criptografado, que era dividido em partes e armazenado sequencialmente. O processo de análise do malware era simples: ele procurava um marcador específico dentro do arquivo — neste caso, a string IDAT. Uma vez encontrada, a malware verificaria a presença de uma etiqueta de 4 bytes que seguia a sequência de caracteres. O fragmento criptografado seria extraído se essa etiqueta correspondesse ao valor esperado. Esse processo continua para cada ocorrência da string IDAT subsequente até que toda a carga útil criptografada seja coletada.

Na nova versão, a configuração criptografada é armazenada nos pixels da imagem. O malware constrói uma matriz de bytes extraindo sequencialmente os valores RED, GREEN e BLUE (RGB) de cada pixel usando APIs padrão do Windows da biblioteca GdiPlus (GDI+) . Após a construção da matriz de bytes, o malware procura o início de uma estrutura que contenha a configuração criptografada do GHOSTPULSE, incluindo a chave XOR necessária para a descriptografia. Isso é feito percorrendo o array de bytes em blocos de 16 bytes. Para cada bloco, os primeiros 4 bytes representam um hash CRC32 e os próximos 12 bytes são os dados a serem hashados. O malware calcula o CRC32 dos bytes 12 e verifica se ele corresponde ao hash. Caso seja encontrada uma correspondência, o programa extrai o deslocamento da configuração GHOSTPULSE criptografada, seu tamanho e a chave XOR de 4 bytes, e então a descriptografa usando XOR.

O diagrama a seguir fornece uma representação visual desse processo:

Extrator de configuração atualizado

Com base nessas descobertas, atualizamos nosso extrator de configuração para oferecer suporte a ambas as versões do GHOSTPULSE. Esta ferramenta recebe um arquivo PNG como entrada e gera como saída o conteúdo incorporado. Você pode encontrar a ferramenta atualizada em nosso repositório labs-releases.

Detecção de GHOSTPULSE com YARA

A regra original GHOSTPULSE YARA ainda impede o estágio final de uma infecção e está integrada ao Elastic Defend. A amostra atualizada pode ser detectada usando as seguintes regras YARA e será incluída no Elastic Defend em uma versão futura.

A Elastic Security atualizou as regras GHOSTPULSE YARA para identificar essa atividade:

rule Windows_Trojan_GHOSTPULSE_1 {
    meta:
        author = "Elastic Security"
        creation_date = "2024-10-15"
        last_modified = "2024-10-15"
        os = "Windows"
        arch = "x86"
        category_type = "Trojan"
        family = "GHOSTPULSE"
        threat_name = "Windows.Trojan.GHOSTPULSE"
        license = "Elastic License v2"

    strings:
        $stage_1 = { 49 63 D0 42 8B 0C 0A 41 03 CA 89 0C 1A 8B 05 ?? ?? ?? ?? 44 03 C0 8B 05 ?? ?? ?? ?? 44 3B C0 }
        $stage_2 = { 48 89 01 48 8B 84 24 D8 00 00 00 48 8B 4C 24 78 8B 49 0C 89 08 C7 44 24 44 00 00 00 00 }

    condition:
        any of them
}

rule Windows_Trojan_GHOSTPULSE_2 {
    meta:
        author = "Elastic Security"
        creation_date = "2024-10-10"
        last_modified = "2024-10-10"
        os = "Windows"
        arch = "x86"
        category_type = "Trojan"
        family = "GHOSTPULSE"
        threat_name = "Windows.Trojan.GHOSTPULSE"
        license = "Elastic License v2"

    strings:
        $a1 = { 48 83 EC 18 C7 04 24 00 00 00 00 8B 04 24 48 8B 4C 24 20 0F B7 04 41 85 C0 74 0A 8B 04 24 FF C0 89 04 24 EB E6 C7 44 24 08 00 00 00 00 8B 04 24 FF C8 8B C0 48 8B 4C 24 20 0F B7 04 41 83 F8 5C }

    condition:
        all of them
}

Conclusão

Em resumo, a família de malware GHOSTPULSE evoluiu desde o seu lançamento em 2023, sendo esta atualização recente uma das mudanças mais significativas.

À medida que os atacantes continuam a inovar, os defensores devem adaptar-se utilizando ferramentas e técnicas atualizadas para mitigar essas ameaças de forma eficaz. Temos o prazer de compartilhar nossa ferramenta de extração de configuração recém-desenvolvida, projetada para analisar as versões antigas e novas do GHOSTPULSE. Essa ferramenta capacita pesquisadores e profissionais de segurança cibernética, fornecendo recursos aprimorados para compreender e combater essas ameaças em constante evolução. À medida que o cenário das ameaças cibernéticas muda, a colaboração e a inovação continuam sendo essenciais para uma proteção eficaz.

Observações

Todos os observáveis também estão disponíveis para download nos formatos ECS e STIX.

Os seguintes observáveis foram discutidos nesta pesquisa.

ObservávelTipoNomeReferência
57ebf79c384366162cb0f13de0de4fc1300ebb733584e2d8887505f22f877077SHA-256Setup.exeAmostra GHOSTPULSE
b54d9db283e6c958697bfc4f97a5dd0ba585bc1d05267569264a2d700f0799aeSHA-256Setup_light.exeAmostra GHOSTPULSE
winrar01.b-cdn[.]netnome de domínioInfraestrutura que hospeda o exemplo GHOSTPULSE
reinforcenh[.]shopnome de domínioLUMMASTEALER C2
stogeneratmns[.]shopnome de domínioLUMMASTEALER C2
fragnantbui[.]shopnome de domínioLUMMASTEALER C2
drawzhotdog[.]shopnome de domínioLUMMASTEALER C2
vozmeatillu[.]shopnome de domínioLUMMASTEALER C2
offensivedzvju[.]shopnome de domínioLUMMASTEALER C2
ghostreedmnu[.]shopnome de domínioLUMMASTEALER C2
gutterydhowi[.]shopnome de domínioLUMMASTEALER C2
riderratttinow[.]shopnome de domínioLUMMASTEALER C2

Compartilhe este artigo