Upload
alejandro-ramos
View
4.394
Download
2
Embed Size (px)
DESCRIPTION
Uso de Metasploit para generar un PDF que explota CoolType SING en Adobe Reader 9
Citation preview
Alejandro Ramos www.securitybydefault.com
GSIC 2011
Manager del TigerTeam de SIA
Profesor en el MOSTIC de la Universidad Europea de Madrid
Editor de SecurityByDefault.com
Twitter: @aramosf
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 10
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
CVE-2010-1297 Flash Player authplay 9.3.3 8..2.3
CVE-2010-2883 CoolType SING 9.4 8.2
Fuente AvertLabs: http://bit.ly/aOhWu5
Problematic Document Format
Penetration Document Format
Portable Document Format
Polanski
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)
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
Revisión
%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
$ 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
PDF Stream Dumper http://sandsprite.com/blogs/index.php?uid=7&pid=57
Opaf! http://feliam.wordpress.com/2010/08/23/opaf/
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
Podéis descargar esta presentación en PDF ;-)
Gracias. http://www.securitybydefault.com