Os pesquisadores da BlackBerry Cylance Threat Research descobriram recentemente um código malicioso ofuscado incorporado aos arquivos de áudio WAV. Cada arquivo WAV foi acoplado a um componente do carregador para decodificar e executar o conteúdo malicioso secretamente nos dados de áudio do arquivo. Quando reproduzidos, alguns dos arquivos WAV produziam músicas que não apresentavam problemas de qualidade ou falhas discerníveis. Outros simplesmente geraram estática (ruído branco).
A análise revelou que alguns dos arquivos WAV continham código associado ao minerador de CPU XMRig Monero. Outros incluíam o código Metasploit, usado para estabelecer um shellcode reverso. Ambas as cargas foram descobertas no mesmo ambiente, sugerindo uma campanha dupla para implantar malware, obter ganhos financeiros e estabelecer acesso remoto na rede da vítima.
Os carregadores de arquivos WAV podem ser agrupados nas três categorias a seguir, que são discutidas em detalhes no texto original do blog da Cylance:
- carregadores que empregam esteganografia Least Significant Bit (LSB) para decodificar e executar um arquivo PE;
- carregadores que empregam um algoritmo de decodificação baseado em rand() para decodificar e executar um arquivo PE;
- carregadores que empregam algoritmo de decodificação baseado em rand() para decodificar e executar um shellcode.
Cada abordagem permite ao invasor executar o código a partir de um formato de arquivo até então considerado benigno. Essas técnicas demonstram que o conteúdo executável pode, teoricamente, estar oculto em qualquer tipo de arquivo, desde que o invasor não corrompa a estrutura e o processamento do formato do contêiner. A adoção dessa estratégia introduz uma camada adicional de ofuscação porque o código subjacente é revelado apenas na memória, tornando a detecção mais desafiadora.
Vale ressaltar que o carregador de esteganografia que descobrimos também é identificado na análise de junho de 2019 da Symantec da atividade do ator de ameaça Waterbug/Turla. Além disso, a Symantec identificou arquivos WAV contendo o código Metasploit criptografado. Essas semelhanças podem apontar para um relacionamento entre os ataques, embora a atribuição definitiva seja desafiadora porque diferentes atores de ameaças podem usar ferramentas semelhantes. Além disso, nossa análise se concentra principalmente nos carregadores, que são um estágio inicial de execução usado para lançar código adicional. Diferentes atores de ameaças podem usar o mesmo carregador disponível publicamente para executar malware de segundo estágio não relacionado.
Carregadores
Carregador de estenografia PE
A primeira categoria de carregadores emprega esteganografia para extrair conteúdo executável de um arquivo WAV. Esteganografia é a prática de ocultar um arquivo ou mensagem em outro arquivo, idealmente sem levantar suspeitas sobre o arquivo de destino. Os invasores já usaram técnicas de esteganografia para ocultar dados no passado. A BlackBerry Cylance Threat Research publicou um relatório em abril que descreve como o grupo de ameaças OceanLotus aproveitou a esteganografia para ocultar cargas maliciosas de backdoor em arquivos de imagem. Nesse caso, o código é oculto no arquivo de áudio usando a técnica LSB (Least Significant Bit), em que o bit mais à direita de um byte individual contém os dados de seu interesse. Um carregador de arquivos WAV publicamente disponível que descobrimos tem as seguintes características:
SHA-256 | 595A54F0BBF297041CE259461AE8A12F37FB29E5180705EAFB3668B4A491CECC |
Tipo de arquivo | PE32+ executável (GUI) x86-64, para MS Windows |
Tamanho | 107.008 bytes |
Selo de compilação | Terça-feira, 29 de maio de 2018 13:07:05 UTC |
Caminho PDB | f:\w\xmrig\iskander\x64\release\iskander.pdb |
Dados da versão | Idioma: inglês (EUA) Empresa: Microsoft Corporation Descrição do arquivo: Microsoft MediaPlayer Versão do arquivo: 12.6.7600.16385 Direitos autorais: Microsoft Corporation. Todos os direitos reservados. Nome original do arquivo: MSTCSS.EXE |
Observe que a versão de 32 bits desse carregador também está disponível publicamente, embora não seja discutida em detalhes aqui.
Diferentemente de outros carregadores mencionados neste artigo, esse carregador contém cadeias codificadas permanentemente que especificam o nome do arquivo a ser carregado (“Song.wav”) e, uma vez decodificada, a função exportada a ser executada (“Iniciar”). O arquivo Song.wav está disponível publicamente em um arquivo zip:
SHA-256 | DB043392816146BBE6E9F3FE669459FEA52A82A77A033C86FD5BC2F4569839C9 |
Nome do arquivo | Song.wav |
Tipo do arquivo | RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, stereo 44100 Hz |
Tamanho | 15.179.596 |
Após a execução, o carregador lerá Song.wav (assumindo que esse arquivo esteja no mesmo diretório), extrairá uma DLL na memória e executará a exportação “Iniciar”. O arquivo extraído está associado ao minerador de CPU do XMRig Monero:
SHA-256 | A2923D838F2D301A7C4B46AC598A3F9C08358B763B1973B4B4C9A7C6ED8B6395 |
Tipo de arquivo | PE32+ executável (DLL) (console) x86-64, para MS Windows |
Tamanho | 733,696 bytes |
Selo de compilação | Segunda-feira, 28 de maio de 2018, 19:45:53 GMT |
Caminho PDB | n/a |
Exportação | Start |
Dados da versão | Idioma: neutro
Nome da empresa: www[.]xmrig[.]com |
Os invasores implantam mineradores de CPU para roubar recursos de processamento e gerar receita com mineração de criptomoeda. Os mineradores de criptomoeda são um payload popular de malware pois fornecem benefícios financeiros e buscam operar em segundo plano sem o conhecimento do usuário. Um botnet eficaz de criptomoeda pode render milhares de dólares por mês para um invasor.
Carregador de PE baseado em rand()
A segunda categoria de carregador usa um algoritmo de decodificação baseado em rand() para ocultar o shellcode. Um exemplo desse carregador está disponível ao público e possui as seguintes características:
SHA-256 | 843CD23B0D32CB3A36B545B07787AC9DA516D20DB6504F9CDFFA806D725D57F0 |
Tipo de arquivo | PE32+ executable (GUI) x86-64, for MS Windows |
Tamanho | 156,672 bytes |
Selo de compilação | Terça-feira, 6 de junho de 2018, 11:09:52 UTC |
Caminho PDB | d:\source\mining\wavdllplayer\x64\release\wavdllplayer.pdb |
Dados da versão | Idioma: inglês (EUA)
Nome da empresa: Microsoft Corporation |
Para carregar um arquivo WAV com esse carregador, a seguinte linha de comando deve ser usada: <EXE do carregador> <Arquivo WAV> <Ponto de entrada do arquivo PE decodificado>.
Um exemplo de arquivo WAV compatível (e publicamente disponível) possui as seguintes características:
SHA-256 | 7DC620E734465E2F5AAF49B5760DF634F8EC8EEAB29B5154CC6AF2FC2C4E1F7C |
Nome do arquivo | click.wav |
Tipo do arquivo | RIFF (little-endian) data, WAV audio, Microsoft PCM, 8 bit, mono 44100 Hz |
Tamanho | 733,740 bytes |
Ao contrário do primeiro arquivo WAV discutido, esse arquivo de áudio possui cabeçalhos legítimos, mas não toca música quando reproduzido – o áudio soa como ruído de estática.
Ao executar o carregador com o arquivo WAV acima, o carregador lerá o arquivo, extrairá uma DLL na memória e tentará executar o ponto de entrada especificado. Semelhante ao primeiro cenário, o arquivo extraído está associado ao minerador de CPU do XMRig Monero:
SHA-256 | ED58FDB450D463B0FE3BBC6B9591203F6D51BF7A8DC00F9A03978CECD57822E1 |
Tipo do arquivo | PE32+ executável (DLL) (console) x86-64, para MS Windows |
Tamanho | 733,696 bytes |
Selo de compilação | Segunda-feira, 28 de maio de 2018, 19:45:53 GMT |
Caminho PDB | n/a |
Exportação | Start |
Dados da versão | Idioma: neutro
Nome da empresa: www[.]xmrig[.]com |
Na verdade, esse arquivo é quase idêntico à DLL decodificada do Song.wav, com exceção de quatro bytes no final do arquivo (detalhes adicionais estão no texto original do blog da Cylance).
Carregador em shellcode baseado em rand()
A terceira categoria de carregador usa um algoritmo de decodificação baseado em rand() para ocultar arquivos PE. Um exemplo desse carregador está disponível ao público e possui as seguintes características:
SHA-256 | DA581A5507923F5B990FE5935A00931D8CD80215BF588ABEC425114025377BB1 |
Tipo de arquivo | PE32+ executável (GUI) x86-64, para MS Windows |
Tamanho | 90,112 bytes |
Selo de compilação | Segunda-feira, 18 de junho de 2018, 18:54:48 UTC |
Caminho PDB | D:\source\mining\wavPayloadPlayer\x64\Release\wavPayloadPlayer.pdb |
Dados da versão | Idioma: inglês (EUA) Nome da empresa: Microsoft Corporation Descrição do arquivo: Host Process for Windows Tasks Versão do arquivo: 10.0.16299.15 (WinBuild.160101.0800) Direitos autorais: Microsoft Corporation. Todos os direitos reservados. Versão do produto: 10.0.16299.15 |
Para carregar um arquivo WAV com esse carregador, a seguinte linha de comando deve ser usada (nenhum ponto de entrada é necessário): <Loader EXE> <Arquivo WAV>.
Semelhante ao carregador anterior, todos os arquivos de áudio emparelhados com esse carregador apenas continham ruído estático sem conteúdo musical. Após a execução, esse carregador abre um arquivo WAV compatível, lê seus dados, decodifica seu conteúdo e tenta executar o shellcode.
Embora nenhuma amostra pública de arquivos WAV compatíveis esteja disponível, os dois arquivos descobertos continham o código Metasploit, que inicia um shellcode reverso para um endereço IP especificado.
Conclusão
Os invasores são criativos em sua abordagem para executar código, incluindo o uso de vários arquivos de diferentes formatos. Descobrimos vários carregadores que extraem e executam código malicioso de arquivos de áudio WAV. A análise revelou que os autores do malware usaram uma combinação de esteganografia e outras técnicas de codificação para desobstruir e executar o código. Essas estratégias permitiram que os invasores ocultassem seu conteúdo executável, tornando a detecção uma tarefa desafiadora. Nesse caso, os invasores empregavam ofuscação para realizar atividades de criptografia e estabelecer uma conexão reversa para comando e controle. As semelhanças entre esses métodos e os TTPs de agentes de ameaças conhecidos podem indicar uma associação ou vontade de imitar a atividade adversária, talvez para evitar a atribuição direta.
Anuj Soni é um pesquisador sênior da equipe de inteligência de ameaças da Blackberry Cylance, onde realiza pesquisas de malware e engenharia reversa. Também traz suas habilidades de resolução de problemas para sua posição como instrutor certificado SANS, o que lhe dá a oportunidade de transmitir seu profundo conhecimento técnico e habilidades práticas aos alunos. Ele fez bacharelado e mestrado na Carnegie Mellon University e possui certificação no GIAC Reverse Engineering Malware (GREM), é examinador certificado pelo EnCase (EnCE) e profissional certificado de segurança de sistemas de informação (CISSP).
Jordan Barth é diretor da prática de serviços de segurança cibernética da KPMG, com mais de 10 anos de experiência ajudando clientes a protegerem ativos críticos contra ameaças cibernéticas, melhorando a capacidade das empresas de detectarem possíveis comprometimentos e ajudando-as a responderem e se recuperarem de violações cibernéticas. Os clientes anteriores de Jordan incluem empresas internacionais de serviços financeiros, organizações de serviços de hospitalidade e agências civis e de defesa.
Brian Marks é especialista em serviços de atendimento cibernético da KPMG em Chicago. Ele é perito em fornecer resposta a incidentes e serviços forenses digitais para os clientes. Participa regularmente de várias conferências de segurança da informação e apresentou-se no SANS DFIR Summit, no Derbycon e no NOLAcon.