Active Directory Rights and Privileges
Los derechos y privilegios son fundamentales en la gestión de Active Directory (AD) y, si se administran incorrectamente, pueden ser fácilmente aprovechados por atacantes o penetration testers. Los derechos de acceso y privilegios son dos temas importantes en AD (y en infosec en general) y debemos entender la diferencia. Los Rights
(derechos) suelen asignarse a usuarios o grupos y se refieren a permisos para access
(acceder) a un objeto, como un archivo, mientras que los privileges
(privilegios) otorgan a un usuario permiso para perform an action
(realizar una acción), como ejecutar un programa, apagar un sistema, restablecer contraseñas, etc. Los privilegios pueden asignarse individualmente a los usuarios o conferirse a través de la pertenencia a grupos predeterminados o personalizados. Los equipos con Windows tienen un concepto llamado User Rights Assignment
, que, aunque se refiere a derechos, en realidad son tipos de privilegios otorgados a un usuario. Hablaremos de esto más adelante en esta sección. Debemos tener un firme entendimiento de las diferencias entre derechos y privilegios en un sentido más amplio y, en particular, cómo se aplican en un entorno de AD.
Built-in AD Groups
AD contiene muchos grupos de seguridad predeterminados o integrados, algunos de los cuales otorgan a sus miembros poderosos derechos y privilegios que pueden ser aprovechados para escalar privilegios dentro de un dominio y, en última instancia, obtener privilegios de Domain Admin o SYSTEM en un Domain Controller (DC). La membresía en muchos de estos grupos debe ser estrictamente gestionada, ya que la membresía/privilegios excesivos en los grupos es un fallo común en muchas redes AD que los atacantes buscan aprovechar. Algunos de los grupos integrados más comunes se enumeran a continuación.
Nombre del Grupo | Descripción |
---|---|
Account Operators |
Los miembros pueden crear y modificar la mayoría de los tipos de cuentas, incluidas las de usuarios, grupos locales y grupos globales, y los miembros pueden iniciar sesión localmente en controladores de dominio. No pueden gestionar la cuenta de Administrador, cuentas de usuario administrativas o miembros de los grupos Administrators, Server Operators, Account Operators, Backup Operators o Print Operators. |
Administrators |
Los miembros tienen acceso completo y sin restricciones a una computadora o a todo un dominio si están en este grupo en un Domain Controller. |
Backup Operators |
Los miembros pueden realizar copias de seguridad y restaurar todos los archivos de una computadora, independientemente de los permisos establecidos en los archivos. Los Backup Operators también pueden iniciar sesión y apagar la computadora. Los miembros pueden iniciar sesión en los DCs localmente y deben considerarse como Domain Admins. Pueden hacer copias de seguridad de la base de datos SAM/NTDS, que, si se toma, se puede usar para extraer credenciales y otra información valiosa. |
DnsAdmins |
Los miembros tienen acceso a la información de red DNS. El grupo solo se creará si el rol de servidor DNS está o estuvo instalado en un Domain Controller en el dominio. |
Domain Admins |
Los miembros tienen acceso completo para administrar el dominio y son miembros del grupo local de administradores en todas las máquinas unidas al dominio. |
Domain Computers |
Cualquier computadora creada en el dominio (excepto los controladores de dominio) se agrega a este grupo. |
Domain Controllers |
Contiene todos los DCs dentro de un dominio. Los nuevos DCs se agregan automáticamente a este grupo. |
Domain Guests |
Este grupo incluye la cuenta de invitado incorporada del dominio. Los miembros de este grupo tienen un perfil de dominio creado al iniciar sesión en una computadora unida al dominio como invitado local. |
Domain Users |
Este grupo contiene todas las cuentas de usuario en un dominio. Una nueva cuenta de usuario creada en el dominio se agrega automáticamente a este grupo. |
Enterprise Admins |
La membresía en este grupo proporciona acceso completo a la configuración dentro del dominio. El grupo solo existe en el dominio raíz de un bosque de AD. Los miembros de este grupo tienen la capacidad de realizar cambios a nivel de bosque, como agregar un dominio secundario o crear una relación de confianza. La cuenta de Administrador para el dominio raíz del bosque es el único miembro de este grupo por defecto. |
Event Log Readers |
Los miembros pueden leer los registros de eventos en computadoras locales. El grupo solo se crea cuando un host es promovido a Domain Controller. |
Group Policy Creator Owners |
Los miembros crean, editan o eliminan Objetos de Política de Grupo en el dominio. |
Hyper-V Administrators |
Los miembros tienen acceso completo y sin restricciones a todas las funciones de Hyper-V. Si hay DCs virtuales en el dominio, cualquier administrador de virtualización, como los miembros de Hyper-V Administrators, debe considerarse como Domain Admins. |
IIS_IUSRS |
Este es un grupo incorporado utilizado por Internet Information Services (IIS), comenzando con IIS 7.0. |
Pre–Windows 2000 Compatible Access |
Este grupo existe para la compatibilidad con versiones anteriores de computadoras que ejecutan Windows NT 4.0 y versiones anteriores. La membresía en este grupo a menudo es una configuración heredada residual. Puede llevar a fallos donde cualquier persona en la red puede leer información de AD sin requerir un nombre de usuario y contraseña válidos de AD. |
Print Operators |
Los miembros pueden gestionar, crear, compartir y eliminar impresoras conectadas a controladores de dominio en el dominio, junto con cualquier objeto de impresora en AD. Los miembros tienen permitido iniciar sesión en los DCs localmente y pueden ser utilizados para cargar un controlador de impresora malicioso y escalar privilegios dentro del dominio. |
Protected Users |
Los miembros de este grupo tienen protecciones adicionales contra el robo de credenciales y tácticas como el abuso de Kerberos. |
Read-only Domain Controllers |
Contiene todos los controladores de dominio de solo lectura en el dominio. |
Remote Desktop Users |
Este grupo se utiliza para otorgar a usuarios y grupos permiso para conectarse a un host a través de Remote Desktop (RDP). Este grupo no se puede renombrar, eliminar ni mover. |
Remote Management Users |
Este grupo se puede usar para otorgar acceso remoto a los usuarios a las computadoras a través de Windows Remote Management (WinRM). |
Schema Admins |
Los miembros pueden modificar el esquema de Active Directory, que es la forma en que se definen todos los objetos dentro de AD. Este grupo solo existe en el dominio raíz de un bosque de AD. La cuenta de Administrador para el dominio raíz del bosque es el único miembro de este grupo por defecto. |
Server Operators |
Este grupo solo existe en los controladores de dominio. Los miembros pueden modificar servicios, acceder a SMB shares y hacer copias de seguridad de archivos en controladores de dominio. Por defecto, este grupo no tiene miembros. |
A continuación, proporcionamos algunos resultados relacionados con Domain Admins y Server Operators.
Server Operators Group Details
PS C:\htb> Get-ADGroup -Identity "Server Operators" -Properties *
adminCount : 1
CanonicalName : INLANEFREIGHT.LOCAL/Builtin/Server Operators
CN : Server Operators
Created : 10/27/2021 8:14:34 AM
createTimeStamp : 10/27/2021 8:14:34 AM
Deleted :
Description : Members can administer domain servers
DisplayName :
DistinguishedName : CN=Server Operators,CN=Builtin,DC=INLANEFREIGHT,DC=LOCAL
dSCorePropagationData : {10/28/2021 1:47:52 PM, 10/28/2021 1:44:12 PM, 10/28/2021 1:44:11 PM, 10/27/2021
8:50:25 AM...}
GroupCategory : Security
GroupScope : DomainLocal
groupType : -2147483643
HomePage :
instanceType : 4
isCriticalSystemObject : True
isDeleted :
LastKnownParent :
ManagedBy :
MemberOf : {}
Members : {}
Modified : 10/28/2021 1:47:52 PM
modifyTimeStamp : 10/28/2021 1:47:52 PM
Name : Server Operators
nTSecurityDescriptor : System.DirectoryServices.ActiveDirectorySecurity
ObjectCategory : CN=Group,CN=Schema,CN=Configuration,DC=INLANEFREIGHT,DC=LOCAL
ObjectClass : group
ObjectGUID : 0887487b-7b07-4d85-82aa-40d25526ec17
objectSid : S-1-5-32-549
ProtectedFromAccidentalDeletion : False
SamAccountName : Server Operators
sAMAccountType : 536870912
sDRightsEffective : 0
SID : S-1-5-32-549
SIDHistory : {}
system
Flags : -1946157056
uSNChanged : 228556
uSNCreated : 12360
whenChanged : 10/28/2021 1:47:52 PM
whenCreated : 10/27/2021 8:14:34 AM
Como podemos ver arriba, el estado predeterminado del grupo Server Operators
es no tener miembros y ser un grupo local de dominio por defecto. En contraste, el grupo Domain Admins
que se muestra a continuación tiene varios miembros y cuentas de servicio asignadas a él. Domain Admins también son grupos Globales en lugar de locales de dominio. Más sobre la membresía de grupos se puede encontrar más adelante en este módulo. Ten cuidado con a quién, si es que a alguien, le das acceso a estos grupos. Un atacante podría fácilmente obtener las claves del sistema si obtiene acceso a un usuario asignado a estos grupos.
Domain Admins Group Membership
PS C:\htb> Get-ADGroup -Identity "Domain Admins" -Properties * | select DistinguishedName,GroupCategory,GroupScope,Name,Members
DistinguishedName : CN=Domain Admins,CN=Users,DC=INLANEFREIGHT,DC=LOCAL
GroupCategory : Security
GroupScope : Global
Name : Domain Admins
Members : {CN=htb-student_adm,CN=Users,DC=INLANEFREIGHT,DC=LOCAL, CN=sharepoint
admin,CN=Users,DC=INLANEFREIGHT,DC=LOCAL, CN=FREIGHTLOGISTICSUSER,OU=Service
Accounts,OU=Corp,DC=INLANEFREIGHT,DC=LOCAL, CN=PROXYAGENT,OU=Service
Accounts,OU=Corp,DC=INLANEFREIGHT,DC=LOCAL...}
User Rights Assignment
Dependiendo de su membresía actual en grupos, y otros factores como los privilegios que los administradores pueden asignar a través de Group Policy (GPO), los usuarios pueden tener varios derechos asignados a su cuenta. Este artículo de Microsoft sobre User Rights Assignment proporciona una explicación detallada de cada uno de los derechos de usuario que se pueden configurar en Windows. No todos los derechos listados aquí son importantes para nosotros desde el punto de vista de la seguridad como penetration testers o defensores, pero algunos derechos otorgados a una cuenta pueden llevar a consecuencias no deseadas, como la escalada de privilegios o el acceso a archivos sensibles. Por ejemplo, digamos que podemos obtener acceso de escritura sobre un Group Policy Object (GPO) aplicado a una OU que contiene uno o más usuarios que controlamos. En este ejemplo, podríamos aprovechar una herramienta como SharpGPOAbuse para asignar derechos específicos a un usuario. Podemos realizar muchas acciones en el dominio para ampliar nuestro acceso con estos nuevos derechos. Algunos ejemplos incluyen:
Privilege | Descripción |
---|---|
SeRemoteInteractiveLogonRight |
Este privilegio podría otorgar a nuestro usuario objetivo el derecho a iniciar sesión en un host a través de Remote Desktop (RDP), lo que podría potencialmente ser utilizado para obtener datos sensibles o escalar privilegios. |
SeBackupPrivilege |
Esto otorga a un usuario la capacidad de crear copias de seguridad del sistema y podría ser utilizado para obtener copias de archivos sensibles del sistema que se pueden usar para recuperar contraseñas como los SAM y SYSTEM Registry hives y el archivo de base de datos NTDS.dit de Active Directory. |
SeDebugPrivilege |
Esto permite a un usuario depurar y ajustar la memoria de un proceso. Con este privilegio, los atacantes podrían utilizar una herramienta como Mimikatz para leer el espacio de memoria del proceso Local System Authority (LSASS) y obtener cualquier credencial almacenada en memoria. |
SeImpersonatePrivilege |
Este privilegio nos permite suplantar un token de una cuenta privilegiada como NT AUTHORITY\SYSTEM . Esto podría ser aprovechado con una herramienta como JuicyPotato, RogueWinRM, PrintSpoofer, etc., para escalar privilegios en un sistema objetivo. |
SeLoadDriverPrivilege |
Un usuario con este privilegio puede cargar y descargar controladores de dispositivos que podrían ser utilizados para escalar privilegios o comprometer un sistema. |
SeTakeOwnershipPrivilege |
Esto permite que un proceso tome posesión de un objeto. En su nivel más básico, podríamos usar este privilegio para obtener acceso a un archivo compartido o a un archivo en un share que de otro modo no estaba accesible para nosotros. |
Hay muchas técnicas disponibles para abusar de los derechos de usuario detalladas aquí y aquí. Aunque fuera del alcance de este módulo, es esencial entender el impacto que puede tener la asignación incorrecta de un privilegio a una cuenta dentro de Active Directory. Un pequeño error de administración puede llevar a la completa compromisión de un sistema o empresa.
Viewing a User's Privileges
Después de iniciar sesión en un host, escribir el comando whoami /priv
nos dará una lista de todos los derechos de usuario asignados al usuario actual. Algunos derechos solo están disponibles para usuarios administrativos y solo se pueden listar/aprovechar cuando se ejecuta una sesión de CMD o PowerShell con privilegios elevados. Estos conceptos de derechos elevados y User Account Control (UAC) son características de seguridad introducidas con Windows Vista que, por defecto, restringen las aplicaciones para que no se ejecuten con permisos completos a menos que sea absolutamente necesario. Si comparamos y contrastamos los derechos disponibles para nosotros como administradores en una consola no elevada frente a una consola elevada, veremos que difieren drásticamente. Primero, veamos los derechos disponibles para un usuario estándar de Active Directory.
Standard Domain User's Rights
PS C:\htb> whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
============================= ============================== ========
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Disabled
Podemos ver que los derechos son muy limitados
y ninguno de los derechos "peligrosos" mencionados anteriormente está presente. A continuación, veamos un usuario privilegiado. A continuación se muestran los derechos disponibles para un usuario de Domain Admin.
Domain Admin Rights Non-Elevated
Podemos ver lo siguiente en una consola no elevada
, lo cual no parece ser más que lo disponible para un usuario estándar de dominio. Esto se debe a que, por defecto, los sistemas Windows no habilitan todos los derechos para nosotros a menos que ejecutemos la consola de CMD o PowerShell en un contexto elevado. Esto es para evitar que todas las aplicaciones se ejecuten con los privilegios más altos posibles. Esto está controlado por algo llamado User Account Control (UAC) que se cubre en profundidad en el módulo de Windows Privilege Escalation.
PS C:\htb> whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
============================= ==================================== ========
SeShutdownPrivilege Shut down the system Disabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeUndockPrivilege Remove computer from docking station Disabled
SeIncreaseWorkingSetPrivilege Increase a process working set Disabled
SeTimeZonePrivilege Change the time zone Disabled
Domain Admin Rights Elevated
Si ingresamos el mismo comando desde una consola de PowerShell elevada, podemos ver la lista completa de derechos disponibles para nosotros:
PS C:\htb> whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
========================================= ================================================================== ========
SeIncreaseQuotaPrivilege Adjust memory quotas for a process Disabled
SeMachineAccountPrivilege Add workstations to domain Disabled
SeSecurityPrivilege Manage auditing and security log Disabled
SeTakeOwnershipPrivilege Take ownership of files or other objects Disabled
SeLoadDriverPrivilege Load and unload device drivers Disabled
SeSystemProfilePrivilege Profile system performance Disabled
SeSystemtimePrivilege Change the system time Disabled
SeProfileSingleProcessPrivilege Profile single process Disabled
SeIncreaseBasePriorityPrivilege Increase scheduling priority Disabled
SeCreatePagefilePrivilege Create a pagefile Disabled
SeBackupPrivilege Back up files and directories Disabled
SeRestorePrivilege Restore files and directories Disabled
SeShutdownPrivilege Shut down the system Disabled
SeDebugPrivilege Debug programs Enabled
SeSystemEnvironmentPrivilege Modify firmware environment values Disabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeRemoteShutdownPrivilege Force shutdown from a remote system Disabled
SeUndockPrivilege Remove computer from docking station Disabled
SeEnableDelegationPrivilege Enable computer and
user accounts to be trusted for delegation Disabled
SeManageVolumePrivilege Perform volume maintenance tasks Disabled
SeImpersonatePrivilege Impersonate a client after authentication Enabled
SeCreateGlobalPrivilege Create global objects Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Disabled
SeTimeZonePrivilege Change the time zone Disabled
SeCreateSymbolicLinkPrivilege Create symbolic links Disabled
SeDelegateSessionUserImpersonatePrivilege Obtain an impersonation token for another user in the same session Disabled
Los derechos de los usuarios aumentan según los grupos en los que se colocan o los privilegios que se les asignan. A continuación se muestra un ejemplo de los derechos otorgados a un miembro del grupo Backup Operators
. Los usuarios de este grupo tienen otros derechos actualmente restringidos por UAC (derechos adicionales como el poderoso SeBackupPrivilege
no están habilitados por defecto en una sesión de consola estándar). Sin embargo, podemos ver en este comando que tienen el SeShutdownPrivilege
, lo que significa que pueden apagar un Domain Controller. Este privilegio por sí solo no podría usarse para obtener acceso a datos sensibles, pero podría causar una interrupción masiva del servicio si inician sesión en un Domain Controller localmente (no de forma remota a través de RDP o WinRM).
Backup Operator Rights
PS C:\htb> whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
============================= ============================== ========
SeShutdownPrivilege Shut down the system Disabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Disabled
Como atacantes y defensores, necesitamos comprender los derechos que se otorgan a los usuarios a través de la membresía en los grupos de seguridad integrados en Active Directory. No es raro encontrar usuarios aparentemente de bajo privilegio agregados a uno o más de estos grupos, lo que puede ser utilizado para acceder o comprometer el dominio. El acceso a estos grupos debe ser estrictamente controlado. Por lo general, es una mejor práctica dejar la mayoría de estos grupos vacíos y solo agregar una cuenta a un grupo si se necesita realizar una acción única o configurar una tarea repetitiva. Cualquier cuenta agregada a uno de los grupos discutidos en esta sección o a la que se le otorguen privilegios adicionales debe ser estrictamente controlada y monitoreada, asignada a una contraseña o frase de contraseña muy fuerte, y debe ser separada de una cuenta utilizada por un administrador de sistemas para realizar sus tareas diarias.
Ahora que hemos comenzado a tocar algunos aspectos de seguridad en AD relacionados con los privilegios de usuario y la membresía en grupos integrados, pasemos a algunos puntos clave para asegurar una instalación de Active Directory.