Csi: siempre quisiste ser forense

Post on 27-Jun-2015

852 views 0 download

description

Charla impartida por Alejandro Ramos de Security By Default, para el evento Asegur@it8 que tuvo lugar en Valencia.

Transcript of Csi: siempre quisiste ser forense

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

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