# Enumération

**1. Importance de l'Énumération AD**

L'énumération Active Directory (AD) est essentielle pour comprendre la structure du domaine et déterminer les chemins d'attaque pour l'escalade de privilèges ou le mouvement latéral. Bien que les techniques abordées dans ce réseau soient importantes, il existe d'autres méthodes à considérer.

***

**2. Techniques d'Énumération AD**

**A. LDAP Enumeration**

* **Description :** Utilisation des informations d'identification valides pour se connecter à l'interface LDAP d'un contrôleur de domaine.
* **Objectif :** Exécuter des requêtes LDAP pour énumérer des informations sur les objets AD dans le domaine.

**B. PowerView**

* **Description :** Script de reconnaissance faisant partie du projet PowerSploit. Bien que le projet ne soit plus maintenu, PowerView est utile pour l'énumération semi-manuelle des objets AD.
* **Usage :** Permet de collecter des informations détaillées sur les objets et les permissions AD.

**C. Windows Management Instrumentation (WMI)**

* **Description :** Utilisation de WMI pour obtenir des informations depuis des hôtes Windows. Le fournisseur "root\directory\ldap" permet d'interagir avec AD.
* **Usage :** Peut être utilisé via PowerShell pour effectuer une énumération AD.

***

**3. Focus de l'Énumération**

* **Actuel :** Le focus est mis sur l'énumération de la structure complète du domaine AD.
* **Futur :** Identification des faiblesses telles que les partages non sécurisés ou les ruptures dans le modèle de hiérarchisation seront abordées dans les prochaines séances.

***

**4. Atténuation des Risques d'Énumération**

**A. Détection de Comportements Suspects**

1. **Logs de Connexion :**
   * Les techniques d'énumération comme SharpHound génèrent un grand nombre d'événements LogOn. Écrire des règles de détection pour surveiller ce type de comportement peut aider à identifier les activités suspectes associées à un seul compte utilisateur.
2. **Règles de Détection de Signature :**
   * Créez des règles pour détecter les outils spécifiques utilisés pour l'énumération AD, tels que les binaires SharpHound et les outils AD-RSAT.
3. **Surveillance des Outils :**
   * Surveillez l'utilisation de l'invite de commandes et de PowerShell pour détecter les tentatives d'énumération provenant de sources non autorisées.

**B. Proactivité de l'Équipe de Défense**

* **Usage Régulier :** L'équipe bleue peut utiliser ces techniques d'énumération régulièrement pour identifier les lacunes et les mauvaises configurations dans la structure du domaine AD.
* **Correction des Faiblesses :** Résoudre ces faiblesses peut empêcher les attaquants de trouver des configurations exploitables même s'ils parviennent à énumérer l'AD.

### Afficher des informations sur le domaine

```
systeminfo | findstr Domain
```

* Si nous obtenons WORKGROUP dans la section domaine, cela signifie que cette machine fait partie d'un groupe de travail local

### Informations sur tous les utilisateurs et groupe&#x20;

* **Users**

```
Get-ADUser -Filter * # utilis
```

```
ldapsearch -x -H ldap://<AD_SERVER_IP> -b "CN=Users,DC=thmredteam,DC=com" -s sub "(objectClass=user)"
```

* **Groupes**

```
Get-ADGroup -Filter *
```

* **spécifique**&#x20;

```
Get-ADUser -Filter * -SearchBase "OU=THM,DC=domain,DC=com"
```

* **Admin**

```
Get-ADUser -Filter 'memberOf -eq "CN=Domain Admins,CN=Users,DC=domain,DC=com"' -Properties *
```

Dans cette commande, le filtre LDAP :&#x20;

&#x20;**'memberOf -eq "CN=Domain Admins,CN=Users,DC=domain,DC=com"**' est utilisé pour rechercher les utilisateurs qui sont membres du groupe "Administrateurs du domaine". La propriété "memberOf" contient les noms distinctifs (DN) des groupes dont l'utilisateur est membre. L'option "-Properties \*" est utilisée pour renvoyer toutes les propriétés de l'utilisateur.



#### Commandes de Base pour l'Énumération AD

**1. Liste des Utilisateurs**

*   **Commande** :

    ```plaintext
    plaintextCopier le codenet user /domain
    ```

    * **Description** : Liste tous les utilisateurs du domaine AD.
*   **Commande** :

    ```plaintext
    plaintextCopier le codenet user <nom_utilisateur> /domain
    ```

    * **Description** : Affiche des informations détaillées sur un utilisateur spécifique.

**2. Liste des Groupes**

*   **Commande** :

    ```plaintext
    plaintextCopier le codenet group /domain
    ```

    * **Description** : Liste tous les groupes du domaine AD.
*   **Commande** :

    ```plaintext
    plaintextCopier le codenet group "<nom_du_groupe>" /domain
    ```

    * **Description** : Affiche les membres d'un groupe spécifique.

