Csi: siempre quisiste ser forense

50
Alejandro Ramos www.securitybydefault.com

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

Page 1: Csi: siempre quisiste ser forense

Alejandro Ramos www.securitybydefault.com

Page 2: Csi: siempre quisiste ser forense

Manager del TigerTeam de SIA

Profesor en el MOSTIC de la Universidad Europea de Madrid

Editor de SecurityByDefault.com

Blah Blah…

Page 3: Csi: siempre quisiste ser forense

Introducción

Estructura del PDT

Aspectos de seguridad

Análisis y creación de un PDF (¡sin word!)

Recomendaciones

Page 4: Csi: siempre quisiste ser forense

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)

Page 5: Csi: siempre quisiste ser forense

1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 9.1

Page 6: Csi: siempre quisiste ser forense

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

Page 7: Csi: siempre quisiste ser forense
Page 8: Csi: siempre quisiste ser forense

Fuente AvertLabs: http://bit.ly/aOhWu5

Page 9: Csi: siempre quisiste ser forense
Page 10: Csi: siempre quisiste ser forense
Page 11: Csi: siempre quisiste ser forense
Page 12: Csi: siempre quisiste ser forense

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.

Page 13: Csi: siempre quisiste ser forense

2

4

5 6 7

3

Cabecera

Objeto 1

Objeto 2

Objeto N

Tabla XREF

Trailer

Page 14: Csi: siempre quisiste ser forense

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

Page 15: Csi: siempre quisiste ser forense

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

Page 16: Csi: siempre quisiste ser forense

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

Page 17: Csi: siempre quisiste ser forense

%PDF-1.4

… Versión del formato 1.0-1.7

Cabecera

Objeto

Trailer

Tabla XREF

Objeto

Page 18: Csi: siempre quisiste ser forense

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

Page 19: Csi: siempre quisiste ser forense

Ejemplo

ooo!!

Page 20: Csi: siempre quisiste ser forense

$ 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'

Page 21: Csi: siempre quisiste ser forense
Page 22: Csi: siempre quisiste ser forense

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

Page 23: Csi: siempre quisiste ser forense

NO SE CIFRA EL DOCUMENTO COMPLETO.

Objetos Stream y cadenas de texto.

Modificaciones en versiones

Page 24: Csi: siempre quisiste ser forense

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/

Page 25: Csi: siempre quisiste ser forense

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.

Page 26: Csi: siempre quisiste ser forense

Mediante los objetos /Metadata e /Info

Fecha de creación, modificación, autor, software, correo electrónico…

Se almacenan revisiones

Page 27: Csi: siempre quisiste ser forense
Page 28: Csi: siempre quisiste ser forense
Page 29: Csi: siempre quisiste ser forense

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

Page 30: Csi: siempre quisiste ser forense

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.

Page 31: Csi: siempre quisiste ser forense

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

Page 32: Csi: siempre quisiste ser forense

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

Page 33: Csi: siempre quisiste ser forense
Page 34: Csi: siempre quisiste ser forense

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

Page 35: Csi: siempre quisiste ser forense
Page 36: Csi: siempre quisiste ser forense
Page 37: Csi: siempre quisiste ser forense
Page 38: Csi: siempre quisiste ser forense

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

Page 39: Csi: siempre quisiste ser forense

Herramienta URL

Malzilla http://malzilla.sourceforge.net/

SpiderMonkey https://www.mozilla.org/js/spidermonkey/

jsunpack https://code.google.com/p/jsunpack-n/

Page 40: Csi: siempre quisiste ser forense

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

Page 41: Csi: siempre quisiste ser forense
Page 42: Csi: siempre quisiste ser forense
Page 44: Csi: siempre quisiste ser forense
Page 45: Csi: siempre quisiste ser forense
Page 46: Csi: siempre quisiste ser forense
Page 47: Csi: siempre quisiste ser forense

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

Page 48: Csi: siempre quisiste ser forense

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

Page 49: Csi: siempre quisiste ser forense

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

Page 50: Csi: siempre quisiste ser forense

Gracias. http://www.securitybydefault.com