Uma das tarefas mais complicadas para os cibercriminosos é fazer com que seu código malicioso não seja detectado pelos antivírus e com isso atingir seu objetivo. Para isso eles tem investido bastante em processos de infecção mais complexos, fugindo do phishing tradicional e utilizando técnicas onde onde o payload malicioso é escondido em arquivos criptografados até mesmo em formatos de arquivos conhecidos. Foi o que encontramos em um novo trojan brasileiro em circulação: ele tenta mascarar seus arquivos maliciosos de forma que ele pareça um arquivo de imagem PNG. E o ataque começa com um simples PDF em uma mensagem de phishing.
Distribuição do Malware
Parece que os criminosos brasileiros acompanham as notícias de segurança, este tipo de ataque foi encontrado meses atrás nos Estados Unidos e agora eles estão utilizando o mesmo método no Brasil. O phishing utilizado nesta campanha distribui um PDF anexado ao email, trata-se de um arquivo limpo. Aqui a tática é a mesma dos ataques que enviam um arquivo executável ou um .ZIP contendo a extensão .pdf no nome do arquivo.
O PDF em anexo contém o texto normalmente utilizado no conteúdo do email. Seu conteúdo é esse, o link direciona o usuário para um arquivo malicioso.
Olhando o conteúdo do PDF podemos encontrar o link malicioso assim como o link para a ferramenta utilizada para gerar o PDF a partir de um conteúdo HTML.
Os payloads maliciosos
O link nos leva ao download de um JAR malicioso que baixa um ZIP contendo outros arquivos. Entre estes arquivos encontramos três arquivos deles sem extensão alguma, porém com header do formato PNG (Portable Network Graphics) que é um formato de imagem muito comum. Geralmente o header informa o tipo do arquivo, que será usado para carregá-lo. Um ataque similar foi encontrado a alguns anos atrás em arquivos BMP.
Visualizando o arquivo podemos ver que se trata de uma imagem de uma cor sólida de 63 x 48 pixels, porém com 1.33 MB, o que é relativamente grande para esta imagem. Analisando o binário que realiza operações nestes arquivos identificamos nele a função que carrega os arquivos PNG para a memória:
Esta função é responsável por carregar o arquivo PNG para a memória, descriptografá-lo e executar o binário extraído utilizando uma técnica conhecida como RunPE, onde o código malicioso é executado no contexto de outro processo, neste caso o iexplore.exe.
A partir deste código foi possível identificar que o arquivo PNG possui apenas 179 bytes (0xB3); o restante do conteúdo é o arquivo malicioso criptografado.
Com base no que foi identificado escrevemos um script para decriptar o conteúdo dos arquivos PNG.
Fornecendo a chave de descriptografia que pode ser encontrada no código do malware, foi possível descriptografar os arquivos.
Conclusão
Os ataques brasileiros estão evoluindo a cada dia tornando-se cada vez mais complexos e eficientes, com isso é necessário estar atento a emails desconhecidos principalmente contendo links e arquivos em anexo.
Como o payload malicioso armazenado no arquivo PNG não pode ser executado sem o seu laucher eles não podem ser utilizados como arquivos principais de infecção, que são os que normalmente são entregues no seu email, eles precisam ser instalados por um módulo diferente.
Com essa técnica os criminosos conseguem ocultar com sucesso o binário dentro de um arquivo que aparentemente é um arquivo de imagem PNG. Essa técnica também serve para dificultar o trabalho de análise das empresas antivirus ou burlar mecânismos automatizados de detecção de arquivos maliciosos em servidores de hospedagem.
Os arquivos envolvidos nesta campanha são detectados pelos produtos Kaspersky com os seguintes vereditos:
Trojan.Win32.KillAv.ovo
HEUR:Trojan.Win32.Generic
Trojan-Downloader.Win32.Banload.cxmj
Trojan-Downloader.Win32.Agent.hgpf
HEUR:Trojan-Downloader.Java.Generic
As URLs envolvidas neste ataque também já se encontram bloqueadas nos produtos Kaspersky.
PNG Embedded – Payload malicioso escondido em arquivo PNG
Daniel
Excelente cometario; te felicito, en los años 80 y aùn 90 la programaciòn en algunos lenguajes tales como Clipper, no estaban desarrollados a pleno; Ya en ese tiempo los trojanos existìan, entonces tuve que recurrir a un maestro de la programaciòn Ingeniero, que hacìa enganches en lenguaje C que tambièn yo manejaba; e incluso Linux que se estaba desarrollando; El hombre era brasilero llamado Ramallo lo recuerdo bien; y gracias a sus libros entendì tambien de este tema, y espero que tu sigas sus pasos. Los libros que existìan en ese tiempo en Argentina, en la programaciòn todos tenìan errores a excepciòn de los que venìan en ingles como COBOL, entonces gane y gaste mucho dinero. No estoy dispuesto a gastar mi vista con ese programita de exadecimales a binario que tengo; pero es excelente para que no nos sigan metiendo veneno en las màquinas. Despuès cada uno sabe lo que hace. Te agradezco y le agradezco a Kasperky tambièn.