Aprovechando la vulnerabilidad MS15-078 + DLL Hijacking (I)

En esta serie de artículos, hablaremos de cómo aprovechar la vulnerabilidad (MS15-078: creación de archivo en una ruta privilegiada) + dll hijacking para obtener privilegios de SYSTEM con un usuario no privilegiado.

En el boletín de seguridad del pasado 14 de julio, Microsoft publicó varios parches de seguridad que corrigen varias vulnerabilidades de escalada de privilegios. Entre ellas “DCOM DCE/RPC Local NTLM Reflection Elevation of Privilege”, esta vulnerabilidad permite realizar un ataque reflejado sobre una conexión local DCOM hacia un socket TCP que esté en escucha, lo que permite el acceso a un desafío de autenticación NTLM del usuario LocalSystem, el cuál puede ser reenviado al servicio de activación local DCOM.

Esta vulnerabilidad fue descubierta por James Forshaw del equipo de seguridad de Google (Project Zero), los detalles en profundidad se pueden encontrar aquí. Entre los detalles también se encuentra un PoC que aprovecha esta vulnerabilidad para escribir un archivo con un nombre ‘ (2)’ en la ruta ‘C:\Windows\’ con un usuario sin privilegios.

Este PoC no es muy útil debido a que no podemos controlar el nombre del archivo ni la ruta donde se escribe, pero Nick Landers de silentbreaksecurity.com ha modificado el PoC para poder controlar dicha función. El PoC lo podéis encontrar aquí. A continuación, explicamos qué acciones lleva a cabo el PoC:

  1. Crea un junction (link entre carpetas) entre ‘C:\Windows\Temp\{Random}’ y ‘C:\Users\Public\Libraries\Sym’
  2. Crea otra junction entre ‘\??\C:\Users\Public\Libraries\Sym’ y ‘\RPC Control\’
  3. Crea un symlink entre ‘\RPC Control\ (2)’ y ‘\??\C:\Windows\System32\Evil.dll’
  4. El exploit creará un archivo en ‘C:\Windows\Temp\{Random}’ que apunta a ‘C:\Windows\System32\Evil.dll’

Tras bajarnos el PoC, vamos a realizar algunas pruebas de concepto en nuestro Windows 8.1 con usuario sin privilegios (net users john /add).

Para ejecutar el exploit entraremos en la carpeta donde lo bajamos:
Trebuchet.exe RutaArchivoQueQueremosCopiar RutaDestinoDeNuestroArchivo

Ilustración 1: ms15-078

Ilustración 1: ms15-078

En nuestro caso, hemos copiado SecurityArtwork.dll a ‘C:\Windows\’ como se puede ver en la siguiente ilustración.

Ilustración 2: Archivo copiado a C:

Ilustración 2: Archivo copiado a C:\Windows

Algunas cosas a tener en cuenta acerca del exploit:

  • Microsoft.VisualStudio.OLE.Interop.dll debe estar en el mismo directorio que trebuchet.exe
  • No podemos sobrescribir un archivo ya existente
  • El exploit solo puede ser ejecutado cada 2-3 minutos
  • El exploit solo funciona en Windows 7/8.1 x64 and x86 (aunque yo solo lo he probado en Windows 8.1 pro Build 9600)

Os seguiréis preguntando ¿qué conseguimos con esto? En los próximos posts veremos cómo podemos aprovechar un archivo en una ubicación privilegiada para realizar un ataque de DLL hijacking y obtener privilegios de SYSTEM desde un usuario sin privilegios, también cubriremos el proceso de identificación de las posibles DLLs que podemos suplantar.