### 🕵️ Situational awareness
#### Domaine actuel :
```powershell
Get-Domain #powerview
---
Get-ADDomain #powershell
```
#### Objet d'un autre domaine :
```powershell
Get-Domain -Domain test.local #powerview
---
Get-ADDomain -Identity test.local #powershell
```
#### Connaitre le SID du domaine :
```powershell
Get-DomainSID #powerview
---
(Get-ADDomain).DomainSID #powershell
```
#### Domain policy pour le domaine actuel :
```powershell
Get-DomainPolicyData #powerview
---
(Get-DomainPolicyData).systemaccess #powershell
```
#### Domain policy pour un autre domaine :
```powershell
(Get-DomainPolicyData -domain test.local).systemaccess #powershell
```
#### Connaitre le DC du domaine actuel :
```powershell
Get-DomainController #powerview
---
Get-ADDomainController #powershell
```
#### Connaitre le DC d'un autre domaine :
```powershell
Get-DomainController -Domain test.local #powerview
---
Get-ADDomainController -DomainName test.local -Discover #powershell
```
#### Lister les utilisateurs du domaine :
```powershell
Get-DomainUser #powerview
---
Get-ADUser -Filter * -Properties * #powershell
```
#### Connaitre les propriétés d'un utilisateur en particulier :
```powershell
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") :
```powershell
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 :
```powershell
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 :
```powershell
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" :
```powershell
Get-DomainGroup *admin* #powerview
---
Get-AdGroup -Filter 'Name -like "*admin*"' | select Name #powershell
```
#### Connaitre les membres du groupe "Domain Admins" :
```powershell
Get-DomainGroupMember -Identity "Domain Admins" -Recurse #powerview
---
Get-ADGroupMember -Identity "Domain Admins" -Recursive #powershell
```
#### Connaitre les groupes dont fait parti un utilisateur :
```powershell
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) :
```powershell
Get-NetLocalGroup -ComputerName us-dc #powerview
```
#### Connaitre les membres de tout les groupes locaux sur une machine (nécessite les droits admin) :
```powershell
Get-NetLocalGroupMember -ComputerName us-dc #powerview
```
#### Connaitre les membres du groupe local "Administrators" sur une machine (nécessite les droits admin) :
```powershell
Get-NetLocalGroupMember -ComputerName us-dc -GroupName Administrators #powerview
```
---
### 🥞 GPO
#### Lister les GPO du domaine :
```powershell
Get-DomainGPO #powerview
```
#### Lister les GPO qui utilisent les "restricted groups" ou "groups.xml" :
```powershell
Get-DomainGPOLocalGroup #powerview
```
#### Connaitre les utilisateurs qui sont dans un groupe local d'une machine via GPO :
```powershell
Get-DomainGPOComputerLocalGroupMapping –ComputerIdentity student1.us.techcorp.local #powerview
```
#### Connaitre les machines où un utilisateur est membre d'un groupe :
```powershell
Get-DomainGPOUserLocalGroupMapping -Identity studentuser1 -Verbose #powerview
```
---
### 🤵 OU
#### Lister les OU du domaine :
```powershell
Get-DomainOU #powerview
---
Get-ADOrganizationalUnit -Filter * -Properties * #powershell
```
#### Lister les GPO s'appliquant à une OU en particulier :
```powershell
Get-DomainGPO -Identity '{7162874B-E6F0-45AD-A3BF-0858DA4FA02F}' #powerview
```
#### Connaitre les utilisateurs membre d'un groupe local sur une machine dans n'importe quelle OU utilisant les GPO :
```powershell
(Get-DomainOU).distinguishedname | %{Get-DomainComputer -SearchBase $_} | Get-DomainGPOComputerLocalGroupMapping #powershell
```
Idem, mais en ciblant une OU particulière :
```powershell
(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 :
```powershell
Get-DomainObjectAcl -Identity $monuser -ResolveGUIDs #powerview
```
#### Connaitre les ACL associées à un objet en spécifiant son chemin LDAP :
```powershell
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) :
```powershell
(Get-Acl'AD:\CN=Administrator,CN=Users,DC=us,DC=techcorp,DC=local').Access #powershell
```
#### Lister les ACEs intéressants sur le domaine :
```powershell
Find-InterestingDomainAcl -ResolveGUIDs #powerview
```
#### Connaitre les ACL associées à un chemin spécifique :
```powershell
Get-PathAcl -Path "\\dc\sysvol" #powerview
```
---
### 👨❤️👨 Trusts
#### Connaitre les domaines trustés par le domaine courant :
```powershell
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 :
```powershell
Get-Forest #powerview
---
Get-ADForest #powershell
```
#### Connaitre tout les domaines dans la forêt actuelle :
```powershell
Get-ForestDomain #powerview
---
(Get-ADForest).Domains #powershell
```
#### Connaitre le catalogue global de la forêt actuelle :
```powershell
Get-ForestGlobalCatalog #powerview
---
Get-ADForest | select -ExpandProperty GlobalCatalogs #powershell
```
#### Connaitre les différents trusts d'une forêt :
```powershell
Get-ForestTrust #powerview
---
Get-ADTrust -Filter 'intraForest -ne $True' -Server (Get-ADforest).Name #powershell
```
---
### 🕵️ User hunting
#### Connaitre les pc où un utilisateur a une session :
```powershell
Find-domainUserLocation -Verbose -UserGroupIdentity "$utilisateur" #powerview
```
#### Connaitre les pc où l'utilisateur a un accès admin :
```powershell
Find-DomainUserLocation -CheckAccess -UserGroupIdentity "$utilisateur" #powerview
```