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:
- Analyzing a Malicious PDF File (vídeo)
- Quickpost: About the Physical and Logical Structure of PDF Files
- SANS PDF malware analysis
- BLACKHAT 2008 Presentation - Security Analysis and Malware Threats (pdf)
- Didier Stevens on PDF Hacking and Security (podcast)
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.















No Twitter, @spookerlabs recomendou também outro projecto: http://labs.snort.org/nrt/
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. :)
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.