GetSystem() - TrustedInstaller (Parte 1)

Como es bien sabido, una de las técnicas más utilizadas para la elevación de privilegios es mediante el "abuso" de Tokens y ACL (Access Control List) dentro nuestro querido Microsoft Windows. En este post hablaré un poco acerca del servicio de instalación de módulos TrustedInstaller.exe, que forma parte del WRP (Windows Resource Protection) disponible desde los tiempos de Windows Vista.

Esta protección es la encargada de restringir el acceso a ciertos archivos del core del sistema, carpetas y claves de registro, además de impedir que archivos .dll, .exe, .ocx y .sys se modifiquen o se reemplacen.

Echando un rápido vistazo a las propiedades de la calculadora, vemos que el control total sobre esta recae sobre nuestro amigo TrustedInstaller:


Mientras que nosotros, siendo administradores, no podemos modificar el archivo ni procesos que corren sobre ésta, pertenecientes al NT System.

En una consola powershell, usando la clase IdentityReference y el cmdlet Get-Acl, observamos las propiedades de TI sobre nuestra calculadora, donde el grupo TI viene precedido por el dominio "NT SERVICE".


Esto significa que la característica Service Security Identifier (implementada desde las versiones de Windows Vista) es la que permite que cada servicio en ejecución tenga grupos para verificar los distintos controles de accesos. Por ejemplo, este servicio es ejecutado cada vez que se modifica un recurso en el sistema, como comprobamos con SC.


Partiendo de estos conceptos, para la primera prueba vamos a cambiar la configuración de nuestra querida calculadora haciendo uso de los "poderes" que tiene “NT SERVICE\TrustedInstaller”. 
Con el siguiente comando modificaremos su nombre, cosa que con un usuario administrador no podríamos (tened en cuenta que esto va a cambiar la ruta del servicio en la máquina):

C:\>sc config TrustedInstaller binPath= "cmd.exe /C rename C:\Windows\System32\calc.exe calcCHANGED.exe"


Luego, con SC verificamos que el valor "NOMBRE_RUTA_BINARIO" ha sido modificado por nuestro comando y luego al arrancar el servicio se produce la magia:


Para finalizar esta primera parte, y para arreglar el estropicio, cambiamos nuevamente el PATH de TrustedInstaller.exe por su original (para Windows 7):

sc.exe config TrustedInstaller binPath= %SystemRoot%\servicing\TrustedInstaller.exe

Happy hacking.
0xVIC

1 comentarios :

  1. os recomiendo que le deis un ojo a c0RTAN4 junto con TrustedInstaller. aunque el servicio de cortana este deshabilitado, sigue ejecutandose...
    muy interesante

    ResponderEliminar