Aller au contenu

Depuis Windows

🕵️ Situational awareness

Domaine actuel :

1
2
3
Get-Domain #powerview
---
Get-ADDomain #powershell

Objet d'un autre domaine :

1
2
3
Get-Domain -Domain test.local #powerview
---
Get-ADDomain -Identity test.local #powershell

Connaitre le SID du domaine :

1
2
3
Get-DomainSID #powerview
---
(Get-ADDomain).DomainSID #powershell

Domain policy pour le domaine actuel :

1
2
3
Get-DomainPolicyData #powerview
---
(Get-DomainPolicyData).systemaccess #powershell

Domain policy pour un autre domaine :

(Get-DomainPolicyData -domain test.local).systemaccess #powershell

Connaitre le DC du domaine actuel :

1
2
3
Get-DomainController #powerview
---
Get-ADDomainController #powershell

Connaitre le DC d'un autre domaine :

1
2
3
Get-DomainController -Domain test.local #powerview
---
Get-ADDomainController -DomainName test.local -Discover #powershell

Lister les utilisateurs du domaine :

1
2
3
Get-DomainUser #powerview
---
Get-ADUser -Filter * -Properties * #powershell

Connaitre les propriétés d'un utilisateur en particulier :

1
2
3
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") :

1
2
3
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 :

1
2
3
4
5
6
7
8
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 :

1
2
3
4
5
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" :

1
2
3
Get-DomainGroup *admin* #powerview
---
Get-AdGroup -Filter 'Name -like "*admin*"' | select Name #powershell

Connaitre les membres du groupe "Domain Admins" :

1
2
3
Get-DomainGroupMember -Identity "Domain Admins" -Recurse #powerview
---
Get-ADGroupMember -Identity "Domain Admins" -Recursive #powershell

Connaitre les groupes dont fait parti un utilisateur :

1
2
3
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) :

Get-NetLocalGroup -ComputerName us-dc #powerview

Connaitre les membres de tout les groupes locaux sur une machine (nécessite les droits admin) :

Get-NetLocalGroupMember -ComputerName us-dc #powerview

Connaitre les membres du groupe local "Administrators" sur une machine (nécessite les droits admin) :

Get-NetLocalGroupMember -ComputerName us-dc -GroupName Administrators #powerview

🥞 GPO

Lister les GPO du domaine :

Get-DomainGPO #powerview

Lister les GPO qui utilisent les "restricted groups" ou "groups.xml" :

Get-DomainGPOLocalGroup #powerview

Connaitre les utilisateurs qui sont dans un groupe local d'une machine via GPO :

Get-DomainGPOComputerLocalGroupMapping ComputerIdentity student1.us.techcorp.local #powerview

Connaitre les machines où un utilisateur est membre d'un groupe :

Get-DomainGPOUserLocalGroupMapping -Identity studentuser1 -Verbose #powerview

🤵 OU

Lister les OU du domaine :

1
2
3
Get-DomainOU #powerview
---
Get-ADOrganizationalUnit -Filter * -Properties * #powershell

Lister les GPO s'appliquant à une OU en particulier :

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 :

(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 :

Get-DomainObjectAcl -Identity $monuser -ResolveGUIDs #powerview

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) :

(Get-Acl'AD:\CN=Administrator,CN=Users,DC=us,DC=techcorp,DC=local').Access #powershell

Lister les ACEs intéressants sur le domaine :

Find-InterestingDomainAcl -ResolveGUIDs #powerview

Connaitre les ACL associées à un chemin spécifique :

Get-PathAcl -Path "\\dc\sysvol" #powerview

👨‍❤️‍👨 Trusts

Connaitre les domaines trustés par le domaine courant :

1
2
3
4
5
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 :

1
2
3
Get-Forest #powerview
---
Get-ADForest #powershell

Connaitre tout les domaines dans la forêt actuelle :

1
2
3
Get-ForestDomain #powerview
---
(Get-ADForest).Domains #powershell

Connaitre le catalogue global de la forêt actuelle :

1
2
3
Get-ForestGlobalCatalog #powerview
---
Get-ADForest | select -ExpandProperty GlobalCatalogs #powershell

Connaitre les différents trusts d'une forêt :

1
2
3
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 :

Find-domainUserLocation -Verbose -UserGroupIdentity "$utilisateur" #powerview

Connaitre les pc où l'utilisateur a un accès admin :

Find-DomainUserLocation -CheckAccess -UserGroupIdentity "$utilisateur" #powerview