En la primera parte que puedes leer aquí se han mencionado algunos conceptos fundamentales sobre Active Directory, sin embargo se trata de una tecnología en la que hay muchos términos fundamentales que hay que entender antes de intentar montar un entorno de este tipo y hacer pruebas, por ese motivo en este segundo post continuaremos viendo algunos otros elementos básicos sobre Active Directory.
En el post anterior se ha explicado este concepto, pero además merece la pena mencionar que cada trust puede ser unidireccional o bidireccional y transitiva o no transitiva y además puede ser:
Jerárquica: Entre un dominio padre y uno hijo.
Forest: Un dominio en un forest puede acceder a recursos de otro dominio en otro forest.
Externa: Trust directa entre dominios de diferentes forest.
Realm: Conecta un AD con un dominio no-windows.
Shortcut: Cuando 2 dominios en el mismo forest se comunican constantemente pero no están conectados directamente, se puede crear este tipo de Trust para evitar “saltar” sobre diferentes Trusts.
Los objetos “Trust” pueden ser transitivos o no transitivos. La confianza no transitiva solamente afecta a los dos extremos de la relación (dominio confiable y dominio que confiá). Por otro lado, las relaciones de confianza transitivas pueden actuar
como un puente y ser utilizadas por un tercero para acceder a los recursos del dominio que confía. De esta manera, cualquier dominio en el Forest puede atravesar las relaciones de confianza y acceder a otros dominios en el mismo Forest, esto también es conocido como relaciones “intra-forest”.
Entre otras cosas, Active Directory gestiona los usuarios del entorno tratándolos como un tipo de objeto especial que se almacena en la base de datos central. A continuación se listan algunas cuestiones importantes a tener en cuenta sobre los usuarios de un dominio.
- Aunque el nombre de usuario sirve para identificarle, el SID (Security Identifier) también puede ser utilizado para dicho fin. El SID es la combinación del Domain SID y el RID (Relative Identifier). Algunas herramientas enseñan el SID en lugar del nombre de usuario, por ese motivo es importante saber esto.
- Los user secrets son elementos utilizados por el Domain Controller para realizar el proceso de autenticación. Las
contraseñas no se guardan en texto plano, pero los user secrets derivados de ellas sí, los cuales son Hashes NT y
claves Kerberos. - Los hashes LM y NT son almacenados en dos sitios: La SAM (Security Account Manager) de Windows y la base de
datos del AD, la cual por defecto se encuentra disponible en los DC en la ruta C:\Windows\NTDS\ntds.dit. - Aunque los hashes NT no son contraseñas, se pueden utilizar en algunos casos para ataques del tipo Pass-The-Hash/Overpass-The-Hash
- Los ordenadores registrados en un AD también están representados por una cuenta de usuario, la cual es el nombre de la estación de trabajo con un “$” al final.
- User Account Control es una de las propiedades de la clase User (no confundir con el mecanismo User Account Control para impedir la ejecución de programas en contextos elevados). Esta propiedad está compuesta por una serie de atributos que son relevantes para la seguridad de la cuenta de usuario y el dominio, especialmente relevante la propiedad DONT_REQUIRE_PREAUTH ya que significa que la cuenta no requiere preautenticación Kerberos.
- Probablemente las cuentas de usuario más importantes son Administrator y krbtgt. La primera tiene privilegios altos en el sistema y la segunda permite el cifrado de los tickets TGT, lo que significa que si un atacante compromete dicha cuenta podrá crear este tipo de tickets sin problema. A esta técnica se le conoce como Golden Ticket y se hablará más adelante de esto en otro post.
Del mismo modo que ocurre con los usuarios y ordenadores, los grupos son almacenados en la base de datos de AD y se pueden identificar por medio del atributo SID o SamAccountName. Uno de los grupos más importantes es el de Domain
Admins, por lo tanto, consultar cuáles son los usuarios que hacen parte de dicho grupo es importante para el atacante. Otro grupo importante es el de Enterprise Admins ya que permite que todos sus miembros tengan permisos de administrador en todo el Forest. A diferencia del Domain Admins el grupo EnterpriseAdmins está definido solo en el Root Domain del Forest. Otro detalle importante a tener en cuenta es el alcance de los grupos, estos son:
- Universal Groups: Grupos que tienen miembros del mismo forest y garantizan permisos en el forest y trusted forests. El grupo Enterprise Admins es un Universal Group.
- Global Groups: Grupos que tienen miembros del mismo dominio y garantizan permisos en el forest y trusted domains. El grupo Domain Admins es un Global Group.
- DomainLocal Groups: Puede tener miembros del dominio o cualquier trusted domain y garantiza permisos solo en el
dominio. El grupo Administrators es un DomainLocal Group.
La base de datos de un AD contiene todos los objetos que se encuentran disponibles en el entorno y se comparte/sincroniza con todos los DC. Por defecto, se encuentra ubicada en el fichero C:\Windows\NTDS\ntds.dit de cada DC. Por otro lado, la NTDS se caracteriza por dos cosas:
- Es una base de datos distribuida.
- Cuenta con una estructura basada en objetos y jerarquías de clases.
El elemento fundamental de la base de datos son las clases, las cuales están compuestas por un conjunto de propiedades y
relaciones de herencia. Las clases más importantes son: User, Computer y Group.
Con estos conceptos básicos es suficiente de momento, en las siguientes entradas se verá un poco más en detalle otras cuestiones importantes de un Active Directory por medio de ejemplos y ataques concretos.
Un saludo y Happy Hack!
Adastra.