Usuarios
Propiedades de Usuarios
Identificadores de Usuarios
El objeto de usuario almacena muchos datos diferentes, pero los primeros atributos a tener en cuenta son los que nos permiten identificar a un usuario.
Para identificar a un usuario generalmente se usa el nombre de usuario, que se almacena en el atributo SamAccountName. Además, el SID (Identificador de seguridad) también se puede utilizar para identificar al usuario.
El SID del usuario es similar al SID del dominio y, de hecho, es la combinación del SID del dominio más el RID (Identificador relativo) del usuario, que es el último número que aparece en el SID del usuario

Ademas el valor DistinguishedName lo utiliza la API de LDAP para identificar objetos.
Secretos de Usuarios
Además, la base de datos también necesita almacenar los secretos del usuario para permitir que el controlador de dominio autentique al usuario. La password de usuario no se almacena en texto sin formato, pero se guardan los siguientes secretos derivados de ella:
Hash NT (y hash LM para las cuentas mas antiguas)
Claves Kerberos
NOTA: Los usuarios que no son administradores no pueden recuperar los secretos de los usuarios. Ni siquiera las computadoras del dominio pueden acceder a ellos. ya que estos secretos se encuentran en "C:\Windows\NTDS\ntds.dit" del Controlador de Dominio

LM/NT Hashes
Los hashes de LM y NT se almacenan en las bases de datos SAM local de Windows y NTDS de Active Directory para autenticar a los usuarios locales y de dominio, respectivamente. Estos hashes, tanto LM como NT, tienen una longitud de 16 bytes.
Muchas herramientas le permiten extraer los hash LM y NT, y normalmente devuelven un resultado con varias líneas, una por usuario, con el formato <username>:<rid>:<LM>:<NT>:::
Es importante que un pentester reconozca los hash de NT ya que, aunque no sean las contraseñas de usuario, se utilizan para autenticarse en máquinas Windows, por lo que son muy útiles. Se pueden utilizar para realizar ataques Pass-the-Hash o Overpass-the-Hash para hacerse pasar por usuarios en máquinas remotas.

Además, puede intentar descifrar los hash de LM y NT con hashcat para recuperar la contraseña original. Si tiene suerte y el hash LM está presente, esto debería ser rápido.

Aparte de los hashes LM/NT, se almacenan las claves Kerberos , derivadas de la contraseña del usuario y utilizadas en el protocolo de autenticación Kerberos.
Las claves de Kerberos se pueden usar para solicitar un vale de Kerberos que represente al usuario en la autenticación de Kerberos. Hay varias claves diferentes, y se usan diferentes para diferentes soportes de cifrado Kerberos:
Clave AES 256: Utilizada por el algoritmo AES256-CTS-HMAC-SHA1-96 . Este es el que suele utilizar Kerberos, y el que debería utilizar un pentester para evitar activar alarmas.
Clave AES 128: Utilizada por el algoritmo AES128-CTS-HMAC-SHA1-96 .
Clave DES: utilizada por el algoritmo obsoleto DES-CBC-MD5 .

