Estructura lógica de un archivo PDF
Ya se ha visto la estructura física, veamos ahora
la estructura lógica de un archivo PDF.
Tal y como se ha perfilado, los archivos PDF
funcionan a través de objetos. Estos objetos se reúnen en lo que se denomina: objetos indirectos, es decir, los
objetos indirectos son objetos con nombre que contienen objetos u otros objetos
indirectos.
Estos objetos indirectos vienen representado por
las palabras claves: obj y endobj. Más concretamente, un objeto
indirecto viene representado de la siguiente manera:
<ID>
<Versión del objeto> obj
...
endobj
Leyenda:
ID Identificador del objeto indirecto.
Los
identificadores pueden NO ser secuenciales en el archivo PDF
Versión del
objeto Cuando se crea un
objeto indirecto este valor es de 0, si por cualquier
circunstancia el objeto
indirecto se actualiza el nuevo objeto indirecto
podrá
el valor 1, es decir, este valor indica la cantidad de veces que el
objeto
indirecto ha sido actualizado
La estructura lógica de un archivo PDF tiene forma
de árbol.
La estructura parte de un objeto indirecto raíz,
denominado: Document catalog, que se
ramifica en las siguientes áreas o ramas:
1.- Page Tree
2.- Outline hierarchy
3.- Article Theards
4.- Named
destinations
5.- Interactive
form
NOTA: El
Document Catalog, es el elemento /Root de la sección Trailer.
El objeto indirecto 1470 0 es
el Document Catalog del documento PDF
El objeto Document Catalog
tiene entre las entradas más interesantes, las siguientes:
1.- /Type
2.- /Version
3.- /Extensions
4.- /Pages --> referencia al objeto indirecto
referenciado como: Page Tree
5.- /Dests
6.- /Outlines
7.- /Threads
8.- /Metadata
Contenido del objeto:
Document Catalog
En la sección o rama, Page Tree, es donde encontraremos los objetos indirectos de tipo: page., que podemos decir que son las
páginas de nuestro documento PDF que veremos al abrir el documento.
Estos objetos: Page
Tree, tienen las siguientes entradas:
1.- /Type
2.- /Parent
3.- /Kids
--> Array que contiene los objetos indirectos de tipo: Page, que caen directamente del objeto:
Page Tree.
4.- /Count
--> específica el número de nodos hojas que posee esta rama o sección
El objeto indirecto 1457 0 es
el Page Tree del documento PDF
Contenido de uno de los
objetos: Page, más concretamente del objeto indirecto: 1458 0
Es decir, si seguimos la secuencia, el árbol iría
quedando:
Objeto 1470
(Document Catalog)
Objeto 1457 (Page Tree)
Objeto 1458
(Pages)
<Objetos
contenidos en el objeto: page>
Objeto 1459
(Pages)
<Objetos
contenidos en el objeto: page>
Objeto 1460
(Pages)
<Objetos
contenidos en el objeto: page>
Objeto 1461
(Pages)
<Objetos
contenidos en el objeto: page>
Objeto 1462
(Pages)
<Objetos
contenidos en el objeto: page>
Objeto 1463
(Pages)
<Objetos
contenidos en el objeto: page>
Objeto 1464
(Pages)
<Objetos
contenidos en el objeto: page>
Ahora que sabemos cómo se encuentra estructurado un
archivo PDF, ¿qué debemos buscar para determinar si un archivo PDF puede ser
malicioso?
A la hora de analizar un archivo PDF deberemos de
fijarnos en los objetos indirectos, más concretamente en:
1.-
/Page
2.-
/JS
3.-
/JavaScript
4.-
/AA
5.-
/OpenAction
6.-
/AcroForm
7.-
/JBIG2Decode
8.-
/RichMedia
9.-
/Color with a value larger than 2^24
Vamos a ver más en profundidad la información que
nos puede aportar cada tipo de objeto.
1.- /Page:
Nos indica el número de páginas que posee el documento, en el caso de tener un
archivo malicioso con total seguridad sólo tendrá 1 página.
2.- /JS,
/JavaScript y /RichMedia: Indican que el archivo PDF contiene código
Javascript (los dos primeros tipos) o código flash. ¡¡Os imagináis las
posibilidades!!
3.- /AA,
/OpenAction y /AcroForm: Indican la existencia de una acción automática que
se realiza cuando el documento o página es visualizado. En documento
maliciosos, pueden ser utilizados para ejecutar código JavaScript u otro sin
interacción del usuario.
4.- /JBIG2Decode
y /Color with a value larger than 2^24: Indican la presencia de filtros
vulnerables.
Con un conocimiento pormenorizado de la estructura
interna de un archivo PDF, se puede hacer lo siguiente:
https://blog.didierstevens.com/2016/06/07/recovering-a-ransomed-pdf/
Bibliografía
resources.infosecinstitute.com/pdf-file-format-basic-structure/
Documento:
Analyzing Malicious PDF Fiels by Didier Stevens
No hay comentarios:
Publicar un comentario