notes - b0ySie7e
GithubPortafolioWrite-ups
  • 👋Bienvenido a mi blog
  • Introducción a la ciberseguridad
    • 📓¿Como inicio en la ciberseguridad?
  • Teoria y Conceptos
    • 📓Redes
      • Identificación de Dispositivos
      • Local Area Network (LAN)
      • Sub redes
      • Procolo ARP
      • Protocolo DHCP
    • 📓Pentesting
      • OSSTMM
      • OWASP
      • NCSC CAF
  • Sistemas Operativos
    • Linux
      • Comandos
    • Windows
      • Comandos
  • Enumeración
    • Enumeracion de red
      • Enumeracion de Hosts
      • Enumeracion de Puertos y servicios
    • FootPrinting
      • Domain Information
      • FTP
      • SMB
      • NFS
      • DNS
      • SMTP
      • IMAP-POP3
      • SNMP
      • MySQL
      • MSSQL
      • Oracle TNS
      • IPMI
      • Linux Remote Management Protocols
      • Windows Remote Management Protocols
    • Enumeración web
      • Uso de google dorks
      • Whois
      • Dig
      • Enumeraciónde subdominios
      • Enumeración automatizada
  • Hacking Web
    • Ataques Comunes
      • Fuzzing
      • Sub dominios
      • SQL Injection
      • Cross-Site Scripting
      • Local File Inclusion
      • Remote File Inclusion
      • File Upload Attacks
      • Command Injections
    • Otras explotaciones
  • Escalada de Privilegios
    • 📕Linux
      • Enumeración automatizada - Tools
      • Kernel Exploit
      • Sudo
      • SUID
      • Capabilities
      • Cron Jobs
      • Path
      • NFS
    • 📕Windows
      • Enumeración automatizada - Tools
      • Harvesting Passwords from Usual Spots
      • Other Quick Wins
      • Abusing Service Misconfigurations
      • Abusing dangerous privileges
      • Abusing vulnerable software
  • Guias y Herramientas
    • Git
    • Buffer Over Flow
    • MetaSploit
      • Introducción
      • Modules
      • Targets
      • Payloads
      • Encoders
      • Sessions
    • Nmap
    • Pivoting Tunneling Port Forwarning
      • Port Forwarding SSH
      • Pivoting Metasploit
      • Socat Redirection with a Reverse Shell
      • Socat Redirection with a Bind Shell
      • Others tools for pivoting
    • Transferencias de Archivos
      • Evading Detection
      • Linux File Transfer Methods
      • Miscellaneous File Transfer Methods
      • Transferring Files with Code
      • Windows File Transfer Methods
      • Otros
        • Usando ICMP
        • Usando ncat y tar
    • Shell y Payloads
      • Spawning shell interactiva
      • Conexión de RDP
    • Password Attacks
      • Cracking
      • Windows Local Password Attacks
      • Linux Local Password Attacks
      • Windows Lateral Movement
    • Fortinet
      • Configuración estática de Firewall
      • Licencia
      • Configuración de interfaces
      • Primera política
      • Rutas estaticas
  • Red Team Path - THM
    • Enumeración
      • Linux
      • Windows
    • Movimiento lateral
      • Movimiento Lateral
    • Pivoting
      • PortForwarining y pivoting
    • Host Evasion
      • Windows Internal
      • Introduccion a Windows
      • Abusing Windows Internal
      • Introducción a Antivirus
      • AV Evasion ShellCode
      • Principios de Ofuscación
      • Evasión de Firmas
      • Bypass UAC
      • Runtime Detection Evasion
      • Evading Logging and Monitoring
      • Living Off the Land
    • Networking Security Evasión
      • Network Security Solutions
      • Firewalls
      • Sandbox Evasion
    • Comprometiendo un directorio activo
      • Active Directory Basics
      • Breaching Active Directory
      • Enumerating Active Directory
      • Exploiting Active Directory
      • Persisting Active Directory
      • Credentials Harvesting
