Todos os posts tagados make-pdf

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.