Bypass UAC (Windows)
Script: Ejecutar Instalador sin Pedir Permisos de Administrador (UAC Bypass)
Código:
Para realizar la prueba te puedes descargar el instalador desde el siguiente link:
¿Qué hace este script?
Este script permite ejecutar un instalador (gu6setup.exe
) sin que el sistema operativo solicite permisos de administrador (sin UAC). Esto es útil cuando el programa no necesita privilegios elevados para ejecutarse, pero aún así solicita el UAC innecesariamente.
¿Qué es el UAC?
UAC (User Account Control) es un mecanismo de seguridad en Windows que:
Previene que software haga cambios no autorizados en el sistema.
Muestra una ventana emergente que solicita confirmación del usuario antes de ejecutar programas como administrador.
¿Qué es RunAsInvoker
?
RunAsInvoker
?RunAsInvoker
es una bandera interna del sistema operativo que se puede forzar mediante la variable de entorno __COMPAT_LAYER
.
Cuando se establece __COMPAT_LAYER=RunAsInvoker
:
Se indica al sistema que no eleve los privilegios del proceso, aunque el ejecutable lo solicite en su manifiesto (
requireAdministrator
).No se mostrará la ventana de UAC.
El programa se ejecutará con los mismos permisos que tiene el script (sin ser admin).
Explicación línea por línea
@echo off
Oculta los comandos que se están ejecutando en la consola. Más limpio.
setlocal
Aísla las variables para que solo existan dentro del script.
set "__COMPAT_LAYER=RunAsInvoker"
Aplica la capa de compatibilidad para evitar que el proceso solicite UAC.
set "APP_PATH=%~dp0gu6setup.exe"
Guarda la ruta completa del archivo gu6setup.exe
, suponiendo que está en el mismo directorio que el script. %~dp0
es la ruta del script.
if not exist ...
Verifica que el archivo gu6setup.exe
exista antes de intentar ejecutarlo.
start "" "%APP_PATH%"
Lanza el instalador sin abrir una nueva consola. El ""
es el título de la ventana, requerido por start
.
pause
Espera a que el usuario presione una tecla antes de cerrar. Útil para ver mensajes de error o éxito.
Técnicas similares / Payloads posibles
Este enfoque de UAC bypass con RunAsInvoker
no es una vulnerabilidad en sí, sino una técnica permitida por el sistema operativo. Sin embargo, puede ser usada de forma maliciosa.
Payloads o usos comunes:
Instaladores personalizados: Ejecutar
.exe
sin necesidad de pedir al usuario que acepte el UAC.Bypass UAC para scripts: Inyectar comandos maliciosos que normalmente requerirían elevación.
Cargar DLLs o backdoors dentro de programas que no hacen verificación de integridad.
Persistence: Insertar el script en el inicio del sistema sin ser detectado por el UAC.
Ingeniería social: Ejecutar binarios que se disfrazan de algo benigno, sin levantar sospechas por la ausencia de UAC.
⚠️ Advertencia ética: Esta técnica debe utilizarse únicamente con fines educativos, administrativos legítimos o pruebas de seguridad autorizadas. El mal uso puede ser ilegal y sancionado por la ley.
Limitaciones
No funciona si el ejecutable requiere sí o sí privilegios de administrador para funcionar (por ejemplo, si accede a archivos del sistema).
Solo evita la ventana de UAC; no eleva permisos mágicamente.
Si el usuario ya no tiene privilegios de admin, el resultado será el mismo que ejecutar el programa como usuario estándar.
Cuándo usar esta técnica
Cuando el software no necesita privilegios de administrador pero está mal configurado.
En entornos educativos para enseñar sobre compatibilidad en Windows.
Para automatizar instalaciones internas que no requieren cambios profundos en el sistema.
Tabla de Payloads para Bypass UAC con RunAsInvoker
RunAsInvoker
1
Instalador .exe
Ejecutar un instalador que no requiere permisos reales de admin, pero pide UAC por defecto.
Usuario estándar
Ideal para software mal configurado que pide permisos innecesarios.
2
PowerShell Script Wrapper
Ejecutar un script .ps1
malicioso disfrazado como instalador o herramienta legítima.
Usuario estándar
Puede usarse para carga de módulos, keyloggers o descarga de payloads adicionales.
3
Ejecutable con DLL Hijacking
Correr un .exe
vulnerable a cargar una DLL manipulada desde el mismo directorio.
Usuario estándar
No necesita privilegios si la ruta de la DLL no es protegida por el sistema.
4
Carga de DLL vía regsvr32
Ejecutar una DLL maliciosa usando regsvr32
, aprovechando el RunAsInvoker
.
Usuario estándar
Técnicamente no necesita UAC si la DLL no toca el sistema.
5
Scripts por lotes (.bat
)
Ejecutar otros scripts automatizados para moverse lateralmente en la máquina.
Usuario estándar
Útil para persistencia en entornos sin control de privilegios estricto.
6
Ejecutar Binarios de Confianza
Lanzar binarios firmados por Microsoft con parámetros modificados.
Usuario estándar
Ej: usar fodhelper.exe
o computerdefaults.exe
con técnicas más avanzadas.
7
Herramientas de pentesting
Ejecutar herramientas como mimikatz
, revshell.exe
sin trigggear el UAC.
Usuario estándar
Solo si están configuradas para no requerir elevación desde el manifiesto.
8
Acceso a tareas programadas
Crear o ejecutar tareas en el scheduler (schtasks
) sin UAC.
Usuario estándar
Depende de si la política de ejecución permite crear tareas sin elevación.
9
Abusar programas portables
Ejecutar programas legítimos portables (como un navegador) y hacer side-loading de código.
Usuario estándar
No se eleva, pero se puede usar para phishing o C2 sin alertar al usuario.
10
Puerta trasera en software real
Reempaquetar un instalador legítimo con código malicioso, y usar RunAsInvoker
para disfrazar.
Usuario estándar
Técnica de trojanización, oculta actividades maliciosas tras un programa funcional.
Last updated