Active Directory — Bases et structure
Comprendre la structure AD, les objets, OU, et les commandes essentielles
Structure hiérarchique
Forest corplanDomain corplanTree subcorplanDomain Controllers DCOrganizational Units OUOUUsersOUITOUFinanceOUComputersOUGroupsOUServiceAccounts
Objets AD
| Objet | Description | |-----------------|------------------------------------------------| | User | Compte utilisateur | | Computer | Compte machine joint au domaine | | Group | Regroupement d'objets (sécurité ou distribution)| | OU | Conteneur pour organiser les objets | | GPO | Politique de groupe liée à une OU | | Service Account | Compte pour les services applicatifs | | gMSA | Group Managed Service Account (auto-rotation) |
Types de groupes
| Type | Portée | Usage | |--------------|-----------------|------------------------------------------------| | Domain Local | Domaine local | Assigner des permissions locales | | Global | Forêt entière | Regrouper des utilisateurs du même domaine | | Universal | Forêt entière | Regrouper des objets de plusieurs domaines |
Bonnes pratiques AGDLP
Accounts Global Groups Domain Local Groups Permissions
Mettre les Users dans des Global Groups, les Global Groups dans des Domain Local Groups, assigner les permissions aux Domain Local Groups.
Commandes essentielles (net)
# Infos domainenet user /domainnet group /domainnet localgroup Administrators# Utilisateur spécifiquenet user {{USER}} /domain# Ajouter au domaine (join)netdom join %COMPUTERNAME% /domain:{{TARGET_DOMAIN}} /userd:admin /passwordd:*
PowerShell AD (module RSAT)
# Installer le moduleInstall-WindowsFeature RSAT-AD-PowerShellImport-Module ActiveDirectory# UtilisateursGet-ADUser {{USER}} -Properties *Get-ADUser -Filter {Department -eq "IT"} -Properties Department, TitleGet-ADUser -Filter {Enabled -eq $true} | Select Name, SamAccountName# GroupesGet-ADGroup -Filter * | Where-Object {$_.GroupScope -eq "DomainLocal"}Get-ADGroupMember "Domain Admins" | Select Name, SamAccountName# OrdinateursGet-ADComputer -Filter * -Properties LastLogonDate |Where-Object {$_.LastLogonDate -lt (Get-Date).AddDays(-90)} |Select Name, LastLogonDate # comptes inactifs# OUsGet-ADOrganizationalUnit -Filter * | Select Name, DistinguishedName# Forêt et domaineGet-ADForestGet-ADDomainGet-ADDomainController -Filter *
Distinguished Name (DN)
CNJohn DoeOUITOUUsersDCcorpDClanCN Common Name nom de lobjetOU Organizational UnitDC Domain Component chaque partie du domaineExemplesCNAdministratorCNUsersDCcorpDClanCNWeb ServersOUComputersDCcorpDClanOUFinanceOUUsersDCcorpDClan
Trusts (relations d'approbation)
# Voir les trustsGet-ADTrust -Filter *nltest /domain_trusts# Types de trust# - Parent/Child : automatique dans la même forêt# - Forest Trust : entre deux forêts# - External : domaine hors forêt# - Shortcut : raccourci dans une forêt complexe
FSMO Roles
# Voir les détenteurs de rôles FSMOnetdom query fsmo# Les 5 rôles :# - Schema Master (1 par forêt)# - Domain Naming Master (1 par forêt)# - PDC Emulator (1 par domaine)# - RID Master (1 par domaine)# - Infrastructure Master (1 par domaine)
Replication AD
# Vérifier la réplicationrepadmin /showreplrepadmin /replsummary# Forcer une réplicationrepadmin /syncall /AdeP# Diagnosticsdcdiag /test:replicationsdcdiag /test:netlogon
Les comptes inactifs et les groupes imbriqués sont les premières cibles lors d'un pentest AD. Faire un audit régulier avec Get-ADUser -Filter {LastLogonDate -lt ...} et Get-ADGroupMember récursif sur les groupes privilégiés.