Estas claves se pueden usar en un ataque Pass-The-Key para recuperar un ticket para el usuario suplantado. Luego, puede usar ese vale de Kerberos para autenticarse en diferentes servicios del dominio en nombre del usuario.
UserAccountControl
Una propiedad interesante de la clase de usuario es UserAccountControl (UAC) (no lo confunda con el mecanismo de control de cuentas de usuario para evitar la ejecución de programas elevados en máquinas con Windows).
La propiedad UserAccountControl contiene una serie de indicadores que son muy relevantes para la seguridad y el dominio y se utilizan en muchos ataques mencionados en esta publicación. Aquí están los más relevantes:
ACCOUNTDISABLE -> La cuenta está deshabilitada y no se puede usar.
DONT_REQUIRE_PREAUTH -> La cuenta no requiere autenticación previa de Kerberos.
NOT_DELEGATED -> Esta cuenta no se puede delegar a través de la delegación de Kerberos.
TRUSTED_FOR_DELEGATION -> La delegación sin restricciones de Kerberos está habilitada para esta cuenta y sus servicios. Se requiere SeEnableDelegationPrivilege para modificarlo.
TRUSTED_TO_AUTH_FOR_DELEGATION -> La extensión Kerberos S4U2Self está habilitada para esta cuenta y sus servicios. Se requiere SeEnableDelegationPrivilege para modificarlo
Otras propiedades de usuario
Hay otras propiedades que pueden ser útiles en un pentest:
Descripción -> Una descripción del usuario. Puede dar una idea de los permisos del usuario y, en ocasiones, incluso incluye la contraseña.
AdminCount -> Indica si el usuario (o grupo) está protegido por el objeto AdminSDHolder , o lo ha estado. Como a veces no se actualiza, utilícelo solo como referencia.
MemberOf -> Grupos de los que el usuario es miembro. Esta propiedad es lógica y se genera a partir de la propiedad Miembros del grupo .
PrimaryGroupID -> El grupo principal del usuario. Este grupo no aparece en la propiedad MemberOf .
ServicePrincipalName -> Servicios del usuario. Puede ser útil para el ataque Kerberoast.
msDS-AllowedToDelegateTo -> La lista de servicios para los que el usuario (y sus propios servicios) pueden hacerse pasar por clientes mediante la delegación restringida de Kerberos. Se requiere SeEnableDelegationPrivilege para modificarlo.
Cuentas de usuario Importantes
El usuario integrado Administratores la cuenta con más privilegios del dominio . Puede realizar cualquier acción en cualquier computadora. Entonces, si puede comprometer esta cuenta, puede tener el control total del dominio(e incluso del bosque mediante the SID history attack)
La cuenta KRBTGT también es muy importante. Sus secretos (NT hash y claves Kerberos) se utilizan para cifrar los tickets (concretamente los TGT) utilizados por Kerberos que permiten autenticar a los usuarios. Si puede comprometer la cuenta KRBTGT, podrá crear Golden Tickets . Por lo general, esta cuenta solo puede verse comprometida al volcar la base de datos del dominio, ya que solo se usa en los controladores de dominio, lo que requerirá que tenga privilegios de administrador en el dominio.
Computer Account
Otra cosa a tener en cuenta es que en una organización, cada persona tiene su propio usuario, e incluso ciertas personas como el departamento de TI pueden tener más de un usuario por persona para realizar diferentes tareas. Además, también cada computadora del dominio tiene su propio usuario , ya que también necesitan realizar sus propias acciones en el dominio, como por ejemplo, actualizar las Políticas de grupo, verificar las credenciales de los usuarios del dominio que iniciaron sesión en la computadora, etc.
La diferencia entre cuentas de usuario y cuentas de computadora es que las primeras se almacenan como instancias de la clase Usuario en la base de datos, mientras que las otras se almacenan como instancias de la clase Computadora (que es una subclase de la clase Usuario). Además, los nombres de las cuentas de la computadora son el nombre de host de la computadora terminado con un signo de dólar $.
Además, los objetos de la computadora también guardaron información sobre su sistema operativo.
Tambien, muchas organizaciones tienen reglas para elegir el nombre de las computadoras, así como los usuarios, por lo que si puede entender los nombres, puede estar al tanto del uso de la computadora y las cuentas de usuario y cuál de ellos puede ser privilegiados o contienen acceso a información sensible. Además, puede verificar otros atributos de los objetos Descriptionpara encontrar más información allí (e incluso passwords de texto sin cifrar).
Trust Account
Cuando se establece una confianza, se crea un objeto de usuario asociado en cada dominio para almacenar la clave de confianza. El nombre del usuario es el nombre NetBIOS del otro dominio, terminado en $ (similar al nombre de una cuenta de computadora). Por ejemplo, en el caso de la confianza entre los dominios FOO y BAR, el dominio FOO almacenaría la clave de confianza en el usuario BAR$ y el dominio BAR la almacenaría en el usuario FOO$
Este objeto de usuario se usa para almacenar las claves de confianza, que son las claves hash de NT o Kerberos (se usa una u otra dependiendo del contexto).Si puede obtener los secretos de esta cuenta, puede crear tickets de Kerberos entre reinos(a este ataque se le puede llamar Across Domain using Trust Key).
Last updated