Lors des labs précédents, nous avons étudié les étapes d’accès initial, d’exécution de code et de persistance du framework MITRE ATT&CK en imitant certains acteurs malveillants.
- Attack Detection Fundamentals - Initial Access Lab 1
- Attack Detection Fundamentals - Initial Access Lab 2
- Attack Detection Fundamentals - Initial Access Lab 3
- Attack Detection Fundamentals - Code Execution
- Attack Detection Fundamentals - Persistence
Nous allons désormais nous intéresser à la phase de reconnaissance, de “découverte”, du framework MITRE ATT&CK [1]:
Dans ce premier lab de la série Discovery and Lateral Movement du workshop Attack Detection Fondamentals nous allons utiliser le framework Covenant et explorer des techniques permettant d’obtenir des crédentials. [2]
Covenant fait partie des outils préférés des black hat.
Nous allons utiliser Rubeus, un outil integré dans Covenant, afin de réaliser les attaques kerberoasting et AS-REP roasting.
Au préalable, nous avons déjà créé un lab Active Directory vulnérable à ces attaques.
Nous utiliserons également SharpSploit (PowerSploit) pour énumérer les utilisateurs et les groupes du domaine.
Pour l’analyse de cette attaque, nous étudierons les Event Tracing for Windows ETW qui permettent entre autre d’avoir des données concernant l’utilisation de .NET [3,4]. Pour loguer les événements ETW nous utiliserons SilkService.
SilkService n’est pas un outil encore prêt à être déployé en entreprise. Toutefois la télémétrie qu’il génère est comparable à celle qui peut être utilisée par des Endpoint Detection and Response (EDR).
Config du lab: VM Win 10 avec SilkService + VM Windows Server 2016 avec AD vulnérable au kerberoasting et au AS-REP roasting + VM Ubuntu avec Covenant.
- Pour installer Covenant sur Ubuntu, voir lab 1 Initial Access
- Pour créer un lab Active Directory vulnérable, voir cet article
Installation de SilkService
Remarque: Problème rencontré pour loguer les évenements ldap avec Win 7 -> Utiliser une VM Windows 10
Event Tracing for Windows (ETW) is a system and software diagnostic, troubleshooting and performance monitoring component of Windows [5] ETW is an efficient kernel-level tracing facility that lets you log kernel or application-defined events to a log file [6].
Fonctionnement de SilkETW / SilkService [7]:
Sur la VM Win 10:
- Pré-requis
Installer VC++ 2015 x86 redistributable package, Dependencies\vc2015_redist.x86.exe: https://www.microsoft.com/en-us/download/details.aspx?id=48145
Installer Microsoft .NET Framework 4.5, Dependencies\dotNetFx45_Full_setup.exe: https://www.microsoft.com/en-ie/download/details.aspx?id=30653
- SilkETW
Télécharger la dernière version de SilkETW: https://github.com/fireeye/SilkETW/releases
- SilkService
Avec un compte admin: sc create SillkService binPath= "C:\Path\To\SilkService.exe" start= demand
Configuration SilkService utilisée, SilkServiceConfig.xml
:
<SilkServiceConfig>
<!--
Microsoft-Windows-LDAP-Client ETW Provider
-->
<ETWCollector>
<Guid>859efb51-6985-480f-8094-77192b2a7407</Guid>
<CollectorType>user</CollectorType>
<ProviderName>099614a5-5dd7-4788-8bc9-e29f43db28fc</ProviderName>
<UserKeywords>0x1</UserKeywords><!--Search-->
<OutputType>eventlog</OutputType>
</ETWCollector>
</SilkServiceConfig>
Explication:
- Crée un consumer [8] et capture les événements du fournisseur ETW Microsoft-Windows-LDAP-Client: capture les requêtes LDAP émises par l’hôte.
- Le flag 0x1 signifie que nous journalisons uniquement les requêtes de recherche, search, et leur paramètres, pas les réponses [9]
Enregistrer sous SilkServiceConfig.xml
et placer le fichier dans le même dossier que SilkService.exe
Au besoin, modifier la ligne GUID par un nouveau GUID [10]. Pour créer un nouveau GUID: New-Guid
Lancer SilkService. En tant qu’admin: Services > SilkService
. Clic-droit Start
On a désormais des logs SilkService
dans l’Event Viewer
The Hunting ELK, HELK:
The Hunting ELK est un projet développé par Roberto Rodriguez, aka Cyb3rWard0g [11]
Il est possible de forwarder les évenements ETW dans HELK.
Pour installer HELK, voir [12,13,14]
Toutefois, HELK nécessite au minimum 5GB de RAM…
Attaques
Créer un nouveau listener dans Covenant: http://127.0.0.1:7443/listener
Créer un binary launcher http://127.0.0.1:7443/launcher
Générer le binary launcher et le download: GruntHTTP.exe
Transférer le launcher sur la victime, VM Win 10. Dans mon cas j’utilise un serveur http pour le transfert
Penser à désactiver l’AV et le FW
Exécuter le launcher
Résultat, on a un grunt:
On peut interagir avec Interact
Kerberoasting:
Source: [15]
Pour en savoir plus sur cette attaque voir [16,17,18]
Il existe plusieurs outils pour réaliser l’attaque Kerberoast [17,19]. Dans notre cas nous allons utiliser Rubeus [20] qui vient avec Covenant.
Rubeus kerberoast
On retrouve bien le user1
que nous avons créé lors de la mise en place du lab AD vulnérable
Il est possible de détecter les activités de reconnaissance LDAP en examinant les filtres de recherche utilisés [21]
Evt ID 3 - Dans SilkService-Log
on trouve:
LDAP Recon - SPNs search filter: (&(samAccountType=805306368)(servicePrincipalName=*)
[21,22,23]
Il s’agit du filtre utilisé par Rubeus
Vérification dans AD:
AS-REP roasting is a technique that allows retrieving password hashes for users that have Do not require Kerberos preauthentication property selected [24]
Rubeus asreproast
On retrouve le user2
qu’on avait créé précédement lors de la création du lab AD vulnérable
Evt ID 3 - Dans SilkService-Log
on trouve:
“Do not require kerberos preauthentication” enabled - Search filter: (userAccountControl:1.2.840.113556.1.4.803:=4194304))
[25]
Vérification dans AD:
SharpSploit - PowerSploit
En plus de Rubeus, Covenant vient avec SharpSploit. SharpSploit permet d’utiliser PowerSploit [26] et son module PowerView.
Get-DomainGroup “Admins du domaine”
SilkService-Log
:
Conclusion
Dans ce lab, nous avons vu comment un attaquant peut identifer des utilisateurs intéressants dans AD et des cibles pour les attaques Kerberoast et AS-REP roasting.
Grâce à la télémétrie ETW nous sommes en mesure de retrouver les filtres LDAP utilisés pour réaliser la reconnaissance.
Références
[1] MITRE ATT&CK, Discovery, https://attack.mitre.org/tactics/TA0007/
[2] F-Secure, Attack Detection Fundamentals: Discovery and Lateral Movement - Lab #1, https://labs.f-secure.com/blog/attack-detection-fundamentals-discovery-and-lateral-movement-lab-1
[3] F-Secure, Detecting Malicious Use of .NET – Part 2, https://blog.f-secure.com/detecting-malicious-use-of-net-part-2/
[4] FireEye, SilkETW: Because Free Telemetry is … Free!, https://www.fireeye.com/blog/threat-research/2019/03/silketw-because-free-telemetry-is-free.html
[5] Microsoft, Part 1 - ETW Introduction and Overview, https://docs.microsoft.com/en-gb/archive/blogs/ntdebugging/part-1-etw-introduction-and-overview
[6] Roberto Rodriguez, Threat Hunting with ETW events and HELK — Part 1: Installing SilkETW, https://medium.com/threat-hunters-forge/threat-hunting-with-etw-events-and-helk-part-1-installing-silketw-6eb74815e4a0
[7] Roberto Rodriguez, Threat Hunting with ETW events and HELK — Part 2: Shipping ETW events to HELK, https://medium.com/threat-hunters-forge/threat-hunting-with-etw-events-and-helk-part-2-shipping-etw-events-to-helk-16837116d2f5
[8] Microsoft, Consumers, https://docs.microsoft.com/en-us/windows/win32/etw/about-event-tracing#consumers
[9] Microsoft, Event Tracing in LDAP Applications, https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ldap/ldap-and-etw
[10] Tracing as a Service with SilkETW, pt I, https://blog.iisreset.me/tracing-as-a-service-with-silketw-pt/
[11] Cyb3rWard0g, HELK, https://github.com/Cyb3rWard0g/HELK
[12] Roberto Rodriguez, Welcome to HELK! : Enabling Advanced Analytics Capabilities, https://cyberwardog.blogspot.com/2018/04/welcome-to-helk-enabling-advanced_9.html
[13] The HELK, Installation, https://thehelk.com/installation.html
[14] Roberto Rodriguez, Threat Hunting with ETW events and HELK — Part 2: Shipping ETW events to HELK, https://medium.com/threat-hunters-forge/threat-hunting-with-etw-events-and-helk-part-2-shipping-etw-events-to-helk-16837116d2f5
[15] MITRE ATT&CK, Steal or Forge Kerberos Tickets: Kerberoasting, https://attack.mitre.org/techniques/T1558/003/
[16] Hackndo, Kerberoasting,https://beta.hackndo.com/kerberoasting/
[17] m0chan, How To Attack Kerberos 101, https://m0chan.github.io/2019/07/31/How-To-Attack-Kerberos-101.html#invoke-kerberoastps1
[18] Pentestlab, Kerberoast, https://pentestlab.blog/2018/06/12/kerberoast/
[19] Tarlogic, How To Attack Kerberos, https://www.tarlogic.com/en/blog/how-to-attack-kerberos/
[20] Rubeus, https://github.com/GhostPack/Rubeus
[21] Microsoft, Hunting for reconnaissance activities using LDAP search filters, https://techcommunity.microsoft.com/t5/microsoft-defender-for-endpoint/hunting-for-reconnaissance-activities-using-ldap-search-filters/ba-p/824726
[22] CalCom, Preventing LDAP Reconnaissance - The First Step Of AD Attacks, https://calcomsoftware.com/preventing-ldap-reconnaissance/
[23] StealhBits, LDAP Reconnaissance, https://attack.stealthbits.com/ldap-reconnaissance-active-directory
[24] Red Team Experiments, AS-REP Roasting,https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/as-rep-roasting-using-rubeus-and-hashcat
[25] Microsoft, Active Directory: LDAP Syntax Filters, https://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx
[26] Ryon Cobbr, Introducing SharpSploit: A C# Post-Exploitation Library, https://posts.specterops.io/introducing-sharpsploit-a-c-post-exploitation-library-5c7be5f16c51?gi=dbe93a9bd871
Poursuivez avec :
This work is licensed under a Creative Commons Attribution 4.0 International License.