La gente consciente de la seguridad/inseguridad informática sabe que un
PDF puede contener malware y al abrirlo con una versión vulnerable del
lector, la máquina del usuario puede ser infectada. De hecho es una de
las formas más extendidas de distribuir software malicioso. Pero aunque
hace años que se habló de otras formas de conseguir el mismo objetivo
sin necesidad de abrir el fichero, mucha gente sigue no siendo
consciente. Ya en el 2009 Didier Stevens mostró
en su blog varias maneras, concretamente tres, de infectar una máquina
sin necesidad de abrir un PDF. Incluso también existe una cuarta forma
en la que no es necesario ni interacción por parte del usuario.
En los ejemplos mostrados se hace uso de las Shell Extensions
para infectar la máquina del usuario, así que lo primero es comprender
en qué consisten. Es un software añadido al explorador de Windows, de
forma que éste incorpora una nueva funcionalidad gracias a la
integración de software de terceros. Un ejemplo sería la posibilidad de
analizar un fichero/directorio con un AV mediante el menú contextual, o
realizar una compresión con Winzip/Winrar/etc. Pero no sólo se trata de
añadidos en el menú contextual, sino que también puede consistir en
pestañas extras que se muestran al ver las propiedades de un fichero,
previsualización de thumbnails, etc.
Como he comentado anteriormente, Didier Stevens en el 2009
utilizando como plataforma un Windows XP SP2 totalmente parcheado y
corriendo un Adobe Reader 9 demostró éstas vías de infección. La versión
9 de Reader implementaba DEP, ASLR y MIC de nivel
medio. Pero en la versión X, como medidas de seguridad se hace uso de
una sandbox para mitigar futuras vulnerabilidades, y se ha rediseñado
Adobe Reader para poder ejecutarse con un MIC de nivel bajo. Actualmente con Adobe Reader X las Shell Extensions (thumbnails, properties, preview) corren dentro de la sandbox y no se instala iFilter. Aquí lo explican.
NOTA: en Windows 7 de 64 bits he tenido problemas para utilizar las Shell Extensions. La cuestión es que la Shell Extension pdfshell.dll situada en C:\Program Files (x86)\Common Files\Adobe\Acrobat\ActiveX
es de 32 bits y por lo tanto no es cargada por Windows Explorer de 64
bits. Como en Windows 7 de 64 bits ya no se puede lanzar un explorador
de 32 bits de C:\Windows\SysWOW64, una forma de poder utilizar las extensions de 32 bits en Windows de 64 bits es mediante Half Shell. Pero todo apunta a que tampoco funciona correctamente debido a las modificaciones hechas por Microsoft en Windows 7.
Ahora que ya sabemos en qué consisten las Shells Extensions,
es hora de ver las formas de explotar vulnerabilidades en un lector de
PDF sin necesidad de abrir el fichero. Adobe Reader instala software
extra que permite leer ficheros PDF a los componentes de Windows. Hay
que tener en cuenta que éstas formas de infección son relativamente
antiguas, hace tres años ya, pero sirven como base para conocer que no
siempre abrir un fichero es la única forma de infectarnos. Por lo tanto
una infección mediante alguno de éstos métodos o similares sería posible
en software actual si no existen mitigaciones a otros niveles:
1) Column Handler Shell Extension: es un objeto COM que le
proporciona a Windows Explorer datos adicionales sobre un determinado
tipo de fichero. Windows Explorer muestra estos datos en columnas extra.
En el caso de un PDF éstos serían el título, autor, etc.
Cuando Windows Explorer tiene que mostrar un PDF, invoca al Column Handler
para que lea los datos del PDF y se los pase a él. Por lo tanto,
haciendo click sobre un fichero malicioso se ejecutaría el shellcode
incluido en el mismo quedando infectada la máquina.
Si quisiéramos desinstalar las Shell Extensions relacionadas con PDFs, lo podemos hacer mediante el Shell Extension Manager de Nirsoft o la utilidad Autoruns de Sysinternals
2) Cuando en Windows Explorer se utiliza la vista Thumbnail se muestra
la primera página del PDF en formato mini-imagen. Esto implica la
lectura del PDF, por lo tanto también podemos aprovecharnos de un Adobe
Reader vulnerable para realizar la infección.
3) Al situar el cursor sobre un fichero PDF se muestran las propiedades y
los metadatos del mismo. Si se incrusta un stream object malformado en
los metadatos que se aproveche de una vulnerabilidad, se puede ejecutar
código con sólo situar el cursor sobre el fichero. Esto se debe a que
Windows para mostrar el tooltip lee los metadatos mediante una
aplicación (como Adobe Reader).
Debido a que, como hemos visto, no es necesario hace doble click para ejecutar el malware, Didier Stevens recomienda cambiar la extensión del mismo: malware.pdf.mal. Con esto evitaremos infecciones automáticas indeseadas como las previamente comentadas.
Antes había hablado de iFilter, y es hora de que sepamos en qué consiste. El indexador de contenido Windows Indexing Service (llamado Windows Desktop Search en Windows XP y Windows Server 2003), fue reemplazado por Windows Search en Windows Vista y 7. El IFilter AcroRdIF.dll extiende la funcionalidad de Windows Indexing Service
para indexar el contenido de los PDFs. Windows puede leer y por lo
tanto indexar el contenido de ciertos ficheros, como sería cualquier
txt, pero para formatos más específicos hace uso de aplicaciones de
terceros. Es ahí donde entre en juego iFilter, ya que sin él el
contenido de un fichero PDF no puede ser parseado ni indexado por Windows Search.
Dicho de otra manera, cuando Windows Search indexa contenido, al
no entender el formato de ciertos ficheros busca en el registro el
IFilter correspondiente. El demonio de indexado de contenido
(cidaemon.exe) llama a Acrobat IFilter (AcroRdIF.dll), el cual carga el
parser (AcroRD32.dll). Es éste el que se encarga de parsear el contenido
y pasarle a Windows Search el texto extraído del documento para que lo indexe.
Como reseña histórica indicar que en Windows XP SP3, Windows Indexing Service
se ejecutaba como System, y por lo tanto la DLL AcroRdIF también. El
servicio no se iniciaba automáticamente, sólo si lo activábamos
expresamente después de realizar una búsqueda como administrador.
En Windows Desktop Search 4.0 se ejecutaba también como system,
pero AcroDrIF.dll corría en un proceso a parte bajo la cuenta local
service. Por tanto hubo una mejora en el diseño de seguridad del mismo.
Para evitar la explotación de una vulnerabilidad en Adobe Reader
mediante IFilters, procedemos a eliminar la correspondiente entrada del
registro:
regsvr32 /u AcroRdIf.dll
aunque, como se ha dicho antes, en la versión X actual ya no se incluye.
Aunque existen estas dos posibilidades para ejecutar el payload de un
fichero de forma automática (sin abrir el PDF y sin interacción), los
autores de malware sigue prefiriendo el uso de ingeniería social para
que los usuarios de forma manual abran el PDF.
El shellcode incrustado en el fichero PDF podría ejecutar cualquier
instrucción, pero la shellcode clásica descarga un troyano. Primero
busca el system directory (system32), descarga un troyano de Internet y lo guarda en el system directory ejecutándolo finalmente. Aunque también existen ficheros que contienen de forma embebida el troyano. En este caso la shellcode extrae el
ejecutable, lo guarda en disco y lo ejecuta.
Artículo cortesía de David Montero
1 comments :
Buen post Yago, ya conocia las herramientas de Didier pero este post está genial y me a aclarado algun que otro concepto (y en español!). Gracias Yago.
Publicar un comentario