Como analisar documentos PDF por conteúdos maliciosos

Nos últimos meses, muito se tem falado nos perigos em abrir documentos PDF de origem desconhecida (e não só) e como o cibercrime tem utilizado este método para propagar malware em empresas e governos.

O meu objectivo neste artigo é, para além de alimentar a curiosidade de investigação, proporcionar um meio de identificar possíveis conteúdos maliciosos em documentos PDF que muitos serviços online não conseguem.

Ferramentas utilizadas:

Todas as ferramentas acima mencionadas são opensource e disponíveis gratuitamente por Didier Stevens.

Requisitos:

Como actualmente não tenho disponível um PDF infectado com código malicioso, decidi recorrer à ferramenta make-pdf-javascript.py para criar um documento PDF com código Javascript.

Neste momento temos um documento PDF com um Javascript inofensivo, que apenas mostra uma caixa de alerta.

De referir que o software utilizado para abrir o PDF é a versão mais recente do Acrobat Reader – 9.3.2 PT.

Podem também criar Javascript personalizado com o mesmo programa.


De seguida, vamos analisar e identificar algumas palavra chave importantes numa análise e validação de um documento PDF.
Para tal, vamos utilizar o pdfid.py.

Nota: Dado que esta ferramenta pesquisa por palavras chave no código, pode gerar alguns falsos positivos.

Praticamente todos os PDFs contêm as 7 primeiras palavras chave:

  • obj
  • endobj
  • stream
  • endstream
  • xref
  • trailer
  • startxref

No entanto, vou entrar em pormenor nas seguintes palavras chave porque podem ser necessárias a uma análise de malware num documento PDF.

  • /Page – Indica o número de páginas do documento PDF.
  • /Encrypt – Indica que o documento PDF está protegido com palavra passe ou DRM.
  • /ObjStm – Conta o número de fluxo de objectos. Esse fluxo de objectos pode conter objectos específicos para ofuscar outros objectos indesejados.
  • /JS e /Javascript – O documento PDF contém código Javascript ou importa um ficheiro externo .JS. Caso encontre algum PDF com esta palavra chave é provável que encontre código malicioso.
  • /AA e /OpenAction – Indica que é executada uma acção quando é aberta uma página ou documento PDF. Tenha em conta que se esta palavra chave for encontrada no documento PDF em conjunto com Javascript, podemos considerar que é um documento PDF altamente suspeito.
  • /AcroForm – Número de objectos AcroForm encontrados no documento PDF. Estes objectos podem ser caixas de texto ou selecção com Javascript. Convém analisar.
  • /JBIG2Decode – Indica que foi utilizado a compressão JBIG2 no documento PDF. Não é sinónimo de código malicioso no entanto é conveniente investigar.
  • /RichMedia – existência de código Flash embutido.
  • /Launch – Conta o número de acções executadas.

Voltando ao meu exemplo. Podemos reparar que usando o pdfid.py detectámos a existência da palavra chave Javascript. Vamos analisar e identificar os elementos fundamentais do documento PDF usando outro utilitário – o pdf-parser.py.

Dado que no exemplo apenas detectámos Javascript, vamos pesquisar por essa palavra chave.

Como podemos ver na imagem, o código Javascript apenas executa um alerta.
Para poderem comparar com uma ferramenta de análise online, Wepawet, podem consultar aqui o resultado.
Caso o exemplo tivesse o código Javascript ofuscado, esta ferramenta online (tal como outras) não iria detectar um código possivelmente malicioso. O próprio site alerta a essa situação.

Em resumo, devemos usar o pdf-parser.py como complemento a uma identificação de actividade suspeita num documento PDF encontrado pelo pdfid.py.

Espero futuramente colocar um artigo mais aprofundado sobre documentos PDFs com código ofuscado e com ligações a sites remotos para descarregar malware para o sistema da vítima.

Para os mais impacientes, deixo alguns artigos interessantes sobre o assunto:

Espero ter contribuído com este artigo de iniciação a análise de documentos PDF e agradeço qualquer feedback com algumas experiências reais com documentos PDF suspeitos.

Achaste interessante? Partilha!
    Analista de segurança web com vários anos de experiência. Fundador do projeto WebSegura.net. Reconhecido publicamente, por divulgação de vulnerabilidades, por empresas como a Google, Adobe, eBay, Microsoft, Yahoo, Panda Security, AVG, Kaspersky, McAfee, Hootsuite e outros. Colabora regularmente com a comunicação social em temas relacionados com a segurança de informação.

    3 Comentários em "Como analisar documentos PDF por conteúdos maliciosos"

    1. DS diz:

      No Twitter, @spookerlabs recomendou também outro projecto: http://labs.snort.org/nrt/

    2. Napster diz:

      Bom artigo, este é um método bastante usado ultimamente para propagar malware, por isso é que é MUITO importante fazer as acutlizações, nomeadamente no Adobe Reader. :)

    3. DS diz:

      Actualizei o artigo com mais informação e com um novo podcast.

      @Napster Algumas vezes nem o sistema actualizado consegue prevenir ataques de malware. Exemplo disso é que mesmo usando a última versão do Acrobat Reader com configurações padrão, scripts Javascript ainda são permitidos e executados on the fly.

    Que tal participar com o seu comentário?