12. 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.
14. 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
Trailer Ha de contener Catalogo: /Root
Número de entradas XREF /Size
Puede incluir información
adicional: /Encrypt /Info /ID
15. 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
16. ID de objeto
Tipo de
Cabecera objeto
1 0 obj
<<
Objeto /Type /Catalog
/Pages 2 0 R
Objeto >>
Referencia a
… endobj
otro objeto
Tabla XREF
Trailer
17. Cabecera
%PDF-1.4
Objeto
Objeto Versión del formato 1.0-1.7
…
Tabla XREF
Trailer
18. 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
25. 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.
26. Mediante los objetos /Metadata e /Info
Fecha de creación, modificación, autor,
software, correo electrónico…
Se almacenan revisiones
30. 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.
31. 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
32. 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
33.
34. 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
47. 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
48. 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