Usando arquivos Polyglot para distribuir malwares

Share

Um arquivo Polyglot (ou polimórfico) é em essência um artefato que pode ser dois tipos de arquivos ao mesmo tempo, ou seja, é um único arquivo que pode ser um RAR e um JPG ou ZIP e um EXE, por exemplo, coexistindo normalmente. Existem diversas formas de implementação de arquivos polyglot, sendo o TruePloyglot uma das mais famosas (saiba mais).

Nesta PoC iremos demonstrar como um atacante consegue criar um arquivo polimórfico, utilizando o TruePolyglot, para distribuir códigos maliciosos através de websites, passando-se por arquivos legítimos.

Para tal, utilizaremos o WordPress 5.3, com a extensão PDF Embedder 4.4 e o Firefox 70.0.1 em um Windows 10.

Em um Kali Linux, fizemos a criação do arquivo polimórfico como sendo um PDF válido, e ao mesmo tempo um container JAR, desta forma:

/truepolyglot szippdf --zipfile hello_world.jar --pdffile electronics.pdf saida.pdf

O Conteúdo do PDF pode ser visualizado aqui e o conteúdo do container JAR é o que segue:

Abaixo podemos ver ambos os arquivos (PDF polimórfico e o JAR original), lado a lado:

Após isso, fizemos o deploy de um WordPress com o plugin PDF Embedder e upamos o arquivo polimórfico gerado em uma página, conforme imagem abaixo (hospedado neste link):

Note que o arquivo está embutido na página e foi baixado para o cache local do usuário quando o mesmo acessou a referida página:

Neste escopo um atacante poderia utilizar-se de outro código malicioso que, ao infectar a vítima por outro meio, recuperaria o PDF polimórfico e reexecutaria o código malicioso (o qual chamaríamos de payload do ataque) ao renomear o PDF para JAR:

Baseado nesta pesquisa, publiquei a CVE-2019-19589