Depuis Linux
Énumération d'un domaine Active Directory depuis une machine attaquante Linux : politiques de mot de passe via SMB/RPC, comptes via LDAP, sessions, partages, et utilisation de netexec, rpcclient, ldapsearch, bloodhound-python pour cartographier la cible avant l'exploitation.
👮 Password policy¶
Par défaut, la politique de mot de passe est souvent configurée comme ceci:
| Policy | Default Value |
|---|---|
| Enforce password history | 24 days |
| Maximum password age | 42 days |
| Minimum password age | 1 day |
| Minimum password length | 7 |
| Password must meet complexity requirements | Enabled |
| Store passwords using reversible encryption | Disabled |
| Account lockout duration | Not set |
| Account lockout threshold | 0 |
| Reset account lockout counter after | Not set |
En ayant des creds valides il est possible d'énumérer la politique de mot de passe avec crackmapexec:
Sans creds valides, possible avec une NULL SESSION. Via rpc:
via enum4linux:
Parfois il est possible de récupérer des infos depuis le LDAP sans avoir de creds valides (anonymous bind). Ce n'est normalement plus le cas de base depuis Windows Server 2003 mais l'option peut avoir été activée:
🤼 Users¶
Sans creds, il peut être possible d'avoir une liste d'user via une NULL session également. Via enum4linux:
via rpc:
via crackmapexec:
Comme la politique de mot de passe, il est possible d'avoir une liste d'user si LDAP permet l'anonymous bind. Via ldapsearch:
ldapsearch -h $ip -x -b "DC=INLANEFREIGHT,DC=LOCAL" -s sub "(&(objectclass=user))" | grep sAMAccountName: | cut -f2 -d" "
Via windapsearch.py:
Il est possible de bruteforcer une liste d'utilisateurs via kerbrute. Cette méthode a pour avantage de ne pas générer d'event "failed to log on" ou "logon failure":
Avec des creds valides, il est possibles d'utiliser crackmapexec:
Avec des creds valides, énumération des users loggés:
👨👩👦 groupes¶
Avec des creds valides, énumération des groupes présents sur l'AD: