
Rutas de explotación que te permiten (mal)usar los Privilegios de Windows para elevar tus derechos dentro del SO.
La idea es "traducir" los privilegios del sistema operativo Windows a una ruta que lleve a:
Los privilegios se enumeran y explican en: https://learn.microsoft.com/en-us/windows/win32/secauthz/privilege-constants
Si el objetivo se puede alcanzar de múltiples formas, la prioridad es:
Puede verificar sus propios privilegios con whoami /priv. Los privilegios deshabilitados son tan válidos como los habilitados. Lo único importante es si tiene el privilegio en la lista o no.
Nota 1: Siempre que la ruta de ataque termine con la creación de un token, puede asumir que el siguiente paso es crear un nuevo proceso usando dicho token y luego tomar el control del sistema operativo.
Nota 2:
a. Para llamar directamente a NtQuerySystemInformation()/ZwQuerySystemInformation(), puede encontrar los privilegios necesarios aquí.
b. Para NtSetSystemInformation()/ZwSetSystemInformation(), los privilegios necesarios se enumeran aquí.
Nota 3: Me centro únicamente en el sistema operativo. Si un privilegio funciona en AD pero no en el propio sistema operativo, lo describo como no utilizado en el sistema operativo. Sería bueno que alguien profundizara en escenarios orientados a AD.
Siéntase libre de contribuir y/o discutir las ideas presentadas.
Créditos:
| Privilegio | Impacto | Herramienta | Ruta de ejecución | Comentarios |
|---|
SeAssignPrimaryToken | Admin | Herramienta de terceros | "Permitiría a un usuario suplantar tokens y escalar privilegios a nt system usando herramientas como potato.exe, rottenpotato.exe y juicypotato.exe" | Gracias a Aurélien Chalot por la actualización. Intentaré reformularlo con una receta más clara pronto. |
SeAudit | Amenaza | Herramienta de terceros | Escribir eventos en el registro de eventos de seguridad para engañar a la auditoría o sobrescribir eventos antiguos. | Es posible escribir eventos propios mediante la API Authz Report Security Event.- ver PoC por @daem0nc0re |
SeBackup | Admin | Herramienta de terceros | 1. Realizar una copia de seguridad de las colmenas del registro HKLM\SAM y HKLM\SYSTEM 2. Extraer los hashes de las cuentas locales de la base de datos SAM 3. Pass-the-Hash como miembro del grupo local Administrators Alternativamente, puede usarse para leer archivos sensibles. | Para más información, consulte el archivo SeBackupPrivilege.- ver PoC por @daem0nc0re |
SeChangeNotify | Ninguno | - | - | Privilegio que posee todo el mundo. Revocarlo puede hacer que el sistema operativo (Windows Server 2019) no arranque. |
SeCreateGlobal | ? | ? | ? | |
SeCreatePagefile | Ninguno | Comandos integrados | Crear hiberfil.sys, leerlo sin conexión y buscar datos sensibles. | Requiere acceso sin conexión, lo que de todos modos conduce a derechos de administrador. - Ver PoC por @daem0nc0re |
SeCreatePermanent | ? | ? | ? | |
SeCreateSymbolicLink | ? | ? | ? | |
SeCreateToken | Admin | Herramienta de terceros | Crear un token arbitrario, incluidos derechos de administrador local, con NtCreateToken.- ver PoC por @daem0nc0re | |
SeDebug | Admin | PowerShell | Duplicar el token de lsass.exe. | Script disponible en FuzzySecurity. - Ver PoC por @daem0nc0re |
SeDelegateSession-UserImpersonate | ? | ? | ? | Nombre del privilegio dividido para que la columna sea estrecha. |
SeEnableDelegation | Ninguno | - | - | El privilegio no se utiliza en el sistema operativo Windows. |
SeImpersonate | Admin | Herramienta de terceros | Herramientas de la familia Potato (potato.exe, RottenPotato, RottenPotatoNG, Juicy Potato, SweetPotato, RemotePotato0), RogueWinRM, PrintSpoofer, etc. | Al igual que SeAssignPrimaryToken, permite por diseño crear un proceso bajo el contexto de seguridad de otro usuario (usando un identificador de un token de dicho usuario). Se pueden usar múltiples herramientas y técnicas para obtener el token requerido. |
SeIncreaseBasePriority | Disponibilidad | Comandos integrados | start /realtime SomeCpuIntensiveApp.exe | Puede ser más interesante en servidores. |
SeIncreaseQuota | Disponibilidad | Herramienta de terceros | Cambiar los límites de CPU, memoria y caché a valores que hagan que el sistema operativo no arranque. | - Las cuotas no se verifican en modo seguro, lo que hace que la reparación sea relativamente fácil. - El mismo privilegio se utiliza para gestionar cuotas del registro. |
SeIncreaseWorkingSet | Ninguno | - | - | Privilegio que posee todo el mundo. Se verifica al llamar a funciones de ajuste fino de la gestión de memoria. |
SeLoadDriver | Admin | Herramienta de terceros | 1. Cargar un controlador de kernel defectuoso, como szkg64.sys2. Explotar la vulnerabilidad del controlador Alternativamente, el privilegio puede usarse para descargar controladores relacionados con la seguridad con el comando integrado fltMC. Por ejemplo: fltMC sysmondrv | 1. La vulnerabilidad de szkg64 está listada como CVE-2018-157322. El código de exploit para szkg64 fue creado por Parvez Anwar |
SeLockMemory | Disponibilidad | Herramienta de terceros | Agotar la partición de memoria del sistema moviendo páginas. | PoC publicado por Walied Assar (@waleedassar) |
SeMachineAccount | Ninguno | - | - | El privilegio no se utiliza en el sistema operativo Windows. |
SeManageVolume | Admin | Herramienta de terceros | 1. Habilitar el privilegio en el token 2. Crear un identificador a \.\C: con SYNCHRONIZE | FILE_TRAVERSE3. Enviar el FSCTL_SD_GLOBAL_CHANGE para reemplazar S-1-5-32-544 con S-1-5-32-5454. Sobrescribir utilman.exe, etc. | FSCTL_SD_GLOBAL_CHANGE se puede realizar con este fragmento de código. |
SeProfileSingleProcess | Ninguno | - | - | El privilegio se verifica antes de cambiar (y en un conjunto muy limitado de comandos, antes de consultar) los parámetros de Prefetch, SuperFetch y ReadyBoost. El impacto podría necesitar ajuste, ya que el efecto real no se conoce. |
SeRelabel | Amenaza | Herramienta de terceros | Modificación de archivos del sistema por parte de un administrador legítimo | Ver: documentación de MIC Las etiquetas de integridad proporcionan protección adicional, además de las conocidas ACL. Dos escenarios principales incluyen: - protección contra ataques que utilizan aplicaciones explotables como navegadores, lectores de PDF, etc. - protección de archivos del sistema operativo. La presencia de SeRelabel en el token permitirá usar el acceso WRITE_OWNER a un recurso, incluidos archivos y carpetas. Desafortunadamente, el token con IL menor que High tendrá el privilegio SeRelabel deshabilitado, lo que lo hace inútil para cualquiera que no sea ya administrador.Vea la excelente entrada de blog de @tiraniddo para más detalles. |
SeRemoteShutdown | Disponibilidad | Comandos integrados | shutdown /s /f /m \\server1 /d P:5:19 | El privilegio se verifica cuando la solicitud de apagado/reinicio proviene de la red. Escenario con 127.0.0.1 por investigar. |
SeReserveProcessor | Ninguno | - | - | Parece que el privilegio ya no se utiliza y solo apareció en un par de versiones de winnt.h. Puede verlo listado, por ejemplo, en el código fuente publicado por Microsoft aquí. |
SeRestore | Admin | PowerShell | 1. Iniciar PowerShell/ISE con el privilegio SeRestore presente. 2. Habilitar el privilegio con Enable-SeRestorePrivilege). 3. Renombrar utilman.exe a utilman.old 4. Renombrar cmd.exe a utilman.exe 5. Bloquear la consola y presionar Win+U | El ataque puede ser detectado por algún software antivirus. Un método alternativo se basa en reemplazar los binarios de servicios almacenados en "Archivos de programa" usando el mismo privilegio. - ver PoC por @daem0nc0re |
SeSecurity | Amenaza | Comandos integrados | - Limpiar el registro de eventos de seguridad: wevtutil cl Security- Reducir el registro de seguridad a 20 MB para que los eventos se purguen pronto: wevtutil sl Security /ms:0- Leer el registro de eventos de seguridad para conocer los procesos, accesos y acciones de otros usuarios en el sistema. - Saber qué se registra para actuar sin ser detectado. - Saber qué se registra para generar una gran cantidad de eventos que purguen eficazmente los antiguos sin dejar evidencia obvia de limpieza. - Ver y cambiar las SACL de objetos (en la práctica: configuraciones de auditoría) | Ver PoC por @daem0nc0re |
SeShutdown | Disponibilidad | Comandos integrados | shutdown.exe /s /f /t 1 | Permite llamar a la mayoría de los niveles de NtPowerInformation(). Por investigar. Permite llamar a NtRaiseHardError() causando un BSOD inmediato y volcado de memoria, lo que potencialmente lleva a la divulgación de información sensible - ver PoC por @daem0nc0re |
SeSyncAgent | Ninguno | - | - | El privilegio no se utiliza en el sistema operativo Windows. |
SeSystemEnvironment | Desconocido | Herramienta de terceros | El privilegio permite usar NtSetSystemEnvironmentValue, NtModifyDriverEntry y otras llamadas al sistema para manipular variables UEFI. | El privilegio es necesario para ejecutar sysprep.exe. Adicionalmente: |
SeSystemProfile | ? | ? | ? | |
SeSystemtime | Amenaza | Comandos integrados | cmd.exe /c date 01-01-01cmd.exe /c time 00:00 | El privilegio permite cambiar la hora del sistema, lo que potencialmente puede provocar problemas de integridad en la pista de auditoría, ya que los eventos se almacenarán con fecha/hora incorrecta. - Tenga cuidado con los formatos de fecha/hora. Use siempre valores seguros si no está seguro. - A veces el nombre del privilegio usa "T" mayúscula y se denomina SeSystemTime. |
SeTakeOwnership | Admin | Comandos integrados | 1. takeown.exe /f "%windir%\system32"2. icacls.exe "%windir%\system32" /grant "%username%":F3. Renombrar cmd.exe a utilman.exe 4. Bloquear la consola y presionar Win+U | El ataque puede ser detectado por algún software antivirus. Un método alternativo se basa en reemplazar los binarios de servicios almacenados en "Archivos de programa" usando el mismo privilegio. - Ver PoC por @daem0nc0re |
SeTcb | Admin | Herramienta de terceros | Manipular tokens para incluir derechos de administrador local. | Código de muestra + ejecutable para crear tokens arbitrarios disponible en PsBits. |
SeTimeZone | Desastre | Comandos integrados | Cambiar la zona horaria. tzutil /s "Chatham Islands Standard Time" | |
SeTrustedCredManAccess | Amenaza | Herramienta de terceros | Volcar credenciales del Administrador de credenciales | Excelente entrada de blog de @tiraniddo. - ver PoC por @daem0nc0re |
SeUndock | Ninguno | - | - | El privilegio se habilita al desacoplar, pero nunca se ha observado que se verifique para conceder/denegar acceso. En la práctica, significa que realmente no se usa y no puede llevar a ninguna escalada. |
SeUnsolicitedInput | Ninguno | - | - | El privilegio no se utiliza en el sistema operativo Windows. |