Existen diferentes tipos de fidecomisos y diferentes formas en qeu se establecen, podrían ser automáticos, por ejemplo fidecomiso padre-hijo o un nodo raiz. Estas confianzas se establecen automaticamente dentro de un bosque o en los límites.
Cada confianza está representada por un objeto de dominio de confianza.
Tipos de confianza
La dirección de confianza
La direccion de acceso es inversa a la dirección de confianza. Un dominio confía en el dominio de confianza para permitir el acceso a sus recursos.
¿Qué es la política de grupo?
La política de grupo brinda la capacidad de administrar la configuración y los cambios de manera fácil y central en el dominio.
La política de grupos permite configurar los ajustes de seguridad como la política de contraseñas, politica de grupos.
Get list of GPO in current domain
PowerView
Get-NetGPO
General
### Shows a brief help about the cmdlet or topic
Get-Help Get-Help
Get-Help *
Get-Help process
Get-Help Get-Item -Full
Get-Help Get-Item -Examples
### Listing all cmdlets
Get-Command -CommandType cmdlet
Get a list of computers in the current domain
Powerview
Get-NetComputer
Se obtienen las maquinas miembros en este dominio, incluido el DC, los servidores y diferentes máquinas.
Recordar que lo mostrado son objetos de computadora:
Get-NetComputer -OperatingSystem "*Server 2016*"
Ver cuantas máquinas en el dominio son máquinas del servidor 2016
En alcance:
172.16.1.0/24 - 172.16.17.0/24
Enumera todos los comandos en la sesion actual
Get-Command -CommandType cmdlet
Politica de ejecución(Execution Policy)
Cuando se intenta ejecutar scripts de powershell, es posible que obtenga un error que indica que se está ejecutando scripts ha sido deshabilitado. Esto no es una medida de seguridad, esto solo existe para evitar que el usuario ejecute scripts accidentalmente. Hay varias formas de bypassear esto, y no se necesitan privilegios de administrador.
Una vez se haya escalado privilegios localmente o en otras máquinas se realiza una enumeración pero ahora intrusiva para buscar acceso de administrador local o de dominio.
Lateral Movement - PowerShell Remoting
One-to-one
Es un inicio de sesión interactivo a otra máquina en donde no se dejan las credenciales
PSSession
Enumeración de dominios usando BloodHound. BloodHound tiene la capacidad de mapear la ruta más corta, rutas entre diferentes entidades o definir relaciones interesantes.
BlooHound es preferentemente usado por el BlueTeam. Además suele ser muy ruidoso. Es mejor usar PowerView.
Generar comprimido para BloodHound
C:\AD\Tools\BloodHound-master\Ingestors\SharpHound.ps1
Invoke-BloodHound -CollectionMethod All -Verbose
To avoid detections like ATA
Los entornos empresariales están llenos de apliacaciones desarrolladas internamente como consolas de web, u otras herramientas y dispositivos de estas consolas web. En este caso se hace referencia de las herramientas de integración continua o gestión de compilación.
Jenkins es una de las herramientas de integración continua más utilizadas.
Se tiene un Jenkins ejecutándose en la máquina dcorp-ci(172.16.3.11). Recordar hacer un scaneo para obtener la IP de la máquina que posee el Jenkins.
Obs mía: ¿Esto se puede hacer con nmap y usando el comando para obtener las computadoras en el dominio?
En este caso en particular se verá la versión 2.138.2
Centrandonos en los problemas con los servicios y escalada de privilegios locales.
Si eliminamos el secuestro de dll, los problemas de servicio se pueden clasificar en 3 tipos:
Get services with unquoted paths and a space in their name
Get-ServiceUnquoted -Verbose
Vulnerabilidad de la ruta sin comillas, donde el bin path del servicio usa una ruta codificada y hay un espacio en el nombre que nos permite colocar un ejecutable.
Hay servicios donde podemos modificar su ruta binaria o cambiar los argumentos para que alteremos su funcionalidad.
Look for flow of credentials and privileges in your enviroment
Log events and most important, monitor the logs
Purple Teaming
Work culture and Architectural Changes
Detection and Defense - Domain Admins
Do not allow or limit login of DAs to any other machine other than the Domain Controllers. If logins to some servers is necessary, do not allow other administrators to login to that machine.
(Try to) Never run a service with a DA. Many credential theft protections which we are going to discuss soon are rendered useless in case of a service account.
Check out Temporary Group Membership! (Requires Privileged Access Management Feature to be enabled which can't be turned off later)
Trust Flow Across Forest
Se verán los ataques a través de la confianza del bosque, específicamente la confianza externa si recuerdan que nuestro dominio actual dólar policia tenía una confianza externa con una confianza bidireccional con ele dominio eurocorp.local, en los casos que se tiene una confianza bidireccional en la superficie, el flujo de trust se ve exactamente como un dominio de confianza, digamos que queremos acceder a este servicio de aplicación a través del límite de confianza.
Tan pronto el DC descubre que el servicio para el que se solicitó el TGS está en un bosque de confianza, luego presenta el TGS al bosque del destino
Once again, we requiere the trust key for the inter-forest trust.
Invoke-Mimikatz -Command '"lsadump::trust /patch"'
Invoke-Mimikatz -Command '"lsadump::lsa /patch"'
Priv Esc - DNSAdmins
It is possible for the members of the DNSAdmins group to load arbitrary
In case the DC also serves as DNS, this will provide us escalation to DA
Need privileges to restart the DNS service
Enumerate the members of the DNSAdmins group using PowerView
Get-NetGroupMember -GroupName "DNSAdmins"
Using ActiveDirectory module
Priv Esc - Kerberos Delegation
Kerberos Delegation allows to "reuse the end-user credentials to access resources hosted on a different server".
This is typically useful in multi-tier service or applications where Kerberos Double Hop is required
For example, users authenticates to a web server and web server makes request to a database server. The web server can request access to resources(all or some resources depending on the type of delegation) on the database server as the user and not as the web server's service account.
Please note that, for the above example, the service account for web service must be trusted for delegation to be able to make requests as a user.
¿Qué es Kerberos Delegation?
Supongamos que este es un escenario al que Microsoft se enfrentó mientras alguien intentaba acceder a un recurso en un dominio, entonces, ¿qué pasa con los clientes de Microsoft que quieren hacer lo siguiente? Que un usuario se autentique en un servidor web en particular. Dependiendo de los privilegios del usuario se le mostrará información específica. La información que el usuario quiere ver se almacena en un servidor de base de datos, ahora si desea usar la auteticacion de kerberos para que algún usuario(Joe) se autentique en el servidor web, debería solo ver la información de la base de datos que sus privilegios le permiten. Ahora ¿cómo sabría el servidor de la base de datos que el servidor web necesita la información para un usuario en particular llamado Joe? Hablando de la autenticacion de kerberos, el servidor web debe tener alguna forma de hacerse pasar por Joe y autenticarse en el servidor de la base de datos como Joe. De manera similar con el registro de un usuario Administrador y su autenticación, es aquí en donde está el problema, "El clásico doble salto de Kerberos", el primer salto es donde el usuario se autentica no se le permite delegar credenciales a un segundo salto u otro servidor. Este es el clásico problema de doble operación de kerberos y para resolver este problema para que los usuarios puedan autenticarse en un servicio en particular y ese servicio pueda suplantar a ese usuario para múltiples acceso a múltiples cajas se llama derecho de delegación, este es el problema por el cual la delegación se introdujo una vez más, por lo que el problema está claro. El problema es que si un usuario se conecta a un sitio web, el servidor web debe tener la capacidad de suplantar a ese usuario para que pueda autenticarse en otras máquinas a las que el entrante no puede acceder directamente. Debería poder autenticarse en otras máquinas o conectarse a otras máquinas como ese usuario derecho que está suplantando a ese usuario ahora, esta fue la solución del problema.
Priv Esc - Kerberoast
Después del paso 4 cuando el KDC responde con el TGS que es ciframos la cuenta de servicios de destino en NTLM hash que es el final del paso 4. En un flujo de trabajo normal, respondemos, nosotros presente ese TGS en particular al servidor de aplicaciones, ese es el flujo normal de trabajo, recibimos un TGS que está encriptado con los servicios de destino y luego lo presentamos al ticket para el servicio, ¿y si no presentamos ese TGS al servicio en el final del paso 4 pero guardamos ese TGS en el disco y se realiza fuerza bruta offline?
El TGS tiene una parte del servidor del servidor que está encriptada con la cuenta de servicio útil de contraseña o el hash NTLM del servicio de cuenta, esto hace posible guardarlo en el disco y fuerza bruta offline. AHora, por qué está offline no tiene bloqueo y podemos arrojar cualquier recursoque tengamos en él podemos exfiltrar el TGS.
Hay un problema con el ataque de kerberoast, aunque lo que estamos haciendo cuando guardamos los TGS en el disco y usemos fuerza bruta ¿Cómo hacemos fuerza bruta offline?
POdemos descrifrar el ticket, ahora si apuntamos a una cuenta de servicio que es una cuenta máquina, lo que estamos buscando es tratar de obtener la contraseña de texto sin cifrar de una cuenta de servicio. Las contraseñas de cuenta de máquina no lo son Enviado establecido por humanos. Las contraseñas de cuentas máquinas son establecidas por máquinas y las máquinas son buenas para las contraseñas. ES casi imposible adivinar la contraseña cuenta de una máquina, por lo tanto lo que haremos en el caso de un host encubierto se centrará especificamente solo en las cuentas de usuario, solo en aquellas cuentas de usuario que se utilizan como cuentas de servicio.
Persistence - Silver Ticket
Obs: Recordar que casi cada paso en el flujo de kerberos es abusable.
¿Cómo funciona un boleto plateado?
Podemos ver que en el paso 5 cuando recibimos un TGS encriptado usando un destino de servicio NTLM Hash, se enviaba al servidor de aplicaciones.
Ahora, en caso de un boleto dorado, la clave era el hash de la cuenta krbtgt. En este caso ¿cuál es el ancla de confianza o la clave hash? Es el hash NTLM de la contraseña de la cuenta de servicio o la coincidencia completa de la cuenta de servicio.
Sobre Kerberos
Digamos que queremos acceder al Servidor de Aplicaciones(AS) desde la máquina cliente perteneciente al AD.
Nuestro Cliente envia una solicitud o marca de tiempo al KDC/DC (Centro de distribucion de claves) cuya marca de tiempo está encriptada y firmada con el hash ntlm de la contraseña del usuario. Esto es para afirmar que la solicitud en realidad proviene del usuario del que dice ser, por lo que, la marca de tiempo(timestap) se envía al kdc o al dc y se cifra con el hash ntlm de la contraseña del usuario.
El DC al final del paso 1, el controlador de dominio lo recibe y descifra el timestap encriptado, ¿cómo puede descifrarlo el controlador de dominio? Porque el controlador de dominio tiene acceso a todos los hashes en el dominio, el dc descifra la marca de tiempo encriptada, asegura que esta solicitud proviene realmente del usuario que dice ser, y luego responde con un TGT.
Ahora el TGT, que es un boleto se envía al cliente, este boleto está encriptado y firmado con el hash ntlm de una cuenta especial del controlador del dominio llamada krbtgt. Esta cuenta en particular se usa específicamente para este propósito, al final del paso 2, el cliente recibe el TGT y envía el TGT de regreso al DC porque el cliente no puede recoger el TGT dado que está encriptado con el hash NTLM o rc4 de la contraseña krbtgt que el cliente no tiene, solo el dc o los DC tendrán eso.
Learning Objective 13
Modify security descriptors on dcorp-dc to get access using PowerShell remoting and WMI without requiring administrator access.
Retrieve machine account hash from dcorp-dc without using administrator access and use that to execute a Silver Ticket attack to get code execution with WMI.
Solución
Una vez que tenemos privilegios administrativos en una máquina, podemos modificar los descriptores de seguridad de los servicios para acceder a los servicios sin privilegios administrativos.
Task
Find a server in the dcorp domain where Unconstrained Delegation is enabled.
Access that server, wait for a Domain Admin to connect to that server and get Domain Admin privileges.
Solución:
Primero tenemos que encontrar un servidor que tenga activada la delegación sin restricciones:
PS C:\AD\Tools> Get-NetComputer -Unconstrained | select -ExpandProperty name