Upload
eventos-creativos
View
852
Download
0
Embed Size (px)
DESCRIPTION
Charla impartida por Alejandro Ramos de Security By Default, para el evento Asegur@it8 que tuvo lugar en Valencia.
Citation preview
Alejandro Ramos www.securitybydefault.com
Manager del TigerTeam de SIA
Profesor en el MOSTIC de la Universidad Europea de Madrid
Editor de SecurityByDefault.com
Blah Blah…
Introducción
Estructura del PDT
Aspectos de seguridad
Análisis y creación de un PDF (¡sin word!)
Recomendaciones
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)
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 9.1
8.0 9.0 9.1
CVE Bug Versión
CVE-2007-5659 Collab.collectEmailInfo <8.1.1
CVE-2008-2992 Util.printf <8.1.2
CVE-2009-0927 Collab.getIcon <9.0
CVE-2009-4324 Doc.media.newPlayer <9.2
CVE-2009-0658 JBIG2 Decode <9.0
CVE-2010-0188 LibTIFF <9.3.0
CVE-2010-1240 Embedded EXE Ing. Social
Fuente AvertLabs: http://bit.ly/aOhWu5
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)
.o.
2
4
5 6 7
3
Cabecera
Objeto 1
Objeto 2
Objeto N
Tabla XREF
Trailer
trailer
<<
/Size 3
/Root 1 0 R
>>
startxref
8482
%%EOF
Comienzo de sección
Num. De objetos
Objeto raiz (catalogo)
Localización de Tabla XREF …
Ha de contener Catalogo: /Root
Número de entradas XREF /Size
Puede incluir información adicional: /Encrypt /Info /ID
Cabecera
Objeto
Objeto
Tabla XREF
Trailer
xref
0 6
0000000000 65535 f
0000000008 00000 n
0000000123 00000 n
0000000429 00000 n
Comienzo de sección
Objeto libre
Objetos en uso
Primer obj. Num. Objetos
Offsets de objetos
Num. Del siguiente objeto libre
…
Cabecera
Objeto
Objeto
Tabla XREF
Trailer
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
ID de objeto
…
Tipo de objeto
Referencia a otro objeto
Cabecera
Objeto
Objeto
Trailer
Tabla XREF
%PDF-1.4
… Versión del formato 1.0-1.7
Cabecera
Objeto
Trailer
Tabla XREF
Objeto
Fic
hero
Orig
inal
Actu
aliz
ació
n 1
El fichero original permanece intacto
Nueva tabla XREF con los nuevos objetos y un enlace a la antigua tabla xref
Característica!: Soporte para regresión de versiones.
Cabecera
Objeto 1
Trailer
Tabla XREF
Objeto 2
Objeto 3
Tabla XREF
Trailer
Ejemplo
ooo!!
$ python pdf-parser.py hola.pdf
PDF Comment '%PDF-1.4\n'
PDF Comment '%\xc7\xec\x8f\xa2\n'
obj 5 0
Type:
Referencing: 6 0 R
<<
/Length 6 0 R
/Filter /FlateDecode
>>
obj 6 0
Type:
Referencing:
[(1, '\n'), (3, '225'), (1, '\n')]
xref [(3, 'xref'), (3, '0'), (3, '15'), (3, '0000000000'), (3, '65535'), (3, 'f' ), (3, '0000000557'), (3, '00000'), (3, 'n'), (3, '0000003638'), (3, '00000'), ( 3, 'n'), (3, '0000000489'), (3, '00000'), (3, 'n'), (3, '0000000329'), (3, '0000 0'), (3, 'n') trailer << /Size 15 /Root 10R /Info 20R /ID [(44444)] >> startxref 3828 PDF Comment '%%EOF\n'
Selección de
método de
seguridad
Elegir si crear
una política
Seleccionar
los
componentes
a cifrar
Revisar la
configuración
Almacenar el
documento
NO SE CIFRA EL DOCUMENTO COMPLETO.
Objetos Stream y cadenas de texto.
Modificaciones en versiones
Posición Uso
3 Impresión
4 Modificación
5 Extracción (copiar y pegar)
6 Anotaciones
9 Formularios
10 Extracción texto/gráficos
11 Eliminar/Insertar, rotar
12 Impresión (mala calidad)
$ python pdf-parser.py test.pdf … obj 98 0 << /Filter /Standard /V 1 /R 2 /O (±†KŸ|ÿG+¡ÌËpTÔ“Û•ÚÃÐßÏ„´_{«B) /U (¨KM¾åòøƒ½ø-CïP8¨Ëî}¼,ÊpOCt%r) /P -44 >> …
http://www.unlock-pdf.com/ http://www.ensode.net/pdf-crack.jsf http://www.pdfunlock.com/ http://pdfpirate.net http://freemypdf.com/
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.
Mediante los objetos /Metadata e /Info
Fecha de creación, modificación, autor, software, correo electrónico…
Se almacenan revisiones
1650 0 obj << /Length 1152 >> stream .... ET EMC 154.67999 223.25999 76.32001 13.8 re f /P <</MCID 35 >>BDC BT /TT0 1 Tf 12 0 0 12 90 225.9001 Tm ( 1. \(U\) Third Infantry Division . . . . . . . . . . . . . . \ . . . . . . . . . . . . . . . . . . . . . . . . . 8 )Tj
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.
Triggers Uso
/OpenAction Acción al abrir el documento
/OpenAction con /AA Acción cuando una página determinada es mostrada
/Annots con /AA Añadir anotación a la primera página y ejecutar acción cuando es mostrada
/Names objetos ejecutables del catálogo
/Launch Ejecuta una comando de sistema cuando se abre el documento
1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R /OpenAction << /JS 7 0 R /S /JavaScript >> >> endobj
7 0 obj << /Length 0000 >> stream var i=0,m='',t=['1100','0101'];var ZJi=s3nT(app.viewerVersion.toString());var buD=aug(ZJi[1],ZJi[0]);app.eval(dqo());m0ii=0,rm='';while(m0ii<mOii.length){rm+=String.fromCharCode(klX(mOii.su … endstream endobj
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
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.html
PDF Dissector http://www.zynamics.com/dissector.html
Herramienta URL
Malzilla http://malzilla.sourceforge.net/
SpiderMonkey https://www.mozilla.org/js/spidermonkey/
jsunpack https://code.google.com/p/jsunpack-n/
Herramienta URL
VirusTotal http://www.virustotal.com
Wepawet http://wepawet.cs.ucsb.edu/
ThreatExpert http://www.threatexpert.com/
CWSandbox http://www.sunbeltsecurity.com/sandbox/
Jsunpack http://jsunpack.jeek.org/dec/go
Herramienta URL
Origami http://seclabs.org/origami/
Metasploit http://www.metasploit.com/
PDFInjector https://milo2012.wordpress.com/2009/09/21/hello-world
Make-pdf http://blog.didierstevens.com/programs/pdf-tools/
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
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
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/D2T1%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
Gracias. http://www.securitybydefault.com