Depuis Windows
Mémo des commandes PowerShell pour énumérer un environnement Active Directory depuis un poste Windows compromis : informations de domaine, politiques, utilisateurs, groupes, ordinateurs, ACL, GPO, SPN. Couvre à la fois PowerView (PowerSploit) et le module officiel ActiveDirectory.
🕵️ Situational awareness¶
Domaine actuel :¶
Objet d'un autre domaine :¶
Connaitre le SID du domaine :¶
Domain policy pour le domaine actuel :¶
Domain policy pour un autre domaine :¶
Connaitre le DC du domaine actuel :¶
Connaitre le DC d'un autre domaine :¶
Get-DomainController -Domain test.local #powerview
---
Get-ADDomainController -DomainName test.local -Discover #powershell
Lister les utilisateurs du domaine :¶
Connaitre les propriétés d'un utilisateur en particulier :¶
Get-DomainUser -Identity $utilisateur -Properties * #powerview
---
Get-ADUser -Filter * -Properties * | select -First 1 | Get-Member -MemberType *Property | select Name #powershell
Chercher une chaîne de caractères dans les attributs d'un utilisateur (ici "built") :¶
Get-DomainUser -LDAPFilter "Description=*built*" | Select name,Description #powershell
---
Get-ADUser -Filter 'Description -Like "*built*"' -Properties Description | select name,Description #powershell
Connaitre la liste des différents pc dans le domaine actuel :¶
Get-DomainComputer | select Name #powerview
Get-DomainComputer -OperatingSystem "windows server 2019 standard" #powerview
Get-DomainComputer -Ping #powerview
---
Get-AdComputer -Filter * | select Name #powershell
Get-AdComputer -Filter 'OperatingSystem -like "*Windows Server 2019 Standard*"' -Properties OperatingSystem | select Name,OperatingSystem #powershell
Get-AdComputer -Filter * -Properties DNSHostName | %(Test-Connection -Count 1 -ComputerName $_.DNSHostName) #powershell
Get-AdComputer -Filter * -Properties * #powershell
Connaitre tout les groupes du domaine :¶
Get-DomainGroup | select Name #powerview
Get-DomainGroup -Domain test.local #powerview
---
Get-ADGroupe -Filter * | select Name #powershell
Get-AdGroup -Filter * -Properties * #powershell
Connaitre tout les groupes contenant le mot "admin" :¶
Get-DomainGroup *admin* #powerview
---
Get-AdGroup -Filter 'Name -like "*admin*"' | select Name #powershell
Connaitre les membres du groupe "Domain Admins" :¶
Get-DomainGroupMember -Identity "Domain Admins" -Recurse #powerview
---
Get-ADGroupMember -Identity "Domain Admins" -Recursive #powershell
Connaitre les groupes dont fait parti un utilisateur :¶
Get-DomainGroup –UserName studentuser1 #powerview
---
Get-ADPrincipalGroupMembership -Identity studentuser1 #powershell
Connaitre les groupes locaux sur une machine (nécessite les droits admin sur la machine) :¶
Connaitre les membres de tout les groupes locaux sur une machine (nécessite les droits admin) :¶
Connaitre les membres du groupe local "Administrators" sur une machine (nécessite les droits admin) :¶
🥞 GPO¶
Lister les GPO du domaine :¶
Lister les GPO qui utilisent les "restricted groups" ou "groups.xml" :¶
Connaitre les utilisateurs qui sont dans un groupe local d'une machine via GPO :¶
Connaitre les machines où un utilisateur est membre d'un groupe :¶
🤵 OU¶
Lister les OU du domaine :¶
Lister les GPO s'appliquant à une OU en particulier :¶
Connaitre les utilisateurs membre d'un groupe local sur une machine dans n'importe quelle OU utilisant les GPO :¶
(Get-DomainOU).distinguishedname | %{Get-DomainComputer -SearchBase $_} | Get-DomainGPOComputerLocalGroupMapping #powershell
Idem, mais en ciblant une OU particulière :
(Get-DomainOU -Identity 'OU=Mgmt,DC=us,DC=techcorp,DC=local').distinguishedname | %{Get-DomainComputer -SearchBase $_} | Get-DomainGPOComputerLocalGroupMapping #powershell
📝 ACL¶
Connaitre les ACL associées à un objet spécifique :¶
Connaitre les ACL associées à un objet en spécifiant son chemin LDAP :¶
Get-DomainObjectAcl -Searchbase "LDAP://CN=Domain Admins,CN=Users,DC=us,DC=techcorp,DC=local" -ResolveGUIDs -Verbose #powerview
Idem, en utilisant powershell (les guids ne seront pas résolus) :
Lister les ACEs intéressants sur le domaine :¶
Connaitre les ACL associées à un chemin spécifique :¶
👨❤️👨 Trusts¶
Connaitre les domaines trustés par le domaine courant :¶
Get-DomainTrust #powerview
Get-DomainTrust -Domain domain.local #powerview
---
Get-ADTrust #powershell
Get-ADTrust -Identity domain.local #powershell
Avoir des détails sur la forêt actuelle :¶
Connaitre tout les domaines dans la forêt actuelle :¶
Connaitre le catalogue global de la forêt actuelle :¶
Get-ForestGlobalCatalog #powerview
---
Get-ADForest | select -ExpandProperty GlobalCatalogs #powershell
Connaitre les différents trusts d'une forêt :¶
Get-ForestTrust #powerview
---
Get-ADTrust -Filter 'intraForest -ne $True' -Server (Get-ADforest).Name #powershell