2. Manager del TigerTeam de SIA
Profesor en el MOSTIC de la Universidad
Europea de Madrid
Editor de SecurityByDefault.com
Twitter: @aramosf
Blah Blah…
3. Introducción
Estructura del PDT
Aspectos de seguridad
Análisis y creación de un PDF (¡sin word!)
Recomendaciones
4.
5.
6.
7. Portable Document Format
Creado por Adobe Systems
Estándar ISO/IEC 32000-1:2008
Documentos susceptibles de ser impresos
Multiplataforma
Especificación abierta (Julio 2008)
15. Problematic Document Format
Penetration Document Format
Portable Document Format
Polanski
16.
17. Compuesto mediante colección de objetos
Interacción entre objetos
Interacción con el cliente (render): protección
de contraseña, impresión.
Objetos de múltiples tipos: imágenes, texto,
formas geométricas, fuentes…
Soporte de compresión: JPEG2000, JPEG,
CCITT, Flate(Zip)
19. Cabecera Comienzo de
trailer
sección
<<
Objeto /Size 3 Num. De objetos
/Root 1 0 R Objeto raiz
>> (catalogo)
Objeto startxref
… 8482
%%EOF
Localización de
Tabla XREF
Tabla XREF
Ha de contener Catalogo: /Root
Trailer
Número de entradas XREF /Size
Puede incluir información
adicional: /Encrypt /Info /ID
20. Comienzo de sección
Primer obj.
Num. Objetos
Objeto libre
Cabecera
xref
0 6
Objeto
0000000000 65535 f
0000000008 00000 n
Objeto 0000000123 00000 n Objetos
… 0000000429 00000 n en uso
Tabla XREF
Offsets de Num. Del
objetos siguiente
Trailer
objeto libre
21. ID de objeto
Revisión
Tipo de
Cabecera objeto
1 0 obj
<<
Objeto /Type /Catalog
/Pages 2 0 R
Objeto >>
Referencia a
… endobj
otro objeto
Tabla XREF
Trailer
22. Cabecera
%PDF-1.4
Objeto
Objeto Versión del formato 1.0-1.7
…
Tabla XREF
Trailer
23. El fichero original
Fichero Original
Cabecera
Objeto 1 permanece intacto
Objeto 2 Nueva tabla XREF con los
Tabla XREF nuevos objetos y un enlace
Trailer a la antigua tabla xref
Característica!: Soporte
Actualización 1
Objeto 3
para regresión de
versiones.
Tabla XREF
Trailer
31. El PDF se puede firmar digitalmente
La firma comprende el documento completo
El certificado x509 o PKCS7 se incluye en el
documento
El documento es validado al abrirse
Un documento firmado puede incluir resumen
y convertirse en certificado.
Documentos certificados pueden tener
privilegios especiales: contenido dinámico,
ejecución de JavaScript, etc.
32. Mediante los objetos /Metadata e /Info
Fecha de creación, modificación, autor,
software, correo electrónico…
Se almacenan revisiones
36. Uso de interprete con funciones
propias
Modificación de SpiderMonkey
Ejecución por defecto en un
contexto sin privilegios
Dos posibilidades de llamar al
código:
◦ Incluyendo el JS en el PDF
◦ Script dentro del directorio de
instalación: <install>/JavaScripts/*.js
Estos scripts se ejecutan con mayores
privilegios.
37.
38. Triggers Uso
/OpenAction Acción al abrir el documento
Acción cuando una página
/OpenAction con /AA determinada es mostrada
Añadir anotación a la primera
/Annots con /AA página y ejecutar acción cuando
es mostrada
/Names objetos ejecutables del catálogo
Ejecuta una comando de sistema
/Launch cuando se abre el documento
39. 1 0 obj 7 0 obj
<< <<
/Type /Catalog /Length 0000
/Outlines 2 0 R >>
/Pages 3 0 R stream
/OpenAction
<< var i=0,m='',t=['1100','0101'];var
/JS 7 0 R ZJi=s3nT(app.viewerVersion.toString());
/S /JavaScript var
>> buD=aug(ZJi[1],ZJi[0]);app.eval(dqo());
>> m0ii=0,rm='';while(m0ii<mOii.length){
endobj rm+=String.fromCharCode(klX(mOii.su
…
endstream
endobj
40.
41. Localización del código malicioso
Extracción de los segmentos del fichero
Si es necesario, desensamblado de la shellcode
Si es necesario, deofuscación y compresión del
código script
Compresión de la cadena de infección
42.
43.
44.
45.
46.
47. Herramienta URL
Origami http://seclabs.org/origami/
PDFTools http://blog.didierstevens.com/programs/pdf-tools/
Pdfresurrect http://757labs.org/wiki/Projects/pdfresurrect
Pdftk http://www.accesspdf.com/pdftk/
QPDF http://sourceforge.net/projects/qpdf/
PDFMiner http://www.unixuser.org/~euske/python/pdfminer/index.ht
ml
PDF Dissector http://www.zynamics.com/dissector.html
PDF Stream Dumper http://sandsprite.com/blogs/index.php?uid=7&pid=57
Opaf! http://feliam.wordpress.com/2010/08/23/opaf/
57. Mantener actualizada la aplicación
Desactivar el plug-in del navegador
Desactivar soporte JavaScript
Usar el lector con usuarios sin privilegios
Confiar únicamente en archivos que vengan
de fuentes conocidas
Usar productos alternativos: Foxit/Sumatra
58. La dificultad de explotar vulnerabilidades en
el SO esta obligando a que se encuentren
nuevas vías en software de terceros
Existen productos usados masivamente casi
sin explorar
El malware encontrará el camino
59. Podéis descargar esta presentación en PDF ;-)
Referencias
http://www.blackhat.com/presentations/bh-europe-
08/Filiol/Presentation/bh-eu-08-filiol.pdf
http://esec.fr.sogeti.com/blog/index.php?2009/06/26/68-at-least-4-
ways-to-die-opening-a-pdf
http://conference.hackinthebox.org/hitbsecconf2009kl/materials/D2T
1%20-%20Frederic%20Raynal%20-
%20PDF%20Origami%20Strikes%20Back.pdf
http://zeltser.com/reverse-malware/analyzing-malicious-
documents.html
http://www.forensicswiki.org/wiki/PDF
http://blog.didierstevens.com/programs/pdf-tools/
http://blogs.adobe.com/pdfdevjunkie/PDF_Inside_and_Out.pdf