
Module PowerShell personnalisé pour configurer un environnement de laboratoire Active Directory afin de pratiquer les tests de pénétration.
Ce module a pour but d'automatiser le déploiement d'un laboratoire Active Directory pour s'entraîner au test de pénétration interne.
Crédits à Joe Helle et à son cours PowerShell pour pentesteurs concernant la génération des vecteurs d'attaque.
PSModulePath# Display PSModulePath
$env:PSModulePath.split(";")
# Move module to path
Move-Item .\ADLab\ "C:\Windows\system32\WindowsPowerShell\v1.0\Modules\"
# Import global module
Import-Module ADLab
# Import local module
Import-Module .\ADLab.psm1
Cette fonction prépare la machine virtuelle/ordinateur actuel à être utilisé comme contrôleur de domaine pour la nouvelle forêt. Elle définit une adresse IP statique, configure le serveur DNS sur localhost et renomme l'ordinateur.
# Prepare the current VM with all default values while displaying verbose output
Invoke-DCPrep -Verbose
# Set custom hostname and use Google DNS for Internet access
Invoke-DCPrep -Hostname "DC" -NewIPv4DNSServer "8.8.8.8"
# Use custom IP and default gateway and display verbose output
Invoke-DCPrep -Verbose -NewIPv4Address "192.168.1.99" -NewIPv4Gateway "192.168.1.1"
La fonction installe la fonctionnalité AD DS et met en place une nouvelle forêt Active Directory sans nécessiter d'intervention utilisateur. Redémarre l'ordinateur une fois terminé.
# Installs a new forest with FQDN of "bufu-sec.local" with default DSRM password of "Password!"
Invoke-ForestDeploy -Domain bufu-sec.local
# Installs a new forest with FQDN of "bufu-sec.local" with the DSRM password set to "P@ssword!" and displaying debug messages
Invoke-ForestDeploy -Domain "bufu-sec.local" -DSRMPassword "P@ssword!" -Verbose
La fonction commence par installer la fonctionnalité DNS. Elle ajoute ensuite la zone principale et configure le redirecteur de serveur.
# Install and configure DNS on the current host and display verbose output.
Invoke-DNSDeploy -Verbose -NetworkID 192.168.47.0/24 -ZoneFile "47.168.192.in-addr.arpa.dns" -ServerForwarder 1.1.1.1
La fonction commence par installer la fonctionnalité DHCP sur la machine actuelle. Elle ajoute ensuite les groupes de sécurité nécessaires et autorise le nouveau serveur DHCP auprès du contrôleur de domaine. Enfin, elle configure la nouvelle étendue DHCP avec les valeurs fournies.
# Install and configure DHCP on the local DC.
Invoke-DHCPDeploy -Verbose -ScopeName "Default" -ScopeID 192.168.47.0 -StartIP 192.168.47.100 -EndIP 192.168.47.200 -SubnetMask 255.255.255.0 -DNSServer 192.168.47.10 -Router 192.168.47.10
# Install and configure DHCP on the specified DC.
Invoke-DHCPDeploy -Verbose -ScopeName "Default" -ScopeID 192.168.47.0 -StartIP 192.168.47.100 -EndIP 192.168.47.200 -SubnetMask 255.255.255.0 -DNSServer 192.168.47.10 -Router 192.168.47.10 -DCFQDN DC01.bufu-sec.local
La fonction commence par créer les groupes et UO définis dans la variable globale Groups. Elle génère ensuite par défaut 10 objets utilisateur pour chaque UO.
# Fill forest with objects and display verbose output
Invoke-ADLabConfig -Verbose
# Create 50 users for each OU and display verbose output
Invoke-ADLabConfig -Verbose -UserCount 50
La fonction récupère un certain nombre d'utilisateurs aléatoires du domaine et définit le flag DoesNotRequirePreAuth pour chacun. Exclut les comptes par défaut comme Administrator et krbtgt. Rend 5% des utilisateurs ASREP-Roastable par défaut.
# Make 5% of users ASREP-Roastable and display verbose output
Set-ASREPRoasting -Verbose
# Make 10 random users in the domain ASREP-Roastable
Set-ASREPRoasting -VulnerableUsersCount 10
# Make user bufu ASREP-Roastable and display verbose output
Set-ASREPRoasting -Users bufu -Verbose
# Make supplied list of users ASREP-roastable and display verbose output
Set-ASREPRoasting -Users ("bufu", "pepe") -Verbose
La fonction récupère un certain nombre d'utilisateurs aléatoires du domaine et ajoute un SPN pour chacun. Exclut les comptes par défaut comme Administrator et krbtgt. Rend 5% des utilisateurs kerberoastable par défaut.
# Make 5% of users ASREP-Roastable and display verbose output
Set-Kerberoasting -Verbose
# Make 10 random users in the domain ASREP-Roastable
Set-Kerberoasting -VulnerableUsersCount 10
# Make user bufu ASREP-Roastable and display verbose output
Set-Kerberoasting -Users bufu -Verbose
# Make supplied list of users ASREP-roastable and display verbose output
Set-Kerberoasting -Users ("bufu", "pepe") -Verbose
La fonction commence par accorder au groupe Chads les droits GenericAll sur le groupe Domain Admins. Elle accorde ensuite au groupe Degens les droits GenericALl sur le groupe Chads. Enfin, elle accorde les droits GenericAll sur certains utilisateurs du groupe Degens à certains utilisateurs du groupe Normies.
# Create vulnerable ACLs and display verbose output
Set-BadACLs -Verbose
La fonction configure d'abord une GPO pour autoriser WinRM sur le port TCP 5985 vers les systèmes joints au domaine. Elle active ensuite PS Remoting via la GPO.
# Enable PS Remoting and display verbose output
Set-PSRemoting -Verbose