Con tecnología de GitBook
En esta página
  • Credential Injection
  • Windows frente a Linux
  • Runas explicadas(Runas Explained)
  • Siempre es DNS (It's Always DNS)
  • IP frente a nombres de host
  • Usando credenciales inyectadas
  • Enumeration through Microsoft Management Console
  • Consola de administración de Microsoft
  • Usuarios y computadoras
  • Beneficios
  • Desventajas
  • Enumeration through Command Prompt
  • Símbolo del sistema
  • Usuarios
  • Grupos
  • Política de contraseñas
  • Beneficios
  • Desventajas
  • Enumeration through PowerShell
  • PowerShell
  • Usuarios
  • Grupos
  • AD Objects
  • Dominios
  • Modificación de objetos AD
  • Beneficios
  • Desventajas
  • Enumeration through Bloodhound
  • Historia de Bloodhound
  • Sharphound
  • Bloodhound
  • Rutas de ataque
  • Session Data Only
  • Beneficios
  • Desventajas
  • Conclusion
  1. Red Team Path - THM
  2. Comprometiendo un directorio activo

Enumerating Active Directory

AnteriorBreaching Active DirectorySiguienteExploiting Active Directory

Última actualización hace 11 meses

Credential Injection

Antes de pasar a los objetos AD y la enumeración, hablemos primero sobre los métodos de inyección de credenciales. Desde la red Breaching AD, habrás visto que las credenciales a menudo se encuentran sin comprometer una máquina unida a un dominio. Es posible que técnicas de enumeración específicas requieran una configuración particular para funcionar.

Windows frente a Linux

"Si conoces al enemigo y te conoces a ti mismo, no debes temer los resultados de cien batallas. Si te conoces a ti mismo pero no al enemigo, por cada victoria obtenida también sufrirás una derrota". - Sun Tzu, El arte de la guerra.

Puede llegar increíblemente lejos realizando la enumeración de AD desde una máquina Kali. Aún así, si realmente quieres hacer una enumeración profunda e incluso explotarlo, necesitas comprender e imitar a tu enemigo. Por lo tanto, necesita una máquina con Windows. Esto nos permitirá utilizar varios métodos integrados para preparar nuestra enumeración y exploits. En esta red, exploraremos una de estas herramientas integradas, llamada binariarunas.exe .

Runas explicadas(Runas Explained)

¿Alguna vez encontró credenciales de AD pero no pudo iniciar sesión con ellas? ¡Runas puede ser la respuesta que has estado buscando!

En las evaluaciones de seguridad, a menudo tendrá acceso a la red y acaba de descubrir las credenciales de AD , pero no tendrá medios ni privilegios para crear una nueva máquina unida a un dominio. Por lo tanto, necesitamos la capacidad de usar esas credenciales en una máquina con Windows que controlemos.

Si tenemos las credenciales de AD en el formato de:, podemos usar Runas, un binario legítimo de Windows, para inyectar las credenciales en la memoria. El comando habitual de Runas se vería así:

runas.exe /netonly /user:<domain>\<username> cmd.exe

Veamos los parámetros:

  • /netonly : dado que no estamos unidos a un dominio, queremos cargar las credenciales para la autenticación de red pero no autenticarnos contra un controlador de dominio. Por lo tanto, los comandos ejecutados localmente en la computadora se ejecutarán en el contexto de su cuenta estándar de Windows, pero cualquier conexión de red se realizará utilizando la cuenta especificada aquí.

  • /usuario : aquí proporcionamos los detalles del dominio y el nombre de usuario. Siempre es una apuesta segura utilizar el nombre de dominio completo (FQDN) en lugar de sólo el nombre NetBIOS del dominio, ya que esto ayudará con la resolución.

  • cmd.exe : este es el programa que queremos ejecutar una vez inyectadas las credenciales. Esto se puede cambiar a cualquier cosa, pero la apuesta más segura es cmd.exe, ya que luego puedes usarlo para iniciar lo que quieras, con las credenciales inyectadas.

Una vez que ejecute este comando, se le pedirá que proporcione una contraseña. Tenga en cuenta que, dado que agregamos el parámetro /netonly, un controlador de dominio no verificará las credenciales directamente para que acepte cualquier contraseña. Aún necesitamos confirmar que las credenciales de red se cargaron exitosa y correctamente.

Nota: Si utiliza su propia máquina con Windows, debe asegurarse de ejecutar su primer símbolo del sistema como administrador. Esto inyectará un token de administrador en CMD. Si ejecuta herramientas que requieren privilegios administrativos locales desde su CMD generado por Runas, el token ya estará disponible. Esto no le otorga privilegios administrativos en la red, pero garantizará que cualquier comando local que ejecute se ejecutará con privilegios administrativos.

Siempre es DNS (It's Always DNS)

Nota: Estos siguientes pasos solo debes realizarlos si utilizas tu propia máquina con Windows para el ejercicio. Sin embargo, es un buen conocimiento aprender cómo actuar, ya que puede resultar útil en los ejercicios del equipo rojo.

Después de proporcionar la contraseña, se abrirá una nueva ventana del símbolo del sistema. Ahora todavía necesitamos verificar que nuestras credenciales estén funcionando. La forma más segura de hacerlo es incluir SYSVOL. Cualquier cuenta AD , sin importar sus privilegios, puede leer el contenido del directorio SYSVOL.

SYSVOL es una carpeta que existe en todos los controladores de dominio. Es una carpeta compartida que almacena los objetos de política de grupo (GPO) y la información junto con cualquier otro script relacionado con el dominio. Es un componente esencial para Active Directory ya que entrega estos GPO a todas las computadoras del dominio. Las computadoras unidas a un dominio pueden luego leer estos GPO y aplicar los correspondientes, realizando cambios de configuración en todo el dominio desde una ubicación central.

Antes de que podamos incluir SYSVOL, debemos configurar nuestro DNS . A veces tienes suerte y el DNS interno se configurará automáticamente a través de DHCP o la conexión VPN, pero no siempre (como esta red TryHackMe). Es bueno entender cómo hacerlo manualmente. Su apuesta más segura para un servidor DNS suele ser un controlador de dominio. Usando la IP del controlador de dominio, podemos ejecutar los siguientes comandos en una ventana de PowerShell:

$dnsip = "<DC IP>"
$index = Get-NetAdapter -Name 'Ethernet' | Select-Object -ExpandProperty 'ifIndex'
Set-DnsClientServerAddress -InterfaceIndex $index -ServerAddresses $dnsip

Por supuesto, 'Ethernet' será cualquier interfaz conectada a la red TryHackMe. Podemos verificar que DNS esté funcionando ejecutando lo siguiente:

C:\> nslookup za.tryhackme.com

Lo que ahora debería resolverse en la IP del DC , ya que aquí es donde se aloja el FQDN. Ahora que DNS está funcionando, finalmente podemos probar nuestras credenciales. Podemos usar el siguiente comando para forzar una lista basada en red del directorio SYSVOL:

C:\Tools>dir \\za.tryhackme.com\SYSVOL\
 Volume in drive \\za.tryhackme.com\SYSVOL is Windows
 Volume Serial Number is 1634-22A9

 Directory of \\za.tryhackme.com\SYSVOL

02/24/2022  09:57 PM    <DIR>          .
02/24/2022  09:57 PM    <DIR>          ..
02/24/2022  09:57 PM    <JUNCTION>     za.tryhackme.com [C:\Windows\SYSVOL\domain]
               0 File(s)              0 bytes
               3 Dir(s)  51,835,408,384 bytes free

No profundizaremos demasiado en el contenido de SYSVOL, pero tenga en cuenta que también es bueno enumerar su contenido, ya que puede haber algunas credenciales de AD adicionales escondidas allí.

IP frente a nombres de host

Pregunta: ¿Existe alguna diferencia entre _dir \\za.tryhackme.com\SYSVOLy dir \\<DC IP>\SYSVOL_por qué tanto alboroto por el DNS?

Hay una gran diferencia y se reduce al método de autenticación que se utiliza. Cuando proporcionamos el nombre de host, la autenticación de red intentará primero realizar la autenticación Kerberos . Dado que la autenticación Kerberos utiliza nombres de host integrados en los tickets, si proporcionamos la IP, podemos forzar que el tipo de autenticación sea NTLM. Si bien en apariencia esto no nos importa en este momento, es bueno comprender estas pequeñas diferencias, ya que pueden permitirte permanecer más sigiloso durante una evaluación del equipo Rojo. En algunos casos, las organizaciones estarán monitoreando los ataques OverPass y Pass-The-Hash. Forzar la autenticación NTLM es un buen truco para evitar la detección en estos casos.

Usando credenciales inyectadas

Ahora que hemos inyectado nuestras credenciales de AD en la memoria, aquí es donde comienza la diversión. Con la opción /netonly, todas las comunicaciones de red utilizarán estas credenciales inyectadas para la autenticación. Esto incluye todas las comunicaciones de red de las aplicaciones ejecutadas desde esa ventana del símbolo del sistema.

Enumeration through Microsoft Management Console

Consola de administración de Microsoft

  1. Presione Inicio

  2. Busque "Aplicaciones y funciones" y presione Intro

  3. Haga clic en Administrar funciones opcionales

  4. Haga clic en Agregar una característica

  5. Buscar "RSAT"

  6. Seleccione " RSAT: Servicios de dominio de Active Directory y herramientas de directorio ligeras" y haga clic en Instalar

Puede iniciar MMC usando el botón Inicio de Windows, buscando ejecutar y escribiendo MMC. Si ejecutamos MMC normalmente, no funcionará ya que nuestra computadora no está unida a un dominio y nuestra cuenta local no se puede usar para autenticarse en el dominio.

Aquí es donde entra en juego la ventana Runas de la tarea anterior. En esa ventana, podemos iniciar MMC, lo que garantizará que todas las conexiones de red MMC utilicen nuestras credenciales de AD inyectadas .

En MMC, ahora podemos adjuntar el complemento AD RSAT:

  1. Haga clic en Archivo -> Agregar o quitar complemento

  2. Seleccione y agregue los tres complementos de Active Directory

  3. Haga clic en los errores y advertencias.

  4. Haga clic derecho en Dominios y confianzas de Active Directory y seleccione Cambiar bosque

  5. Ingrese za.tryhackme.com como dominio raíz y haga clic en Aceptar

  6. Haga clic derecho en Sitios y servicios de Active Directory y seleccione Cambiar bosque

  7. Ingrese za.tryhackme.com como dominio raíz y haga clic en Aceptar

  8. Haga clic derecho en Usuarios y computadoras de Active Directory y seleccione Cambiar dominio

  9. Ingrese za.tryhackme.com como dominio y haga clic en Aceptar

  10. Haga clic derecho en Usuarios y computadoras de Active Directory en el panel izquierdo

  11. Haga clic en Ver -> Funciones avanzadas

Si todo hasta este punto funcionó correctamente, su MMC ahora debería apuntar y autenticarse en el dominio de destino:

Ahora podemos comenzar a enumerar información sobre la estructura AD aquí.

Usuarios y computadoras

Echemos un vistazo a la estructura de Active Directory. Para esta tarea, nos centraremos en los usuarios y las computadoras de AD . Expanda ese complemento y expanda el dominio za para ver la estructura de unidad organizativa (OU) inicial:

Echemos un vistazo al directorio de Personas. Aquí vemos que los usuarios se dividen según las unidades organizativas del departamento. Al hacer clic en cada una de estas OU se mostrarán los usuarios que pertenecen a ese departamento.

Al hacer clic en cualquiera de estos usuarios nos permitirá revisar todas sus propiedades y atributos. También podemos ver a qué grupos pertenece:

También podemos usar MMC para encontrar hosts en el entorno. Si hacemos clic en Servidores o Estaciones de trabajo, se mostrará la lista de máquinas unidas al dominio.

Si tuviéramos los permisos pertinentes, también podríamos usar MMC para realizar cambios directamente en AD , como cambiar la contraseña del usuario o agregar una cuenta a un grupo específico. Experimente con MMC para comprender mejor la estructura del dominio AD. Utilice la función de búsqueda para buscar objetos.

Beneficios

  • La GUI proporciona un método excelente para obtener una visión holística del entorno de AD.

  • Se puede realizar una búsqueda rápida de diferentes objetos AD .

  • Proporciona un método directo para ver actualizaciones específicas de objetos AD .

  • Si tenemos privilegios suficientes, podemos actualizar directamente los objetos AD existentes o agregar otros nuevos.

Desventajas

  • La GUI requiere acceso RDP a la máquina donde se ejecuta.

  • Aunque la búsqueda de un objeto es rápida, no se pueden recopilar propiedades o atributos de todo AD .

Enumeration through Command Prompt

Símbolo del sistema

Hay ocasiones en las que solo necesita realizar una búsqueda rápida y sucia de AD , y el símbolo del sistema lo respalda. El buen y confiable CMD es útil cuando quizás no tenga acceso RDP a un sistema, los defensores están monitoreando el uso de PowerShell y necesita realizar su enumeración de AD a través de un troyano de acceso remoto (RAT). Incluso puede resultar útil incorporar un par de comandos simples de enumeración de AD en su carga útil de phishing para ayudarle a obtener información vital que le ayudará a preparar el ataque final.

CMD tiene un comando incorporado que podemos usar para enumerar información sobre AD , es decirnet . El netcomando es una herramienta útil para enumerar información sobre el sistema local y AD . Veremos un par de cosas interesantes que podemos enumerar desde esta posición, pero esta no es una lista exhaustiva.

Nota: Para esta tarea tendrás que usar THMJMP1 y no podrás usar tu propia máquina virtual de Windows . Esto se explicará en los inconvenientes.

Usuarios

Podemos usar el netcomando para enumerar todos los usuarios en el dominio AD usando lauser subopción:

C:\>net user /domain
The request will be processed at a domain controller for domain za.tryhackme.com

User accounts for \\THMDC

-------------------------------------------------------------------------------
aaron.conway             aaron.hancock            aaron.harris
aaron.johnson            aaron.lewis              aaron.moore
aaron.patel              aaron.smith              abbie.joyce
abbie.robertson          abbie.taylor             abbie.walker
abdul.akhtar             abdul.bates              abdul.holt
abdul.jones              abdul.wall               abdul.west
abdul.wilson             abigail.cox              abigail.cox1
abigail.smith            abigail.ward             abigail.wheeler
[....]
The command completed successfully.

Esto nos devolverá todos los usuarios de AD y puede ser útil para determinar el tamaño del dominio para realizar más ataques. También podemos usar esta subopción para enumerar información más detallada sobre una única cuenta de usuario:

C:\>net user zoe.marshall /domain
The request will be processed at a domain controller for domain za.tryhackme.com

User name                    zoe.marshall
Full Name                    Zoe Marshall
Comment
User's comment
Country/region code          000 (System Default)
Account active               Yes
Account expires              Never

Password last set            2/24/2022 10:06:06 PM
Password expires             Never
Password changeable          2/24/2022 10:06:06 PM
Password required            Yes
User may change password     Yes

Workstations allowed         All
Logon script
User profile
Home directory
Last logon                   Never

Logon hours allowed          All

Local Group Memberships
Global Group memberships     *Domain Users         *Internet Access
The command completed successfully.

Nota: Si el usuario solo forma parte de una pequeña cantidad de grupos de AD , este comando podrá mostrarnos membresías de grupos. Sin embargo, normalmente, después de más de diez membresías en grupos, el comando no podrá enumerarlos a todos.

Grupos

Podemos usar el netcomando para enumerar los grupos del dominio usando la groupsubopción:

C:\>net group /domain
The request will be processed at a domain controller for domain za.tryhackme.com

Group Accounts for \\THMDC

-------------------------------------------------------------------------------
*Cloneable Domain Controllers
*DnsUpdateProxy
*Domain Admins
*Domain Computers
*Domain Controllers
*Domain Guests
*Domain Users
[...]
*Schema Admins
*Server Admins
*Tier 0 Admins
*Tier 1 Admins
*Tier 2 Admins
The command completed successfully.

Esta información puede ayudarnos a encontrar grupos específicos a los que dirigirnos para la ejecución de objetivos. También podríamos enumerar más detalles, como la pertenencia a un grupo, especificando el grupo en el mismo comando:

C:\>net group "Tier 1 Admins" /domain
The request will be processed at a domain controller for domain za.tryhackme.com

Group name     Tier 1 Admins
Comment

Members

-------------------------------------------------------------------------------
t1_arthur.tyler          t1_gary.moss             t1_henry.miller
t1_jill.wallis           t1_joel.stephenson       t1_marian.yates
t1_rosie.bryant
The command completed successfully.

Política de contraseñas

Podemos usar el netcomando para enumerar la política de contraseñas del dominio usando la accountssubopción:

C:\>net accounts /domain
The request will be processed at a domain controller for domain za.tryhackme.com

Force user logoff how long after time expires?:       Never
Minimum password age (days):                          0
Maximum password age (days):                          Unlimited
Minimum password length:                              0
Length of password history maintained:                None
Lockout threshold:                                    Never
Lockout duration (minutes):                           30
Lockout observation window (minutes):                 30
Computer role:                                        PRIMARY
The command completed successfully.

Esto nos proporcionará información útil como:

  • Duración del historial de contraseñas conservado. Es decir, cuántas contraseñas únicas debe proporcionar el usuario antes de poder reutilizar una contraseña anterior.

  • El umbral de bloqueo para intentos de contraseña incorrectos y durante cuánto tiempo estará bloqueada la cuenta.

  • La longitud mínima de la contraseña.

  • La edad máxima que pueden alcanzar las contraseñas indica si las contraseñas deben rotarse a intervalos regulares.

Esta información puede beneficiarnos si queremos realizar ataques adicionales de pulverización de contraseñas contra las otras cuentas de usuario que hemos enumerado. Puede ayudarnos a adivinar mejor qué contraseñas únicas debemos usar en el ataque y cuántos ataques podemos ejecutar antes de correr el riesgo de bloquear cuentas. Sin embargo, cabe señalar que si realizamos un ataque de distribución ciega de contraseñas, podemos bloquear cuentas de todos modos, ya que no verificamos cuántos intentos le quedaron a esa cuenta específica antes de ser bloqueada.

Beneficios

  • No se requieren herramientas adicionales o externas y el equipo azul a menudo no supervisa estos comandos simples.

  • No necesitamos una GUI para hacer esta enumeración.

  • VBScript y otros lenguajes de macros que se utilizan a menudo para cargas útiles de phishing admiten estos comandos de forma nativa, por lo que pueden usarse para enumerar información inicial sobre el dominio AD antes de que se diseñen cargas útiles más específicas.

Desventajas

  • Los netcomandos deben ejecutarse desde una máquina unida a un dominio. Si la máquina no está unida a un dominio, de forma predeterminada utilizará el dominio WORKGROUP.

  • Es posible que los netcomandos no muestren toda la información. Por ejemplo, si un usuario es miembro de más de diez grupos, no todos estos grupos se mostrarán en el resultado.

Enumeration through PowerShell

PowerShell

Usando nuestra terminal SSH , podemos actualizarla a una terminal PowerShell usando el siguiente comando:powershell

Usuarios

Podemos usar el Get-ADUsercmdlet para enumerar los usuarios de AD :

PS C:\> Get-ADUser -Identity gordon.stevens -Server za.tryhackme.com -Properties *

AccountExpirationDate                :
accountExpires                       : 9223372036854775807
AccountLockoutTime                   :
[...]
Deleted                              :
Department                           : Consulting
Description                          :
DisplayName                          : Gordon Stevens
DistinguishedName                    : CN=gordon.stevens,OU=Consulting,OU=People,DC=za,DC=tryhackme,DC=com
[...]

Los parámetros se utilizan para lo siguiente:

  • -Identidad – El nombre de la cuenta que estamos enumerando.

  • -Propiedades: qué propiedades asociadas con la cuenta se mostrarán, * mostrará todas las propiedades

  • -Servidor: como no estamos unidos a un dominio, tenemos que usar este parámetro para apuntar a nuestro controlador de dominio.

Para la mayoría de estos cmdlets, también podemos usar el -Filterparámetro que permite un mayor control sobre la enumeración y usar el Format-Tablecmdlet para mostrar resultados como los siguientes de forma ordenada:

PS C:\> Get-ADUser -Filter 'Name -like "*stevens"' -Server za.tryhackme.com | Format-Table Name,SamAccountName -A

Name             SamAccountName
----             --------------
chloe.stevens    chloe.stevens
samantha.stevens samantha.stevens
[...]
janice.stevens   janice.stevens
gordon.stevens   gordon.stevens

Grupos

Podemos usar el Get-ADGroupcmdlet para enumerar grupos de AD :

PS C:\> Get-ADGroup -Identity Administrators -Server za.tryhackme.com


DistinguishedName : CN=Administrators,CN=Builtin,DC=za,DC=tryhackme,DC=com
GroupCategory     : Security
GroupScope        : DomainLocal
Name              : Administrators
ObjectClass       : group
ObjectGUID        : f4d1cbcd-4a6f-4531-8550-0394c3273c4f
SamAccountName    : Administrators
SID               : S-1-5-32-544

También podemos enumerar la membresía del grupo usando el Get-ADGroupMembercmdlet:

PS C:\> Get-ADGroupMember -Identity Administrators -Server za.tryhackme.com


distinguishedName : CN=Domain Admins,CN=Users,DC=za,DC=tryhackme,DC=com

name              : Domain Admins
objectClass       : group
objectGUID        : 8a6186e5-e20f-4f13-b1b0-067f3326f67c
SamAccountName    : Domain Admins
SID               : S-1-5-21-3330634377-1326264276-632209373-512

[...]

distinguishedName : CN=Administrator,CN=Users,DC=za,DC=tryhackme,DC=com name              : Administrator
objectClass       : user
objectGUID        : b10fe384-bcce-450b-85c8-218e3c79b30fSamAccountName    : Administrator
SID               : S-1-5-21-3330634377-1326264276-632209373-500

AD Objects

Se puede realizar una búsqueda más genérica de cualquier objeto ADGet-ADObject utilizando el cmdlet. Por ejemplo, si buscamos todos los objetos AD que se cambiaron después de una fecha específica:

SSH PowerShell

PS C:\> $ChangeDate = New-Object DateTime(2022, 02, 28, 12, 00, 00)
PS C:\> Get-ADObject -Filter 'whenChanged -gt $ChangeDate' -includeDeletedObjects -Server za.tryhackme.com

Deleted           :
DistinguishedName : DC=za,DC=tryhackme,DC=com
Name              : za
ObjectClass       : domainDNS
ObjectGUID        : 518ee1e7-f427-4e91-a081-bb75e655ce7a

Deleted           :
DistinguishedName : CN=Administrator,CN=Users,DC=za,DC=tryhackme,DC=com
Name              : Administrator
ObjectClass       : user
ObjectGUID        : b10fe384-bcce-450b-85c8-218e3c79b30f

Si quisiéramos, por ejemplo, realizar un ataque de pulverización de contraseñas sin bloquear cuentas, podemos usar esto para enumerar las cuentas que tienen un badPwdCount mayor que 0, para evitar estas cuentas en nuestro ataque:

PS C:\> Get-ADObject -Filter 'badPwdCount -gt 0' -Server za.tryhackme.com
PS C:\>

Esto sólo mostrará resultados si uno de los usuarios de la red escribió mal su contraseña un par de veces.

Dominios

Podemos utilizar Get-ADDomainpara recuperar información adicional sobre el dominio específico:

PS C:\> Get-ADDomain -Server za.tryhackme.com

AllowedDNSSuffixes                 : {}
ChildDomains                       : {}
ComputersContainer                 : CN=Computers,DC=za,DC=tryhackme,DC=com
DeletedObjectsContainer            : CN=Deleted Objects,DC=za,DC=tryhackme,DC=com
DistinguishedName                  : DC=za,DC=tryhackme,DC=com
DNSRoot                            : za.tryhackme.com
DomainControllersContainer         : OU=Domain Controllers,DC=za,DC=tryhackme,DC=com
[...]
UsersContainer                     : CN=Users,DC=za,DC=tryhackme,DC=com

Modificación de objetos AD

Lo mejor de los cmdlets AD -RSAT es que algunos incluso le permiten crear objetos AD nuevos o modificar los existentes. Sin embargo, nuestro enfoque para esta red es la enumeración. Crear nuevos objetos o alterar los existentes se consideraría explotación de AD, lo cual se trata más adelante en el módulo AD.

Sin embargo, mostraremos un ejemplo de esto forzando el cambio de contraseña de nuestro usuario de AD usando elSet-ADAccountPassword cmdlet:

PS C:\> Set-ADAccountPassword -Identity gordon.stevens -Server za.tryhackme.com -OldPassword (ConvertTo-SecureString -AsPlaintext "old" -force) -NewPassword (ConvertTo-SecureString -AsPlainText "new" -Force)

Recuerde cambiar el valor de identidad y la contraseña de la cuenta que se le proporcionó para la enumeración en la página web del distribuidor en la Tarea 1.

Beneficios

  • Los cmdlets de PowerShell pueden enumerar mucha más información que los comandos net del símbolo del sistema.

  • Podemos especificar el servidor y el dominio para ejecutar estos comandos usando runas desde una máquina que no está unida al dominio.

  • Podemos crear nuestros propios cmdlets para enumerar información específica.

  • Podemos usar los cmdlets AD -RSAT para cambiar directamente objetos AD, como restablecer contraseñas o agregar un usuario a un grupo específico.

Desventajas

  • Los equipos azules suelen supervisar más PowerShell que el símbolo del sistema.

  • Tenemos que instalar las herramientas AD-RSAT o utilizar otros scripts potencialmente detectables para la enumeración de PowerShell .

Enumeration through Bloodhound

Historia de Bloodhound

Durante una cantidad significativa de tiempo, los jugadores del equipo rojo (y, desafortunadamente, los atacantes) tuvieron la ventaja. Tanto es así que Microsoft integró su propia versión de Bloodhound en su solución Advanced Threat Protection. Todo se redujo a la siguiente frase:

"Los defensores piensan en listas, los atacantes piensan en gráficos". - Desconocido

Bloodhound permitió a los atacantes (y ahora también a los defensores) visualizar el entorno AD en un formato gráfico con nodos interconectados. Cada conexión es un camino posible que podría aprovecharse para alcanzar una meta. Por el contrario, los defensores utilizaron listas, como una lista de administradores de dominio o una lista de todos los hosts del entorno.

Este pensamiento basado en gráficos abrió un mundo a los atacantes. Permitió un ataque en dos etapas. En la primera etapa, los atacantes realizarían ataques de phishing para obtener una entrada inicial para enumerar la información de AD . Esta carga útil inicial solía ser increíblemente ruidosa y el equipo azul la detectaría y la contenería antes de que los atacantes pudieran realizar cualquier acción aparte de filtrar los datos enumerados. Sin embargo, los atacantes ahora podrían utilizar estos datos fuera de línea para crear una ruta de ataque en formato gráfico, que muestre con precisión los pasos y saltos necesarios. Utilizando esta información durante la segunda campaña de phishing, los atacantes a menudo podían alcanzar su objetivo en minutos una vez que se lograba la infracción. A menudo es incluso más rápido de lo que le tomaría al equipo azul recibir su primera alerta. Este es el poder de pensar en gráficos, razón por la cual tantos equipos azules también han comenzado a utilizar este tipo de herramientas para comprender mejor su postura de seguridad.

Sharphound

A menudo escuchará a los usuarios referirse a Sharphound y Bloodhound indistintamente. Sin embargo, no son lo mismo. Sharphound es la herramienta de enumeración de Bloodhound. Se utiliza para enumerar la información de AD que luego se puede mostrar visualmente en Bloodhound. Bloodhound es la GUI real que se utiliza para mostrar los gráficos de ataque de AD. Por lo tanto, primero debemos aprender a usar Sharphound para enumerar AD antes de poder ver los resultados visualmente usando Bloodhound.

Hay tres coleccionistas de Sharphound diferentes:

  • Sharphound.ps1 : script de PowerShell para ejecutar Sharphound. Sin embargo, la última versión de Sharphound dejó de publicar la versión del script Powershell. Esta versión es buena para usar con RAT ya que el script se puede cargar directamente en la memoria, evadiendo los análisis AV en el disco.

  • Sharphound.exe : una versión ejecutable de Windows para ejecutar Sharphound.

  • AzureHound.ps1 : script de PowerShell para ejecutar instancias de Sharphound para Azure (servicios de computación en la nube de Microsoft). Bloodhound puede ingerir datos enumerados desde Azure para encontrar rutas de ataque relacionadas con la configuración de Azure Identity and Access Management.

Nota: sus versiones Bloodhound y Sharphound deben coincidir para obtener mejores resultados. Por lo general, se realizan actualizaciones en Bloodhound, lo que significa que los resultados antiguos de Sharphound no se pueden ingerir. Esta red fue creada usando Bloodhound v4.1.0. Asegúrese de utilizar esta versión con los resultados de Sharphound.

Al utilizar estos scripts recopiladores en una evaluación, existe una alta probabilidad de que estos archivos sean detectados como malware y generen una alerta al equipo azul. Aquí es nuevamente donde nuestra máquina Windows que no está unida a un dominio puede ayudar. Podemos usar el runascomando para inyectar las credenciales de AD y señalar a Sharphound a un controlador de dominio. Dado que controlamos esta máquina con Windows, podemos desactivar el AV o crear excepciones para archivos o carpetas específicos, lo cual ya se realizó en la máquina THMJMP1. Puede encontrar los archivos binarios de Sharphound en este host en elC:\Tools\ directorio. Usaremos la versión SharpHound.exe para nuestra enumeración, pero siéntete libre de jugar con las otras dos. Ejecutaremos Sharphound de la siguiente manera:

Sharphound.exe --CollectionMethods <Methods> --Domain za.tryhackme.com --ExcludeDCs

Parámetros explicados:

  • CollectionMethods: determina qué tipo de datos recopilaría Sharphound. Las opciones más comunes son Predeterminado o Todo. Además, dado que Sharphound almacena información en caché, una vez que se ha completado la primera ejecución, solo puede usar el método de recopilación de sesiones para recuperar nuevas sesiones de usuario para acelerar el proceso.

  • Dominio: aquí especificamos el dominio que queremos enumerar. En algunos casos, es posible que desee enumerar un dominio principal u otro dominio que confíe en su dominio existente. Puede indicarle a Sharphound qué dominio debe enumerarse modificando este parámetro.

  • Excluir DC: esto le indicará a Sharphound que no toque los controladores de dominio, lo que reduce la probabilidad de que la ejecución de Sharphound genere una alerta.

Usando su sesión SSH PowerShell de la tarea anterior, copie el binario Sharphound al directorio de Documentos de su usuario de AD:

PS C:\> copy C:\Tools\Sharphound.exe ~\Documents\
PS C:\> cd ~\Documents\
PS C:\Users\gordon.stevens\Documents>

Ejecutaremos Sharphound utilizando los métodos de recopilación All y Session:

PS C:\Users\gordon.stevens\Documents\>SharpHound.exe --CollectionMethods All --Domain za.tryhackme.com --ExcludeDCs
2022-03-16T19:11:41.2898508+00:00|INFORMATION|Resolved Collection Methods: Group, LocalAdmin, GPOLocalGroup, Session, LoggedOn, Trusts, ACL, Container, RDP, ObjectProps, DCOM, SPNTargets, PSRemote
2022-03-16T19:11:41.3056683+00:00|INFORMATION|Initializing SharpHound at 7:11 PM on 3/16/2022
2022-03-16T19:11:41.6648113+00:00|INFORMATION|Flags: Group, LocalAdmin, GPOLocalGroup, Session, LoggedOn, Trusts, ACL, Container, RDP, ObjectProps, DCOM, SPNTargets, PSRemote
2022-03-16T19:11:41.8211318+00:00|INFORMATION|Beginning LDAP search for za.tryhackme.com
[....]
2022-03-16T19:12:31.6981568+00:00|INFORMATION|Output channel closed, waiting for output task to complete
Closing writers
2022-03-16T19:12:32.2605943+00:00|INFORMATION|Status: 2163 objects finished (+2163 43.26)/s -- Using 85 MB RAM
2022-03-16T19:12:32.2605943+00:00|INFORMATION|Enumeration finished in 00:00:50.4369344
2022-03-16T19:12:32.5418517+00:00|INFORMATION|SharpHound Enumeration Completed at 7:12 PM on 3/16/2022! Happy Graphing!

Sharphound tardará aproximadamente 1 minuto en realizar la enumeración. En organizaciones más grandes, esto puede llevar bastante más tiempo, incluso horas, para ejecutarlo por primera vez. Una vez completado, tendrá un archivo ZIP con marca de tiempo en la misma carpeta desde la que ejecutó Sharphound.

PS C:\Users\gordon.stevens\Documents> dir

    Directory: C:\Users\gordon.stevens\Documents

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        3/16/2022   7:12 PM         121027 20220316191229_BloodHound.zip
-a----        3/16/2022   5:19 PM         906752 SharpHound.exe
-a----        3/16/2022   7:12 PM         360355 YzE4MDdkYjAtYjc2MC00OTYyLTk1YTEtYjI0NjhiZmRiOWY1.bin 

Ahora podemos usar Bloodhound para ingerir este ZIP y mostrarnos visualmente las rutas de ataque.

Bloodhound

Como se mencionó anteriormente, Bloodhound es la GUI que nos permite importar datos capturados por Sharphound y visualizarlos en rutas de ataque. Bloodhound utiliza Neo4j como base de datos backend y sistema de gráficos. Neo4j es un sistema de gestión de bases de datos de gráficos. Si estás usando AttackBox, puedes usar el ícono rojo de Bloodhound en el Dock para iniciarlo. En todos los demás casos, asegúrese de que Bloodhound y neo4j estén instalados y configurados en su máquina atacante. De cualquier manera, es bueno entender lo que sucede en segundo plano. Antes de que podamos iniciar Bloodhound, necesitamos cargar Neo4j:

thm@thm:~# neo4j console start
Active database: graph.db
Directories in use:
  home:         /var/lib/neo4j
  config:       /etc/neo4j
  logs:         /var/log/neo4j
  plugins:      /var/lib/neo4j/plugins
  import:       /var/lib/neo4j/import
  data:         /var/lib/neo4j/data
  certificates: /var/lib/neo4j/certificates
  run:          /var/run/neo4j
Starting Neo4j.
[....]
2022-03-13 19:59:18.014+0000 INFO  Bolt enabled on 127.0.0.1:7687.

En otra pestaña de Terminal, ejecute bloodhound --no-sandbox. Esto le mostrará la GUI de autenticación :

Las credenciales predeterminadas para la base de datos neo4j serán neo4j:neo4j. Utilice esto para autenticarse en Bloodhound. Para importar nuestros resultados, necesitará recuperar el archivo ZIP del host de Windows. La forma más sencilla es utilizar el comando SCP en tu AttackBox:

scp <AD Username>@THMJMP1.za.tryhackme.com:C:/Users/<AD Username>/Documents/<Sharphound ZIP> .

Una vez que proporcione su contraseña, se copiarán los resultados a su directorio de trabajo actual. Arrastre y suelte el archivo ZIP en la GUI de Bloodhound para importarlo a Bloodhound. Mostrará que está extrayendo los archivos e iniciando la importación.

Una vez que se hayan importado todos los archivos JSON , podemos comenzar a usar Bloodhound para enumerar rutas de ataque para este dominio específico.

Rutas de ataque

Hay varias rutas de ataque que Bloodhound puede mostrar. Al presionar las tres rayas al lado de "Buscar un nodo" se mostrarán las opciones. La primera pestaña nos muestra la información sobre nuestras importaciones actuales.

Tenga en cuenta que si importa una nueva ejecución de Sharphound, estos recuentos aumentarán acumulativamente. Primero, veremos la información del nodo. Busquemos nuestra cuenta AD en Bloodhound. Debe hacer clic en el nodo para actualizar la vista. También tenga en cuenta que puede cambiar el esquema de etiquetas presionando LeftCtrl.

Podemos ver que hay una cantidad importante de información devuelta sobre nuestro uso. Cada una de las categorías proporciona la siguiente información:

  • Descripción general : proporciona información resumida, como la cantidad de sesiones activas que tiene la cuenta y si puede alcanzar objetivos de alto valor.

  • Propiedades del nodo : muestra información sobre la cuenta de AD , como el nombre para mostrar y el título.

  • Propiedades adicionales : proporciona información AD más detallada , como el nombre distintivo y cuándo se creó la cuenta.

  • Membresía de grupo : muestra información sobre los grupos a los que pertenece la cuenta.

  • Derechos de administrador local : proporciona información sobre los hosts unidos al dominio donde la cuenta tiene privilegios administrativos.

  • Derechos de ejecución : proporciona información sobre privilegios especiales, como la capacidad de realizar RDP en una máquina.

  • Derechos de control de salida : muestra información sobre los objetos AD donde esta cuenta tiene permisos para modificar sus atributos.

  • Derechos de control entrante : proporciona información sobre los objetos AD que pueden modificar los atributos de esta cuenta.

Si deseas obtener más información en cada una de estas categorías, puedes presionar el número al lado de la consulta de información. Por ejemplo, veamos la membresía del grupo asociada con nuestra cuenta. Al presionar el número al lado de "Membresía de grupo de primer grado", podemos ver que nuestra cuenta es miembro de dos grupos.

A continuación, veremos las consultas de análisis. Estas son consultas que los propios creadores de Bloodhound han escrito para enumerar información útil.

En la sección Información del dominio, podemos ejecutar la consulta Buscar todos los administradores de dominio. Tenga en cuenta que puede presionar LeftCtrl para cambiar la configuración de visualización de la etiqueta.

Los iconos se llaman nodos y las líneas se llaman aristas. Profundicemos en lo que nos muestra Bloodhound. Hay una cuenta de usuario de AD con el nombre de usuario T0_TINUS.GREEN , que es miembro del grupo ADMINS de nivel 0 . Sin embargo, este grupo es un grupo anidado en el grupo ADMINISTRADORES DE DOMINIO , lo que significa que todos los usuarios que forman parte del grupo ADMINISTRADORES de nivel 0 son efectivamente DA.

Además, hay una cuenta AD adicional con el nombre de usuario ADMINISTRADOR que forma parte del grupo DOMAIN ADMINS . Por lo tanto, hay dos cuentas en nuestra superficie de ataque que probablemente podamos intentar comprometer si queremos obtener derechos de DA. Dado que la cuenta ADMINISTRADOR es una cuenta integrada, probablemente nos centraremos en la cuenta de usuario.

Cada objeto AD que se analizó en las tareas anteriores puede ser un nodo en Bloodhound y cada uno tendrá un ícono diferente que representa el tipo de objeto que es. Si queremos formular una ruta de ataque, debemos observar los límites disponibles entre la posición actual y los privilegios que tenemos y hacia dónde queremos ir. Bloodhound tiene varios bordes disponibles a los que se puede acceder mediante el ícono de filtro:

Estos también se actualizan constantemente a medida que se descubren nuevos vectores de ataque. Buscaremos explotar estos diferentes bordes en una red futura. Sin embargo, veamos la ruta de ataque más básica usando solo la opción predeterminada y algunas especiales. Realizaremos una búsqueda en Bloodhound para enumerar la ruta de ataque. Presione el icono de ruta para permitir la búsqueda de rutas.

Nuestro nodo de inicio sería nuestro nombre de usuario de AD y nuestro nodo final será el grupo ADMINS de nivel 1 , ya que este grupo tiene privilegios administrativos sobre los servidores.

Si no hay una ruta de ataque disponible utilizando los filtros de borde seleccionados, Bloodhound mostrará "No se encontraron resultados". Tenga en cuenta que esto también puede deberse a una discrepancia entre Bloodhound y Sharphound, lo que significa que los resultados no se ingirieron correctamente. Utilice Bloodhound v4.1.0. Sin embargo, en nuestro caso, Bloodhound muestra una ruta de ataque. Muestra que uno de los ADMINISTRADORES T1, CUENTA, rompió el modelo de niveles al usar sus credenciales para autenticarse en THMJMP1 , que es una estación de trabajo. También muestra que cualquier usuario que forme parte del grupo USUARIOS DE DOMINIO , incluida nuestra cuenta AD , tiene la capacidad de realizar RDP en este host.

Podríamos hacer algo como lo siguiente para explotar esta ruta:

  1. Utilice nuestras credenciales de AD para RDP en THMJMP1 .

  2. Busque un vector de escalada de privilegios en el host que nos proporcione acceso administrativo.

  3. Utilizando el acceso administrativo, podemos utilizar técnicas y herramientas de recolección de credenciales como Mimikatz.

  4. Dado que el administrador T1 tiene una sesión activa en THMJMP1 , nuestra recolección de credenciales nos proporcionaría el hash NTLM de la cuenta asociada.

Session Data Only

La estructura de AD no cambia muy a menudo en las grandes organizaciones. Puede que haya un par de empleados nuevos, pero la estructura general de unidades organizativas, grupos, usuarios y permisos seguirá siendo la misma.

Sin embargo, lo único que cambia constantemente son las sesiones activas y los eventos de inicio de sesión. Dado que Sharphound crea una instantánea de un momento dado de la estructura de AD , los datos de la sesión activa no siempre son precisos, ya que es posible que algunos usuarios ya hayan cerrado sesión o que nuevos usuarios hayan establecido nuevas sesiones. Esto es algo esencial a tener en cuenta y es por eso que querríamos ejecutar Sharphound a intervalos regulares.

Un buen método es ejecutar Sharphound con el método de recopilación "Todos" al inicio de la evaluación y luego ejecutar Sharphound al menos dos veces al día utilizando el método de recopilación "Sesión". Esto le proporcionará nuevos datos de sesión y garantizará que estas ejecuciones sean más rápidas ya que no enumeran nuevamente toda la estructura de AD . El mejor momento para ejecutar estas sesiones es alrededor de las 10:00, cuando los usuarios toman su primer café y comienzan a trabajar y nuevamente alrededor de las 14:00, cuando regresan de su pausa para el almuerzo pero antes de irse a casa.

Puede borrar los datos de la sesión estancada en Bloodhound en la pestaña Información de la base de datos haciendo clic en "Borrar información de la sesión" antes de importar los datos de estas nuevas ejecuciones de Sharphound.

Beneficios

  • Proporciona una GUI para la enumeración de AD.

  • Tiene la capacidad de mostrar rutas de ataque para la información de AD enumerada .

  • Proporciona información más profunda sobre los objetos AD que normalmente requieren varias consultas manuales para recuperarse.

Desventajas

  • Requiere la ejecución de Sharphound, que es ruidoso y a menudo puede ser detectado por soluciones AV o EDR.

Conclusion

Enumerar AD es una tarea enorme. Se requiere una enumeración AD adecuada para comprender mejor la estructura del dominio y determinar las rutas de ataque que se pueden aprovechar para realizar una escalada de privilegios o un movimiento lateral.

Técnicas de enumeración adicionales

En esta red, cubrimos varias técnicas que se pueden utilizar para enumerar AD . Esta no es de ninguna manera una lista exhaustiva. Aquí hay una lista de técnicas de enumeración que también merecen mención:

También debemos señalar que esta sala se centró en enumerar la estructura del dominio AD en su totalidad en lugar de concentrarse únicamente en identificar configuraciones erróneas y debilidades. En futuras salas se discutirá la enumeración centrada en identificar debilidades, como acciones inseguras o rupturas en el modelo de niveles.

Mitigaciones

Es increíblemente difícil defenderse de la enumeración AD . Muchas de estas técnicas imitan el tráfico y el comportamiento de la red normal, lo que dificulta distinguir el tráfico malicioso del tráfico normal. Sin embargo, hay un par de cosas que podemos hacer para detectar comportamientos potencialmente maliciosos:

  • Las potentes técnicas de enumeración de AD , como Sharphound, generan una cantidad significativa de eventos de inicio de sesión al enumerar información de la sesión. Dado que se ejecuta desde una única cuenta de AD, estos eventos de inicio de sesión se asociarán con esta única cuenta. Podemos escribir reglas de detección para detectar este tipo de comportamiento si ocurre desde una cuenta de usuario.

  • Podemos escribir reglas de detección de firmas para las herramientas que deben instalarse para técnicas de enumeración de AD específicas , como los binarios de SharpHound y las herramientas AD-RSAT.

  • A menos que lo utilicen empleados de nuestra organización, podemos monitorear el uso del símbolo del sistema y Powershell en nuestra organización para detectar posibles intentos de enumeración de fuentes no autorizadas.

Como nota al margen, el propio equipo azul también puede utilizar periódicamente estas técnicas de enumeración para identificar lagunas y configuraciones erróneas en la estructura del dominio AD . Si podemos resolver estos errores de configuración, incluso si un atacante enumera nuestro AD, no podrá encontrar errores de configuración que puedan explotarse para escalar privilegios o realizar movimientos laterales.

Ahora que hemos enumerado AD , el siguiente paso es realizar una escalada de privilegios y un movimiento lateral a través del dominio para llegar a una posición adecuada para realizar ataques. Esto se tratará en la siguiente sala.

Aquí es donde se vuelve potente. ¿Alguna vez ha tenido un caso en el que una base de datos MS SQL utilizó autenticación de Windows y usted no estaba unido al dominio? Inicie MS SQL Studio desde ese símbolo del sistema; aunque muestra su nombre de usuario local, haga clic en Iniciar sesión y utilizará las credenciales de AD en segundo plano para autenticarse. Incluso podemos usar esto para .

Ya debería haber completado la se introdujeron inicialmente los diferentes objetos de AD . En esta tarea, se asumirá que comprende cuáles son estos objetos. Conéctese a THMJMP1 usando RDP y sus credenciales proporcionadas en la Tarea 1 para realizar esta tarea.

En esta tarea, exploraremos nuestro primer método de enumeración, que es el único método que utiliza una GUI hasta la última tarea. Usaremos Microsoft Management Console (MMC) con los complementos AD (RSAT) . Si utiliza la máquina virtual de Windows proporcionada (THMJMP1), ya se habrá instalado. Sin embargo, si está utilizando su propia máquina con Windows, puede realizar los siguientes pasos para instalar los complementos:

Puede encontrar la gama completa de opciones asociadas con el comando net . Juegue con estos comandos de red para recopilar información sobre usuarios y grupos específicos.

PowerShell es la actualización del símbolo del sistema. Microsoft lo lanzó por primera vez en 2006. Si bien PowerShell tiene todas las funciones estándar que proporciona el símbolo del sistema, también brinda acceso a cmdlets (pronunciado command-lets), que son clases .NET para realizar funciones específicas. Si bien podemos escribir nuestros propios cmdlets, como lo hicieron los creadores de , ya podemos llegar muy lejos utilizando los integrados.

Dado que instalamos las herramientas AD-RSAT en la Tarea 3, instaló automáticamente los cmdlets asociados. Hay más de 50 cmdlets instalados. Veremos algunos de estos, pero consulte

Por último, veremos cómo realizar la enumeración de AD utilizando . Bloodhound es la herramienta de enumeración de AD más poderosa hasta la fecha y, cuando se lanzó en 2016, cambió el panorama de enumeración de AD para siempre.

Puede encontrar todos los parámetros de Sharphound . Es bueno repasar los demás parámetros, ya que pueden ser necesarios según las circunstancias de la evaluación del equipo rojo.

Este es un ejemplo sencillo. Las rutas de ataque pueden ser relativamente complejas en circunstancias normales y requerir varias acciones para alcanzar el objetivo final. Si está interesado en los exploits asociados con cada ventaja, la siguiente proporciona una guía excelente. Bloodhound es una herramienta de enumeración de AD increíblemente poderosa que proporciona información detallada sobre la estructura de AD de una superficie de ataque. Vale la pena el esfuerzo de jugar con él y aprender sus diversas características.

: cualquier par de credenciales AD válido debería poder vincularse a la interfaz LDAP de un controlador de dominio. Esto le permitirá escribir consultas de búsqueda LDAP para enumerar información sobre los objetos AD en el dominio.

: PowerView es un script de reconocimiento que forma parte del . Aunque este proyecto ya no recibe soporte, scripts como PowerView pueden ser increíblemente útiles para realizar una enumeración semimanual de objetos AD en caso de necesidad.

: WMI se puede utilizar para enumerar información de hosts de Windows. Tiene un proveedor llamado "raíz\directorio\ldap" que puede usarse para interactuar con AD. Podemos usar este proveedor y WMI en PowerShell para realizar la enumeración de AD.

autenticarnos en aplicaciones web que usan autenticación NTLM
sala de Conceptos básicos de AD , donde
de las herramientas de administración remota del servidor
aquí
PowerView
esta lista para obtener la lista completa de cmdlets.
Bloodhound
aquí
documentación de Bloodhound
Enumeración LDAP
PowerView
proyecto PowerSploit
Instrumental de administración de Windows (WMI)
20231027045245.png
20231027043310.png
20231027043332.png
20231027043355.png
20231027043405.png
20231027043417.png
20231027043428.png
20231027044034.png
20231027044047.png
20231027044101.png
20231027044109.png
20231027044121.png
20231027044130.png
20231027044138.png
20231027044155.png
20231027044205.png
20231027044213.png