**3. Politique de Mot de Passe**

*   **Commande** :

    ```plaintext
    plaintextCopier le codenet accounts /domain
    ```

    * **Description** : Affiche la politique de mot de passe du domaine AD.



***

#### Fiche Mémo : Énumération Active Directory avec PowerShell

**Introduction**

PowerShell est un outil plus avancé que Command Prompt, offrant une large gamme de cmdlets pour interagir avec Active Directory (AD). Les cmdlets sont des classes .NET conçues pour effectuer des fonctions spécifiques. Cette fiche mémo détaille les principales commandes PowerShell utilisées pour l'énumération d'AD.

***

#### Cmdlets de Base pour l'Énumération AD

**1. Utilisateurs**

*   **Lister un utilisateur spécifique** :

    ```powershell
    powershellCopier le codeGet-ADUser -Identity <nom_utilisateur> -Server <domaine> -Properties *
    ```

    *   **Exemple** :

        ```powershell
        powershellCopier le codeGet-ADUser -Identity gordon.stevens -Server za.tryhackme.com -Properties *
        ```
*   **Filtrer les utilisateurs** :

    ```powershell
    powershellCopier le codeGet-ADUser -Filter '<critère>' -Server <domaine> | Format-Table <propriétés>
    ```

    *   **Exemple** :

        ```powershell
        powershellCopier le codeGet-ADUser -Filter 'Name -like "*stevens"' -Server za.tryhackme.com | Format-Table Name,SamAccountName -A
        ```

**2. Groupes**

*   **Lister un groupe spécifique** :

    ```powershell
    powershellCopier le codeGet-ADGroup -Identity <nom_groupe> -Server <domaine>
    ```

    *   **Exemple** :

        ```powershell
        powershellCopier le codeGet-ADGroup -Identity Administrators -Server za.tryhackme.com
        ```
*   **Lister les membres d'un groupe** :

    ```powershell
    powershellCopier le codeGet-ADGroupMember -Identity <nom_groupe> -Server <domaine>
    ```

    *   **Exemple** :

        ```powershell
        powershellCopier le codeGet-ADGroupMember -Identity Administrators -Server za.tryhackme.com
        ```

**3. Objets AD**

*   **Rechercher des objets modifiés après une date spécifique** :

    ```powershell
    powershellCopier le code$ChangeDate = New-Object DateTime(<année>, <mois>, <jour>, <heure>, <minute>, <seconde>)
    Get-ADObject -Filter 'whenChanged -gt $ChangeDate' -IncludeDeletedObjects -Server <domaine>
    ```

    *   **Exemple** :

        ```powershell
        powershellCopier le code$ChangeDate = New-Object DateTime(2022, 02, 28, 12, 00, 00)
        Get-ADObject -Filter 'whenChanged -gt $ChangeDate' -IncludeDeletedObjects -Server za.tryhackme.com
        ```

**4. Domaines**

*   **Obtenir des informations sur le domaine** :

    ```powershell
    powershellCopier le codeGet-ADDomain -Server <domaine>
    ```

    *   **Exemple** :

        ```powershell
        powershellCopier le codeGet-ADDomain -Server za.tryhackme.com
        ```

**5. Modification d'Objets AD (Exploitation)**

*   **Changer le mot de passe d'un utilisateur** :

    ```powershell
    powershellCopier le codeSet-ADAccountPassword -Identity <nom_utilisateur> -Server <domaine> -OldPassword (ConvertTo-SecureString -AsPlainText "<ancien_mot_de_passe>" -Force) -NewPassword (ConvertTo-SecureString -AsPlainText "<nouveau_mot_de_passe>" -Force)
    ```

    *   **Exemple** :

        ```powershell
        powershellCopier le codeSet-ADAccountPassword -Identity gordon.stevens -Server za.tryhackme.com -OldPassword (ConvertTo-SecureString -AsPlainText "old" -Force) -NewPassword (ConvertTo-SecureString -AsPlainText "new" -Force)
        ```

***

#### Avantages et Inconvénients

**Avantages**

* **Information Plus Complète** : PowerShell peut obtenir beaucoup plus d'informations que les commandes net.
* **Flexibilité et Contrôle** : Les cmdlets offrent des filtres et options détaillés pour personnaliser les recherches.
* **Modification Directe** : Possibilité de créer ou modifier des objets AD directement.
* **Utilisation de Cmdlets Personnalisées** : Création de cmdlets spécifiques pour des besoins particuliers.

**Inconvénients**

* **Surveillance accrue** : PowerShell est souvent plus surveillé par les équipes de sécurité que Command Prompt.
* **Installation Nécessaire** : Il faut installer les outils AD-RSAT ou utiliser des scripts potentiellement détectables.

