Essentiële beveiligingsinstellingen voor Windows | 4 veelvoorkomende methoden van exfiltratie van inloggegevens bestrijden

In ons recente artikel Exploring an NTLM Brute Force Attack with Bloodhound gingen we na hoe aanvallers nog altijd misbruik maken van het NTLM-verificatieprotocol. In deze blog kijken we in meer algemene zin naar standaardaanvallen tegen SAM, LSA-geheimen, SYSKEY en LSASS. We leggen uit hoe aanvallers die gebruiken om inloggegevens van een Windows-computer te bemachtigen om te laten zien hoe belangrijk het is dat deze methoden in de gaten worden gehouden door beveiligingsteams. Ook al zijn dit bekende en betrekkelijk eenvoudige aanvallen om inloggegevens te stelen, toch worden ze nog steeds gebruikt, wat er op lijkt te wijzen dat er beveiligingsteams zijn die deze beproefde technieken over het hoofd zien.

De jacht op inloggegevens in gewone tekstvorm via LSASS of het in handen krijgen van de SAM voor de NTLM- of LSA-sleutels voor de geheimen ervan, is voor aanvallers bijzonder lucratief. Alleen maar toegang tot een computer krijgen, is voor aanvallers niet voldoende als ze veel meer kunnen doen wanneer ze in de verschillende stappen van hun ‘kill chain’ over geldige inloggegevens beschikken.

Daarom maken aanvallers regelmatig gebruik van het dumpen van inloggegevens tijdens een laterale beweging. Met de inlognamen en wachtwoorden van accounts in handen kunnen aanvallers verder hun weg zoeken in het netwerk van een organisatie, gegevens met beperkte toegang openen, en opdrachten en programma’s met machtigingen op een hoger niveau uitvoeren.

Overzicht van het exfiltreren van inloggegevens

Op een hoog niveau zal een potentiële aanvaller het volgende willen doen:

1. De NTLM-hash(es) in handen krijgen voor cracks en manipulatie offline.

  • HKLM\SAM: bevat de NTLMv2-hashes van gebruikerswachtwoorden
  • HKLM\security: bevat in het cachegeheugen opgeslagen LSA-geheimen en -sleutels van domeinrecords
  • HKLM\system, ofwel SYSKEY: bevat sleutels voor het LSA-geheim en de SAM-database

2. LSASS dumpen, om het wachtwoord in tekstvorm of alleen de NTLM-hashes in handen te krijgen (afhankelijk van de versie van het betrokken Windows-systeem).

Opmerking: de functionaliteit en de opgeslagen informatie kunnen verschillen. Er zijn bijvoorbeeld verschillen tussen computers die zich in een Active Directory-domein bevinden en computers waarvoor dat niet geldt.

Laten we ons eens gaan verdiepen in de details van de verschillende componenten die hierboven zijn genoemd.

1. SAM: HKLM\SAM

De SAM-database (Security Account Manager) is de locatie waar Windows informatie over gebruikersaccounts bewaart. Deze database met gebruikersnamen en hashes van gebruikerswachtwoorden wordt gebruikt om gebruikers te verifiëren die inloggen en hun wachtwoord opgeven.

De lengte en complexiteit van hashes variëren naar gelang het algoritme waarmee het wachtwoord wordt versleuteld. Dat kan een eenvoudig DES-LM-versleutelingsalgoritme (Lan Manager) zijn of een van de twee versies van het NTHash-algoritme: NTLMv1 of NTLMv2, die beide 32 hexadecimale cijfers genereren en worden afgeleid van de MD4-digest.

Een van de meest gebruikte methoden om gebruikerswachtwoorden te bemachtigen, is de SAM-database te dumpen met een tool die de wachtwoordhashes kan uitpakken of door de registry rechtstreeks te kopiëren naar een bestand [reg.exe save hklmSAM] en daar offline aan te werken met een andere tool om de opgeslagen wachtwoordhashes van gebruikersaccounts eruit te halen.

Nadat de LM- of NTLM-hash is bemachtigd, kan er offline brute force op de wachtwoordhash worden uitgevoerd, zoals verderop in deze post nader wordt beschreven.

Beveiligingsonderzoeker?
Ga naar SentinelLabs, ons blog over onderzoek en dreigingsinformatie

2. LSA-geheimen: HKLM\security

LSA-geheimen worden gebruikt als opslag voor de Local Security Authority (LSA) in Windows.

De Local Security Authority beheert het lokale beveiligingsbeleid van een systeem, wat inhoudt dat privégegevens worden opgeslagen die onder meer betrekking hebben op inloggegevens en verificatie van gebruikers en op hun LSA-geheimen. Toegang tot de opslag van LSA-geheimen wordt alleen verleend door SYSTEM-accountprocessen.

Met LSA-geheimen worden systeemgevoelige gegevens opgeslagen, zoals:

  • Gebruikerswachtwoorden
  • Internet Explorer-wachtwoorden
  • Wachtwoorden van serviceaccounts (voor services op de computer waarvoor verificatie met een geheim nodig is)
  • In het cachegeheugen opgeslagen sleutels voor domeinwachtwoorden
  • SQL-wachtwoorden
  • Wachtwoorden voor het SYSTEM-account
  • Accountwachtwoorden voor geconfigureerde, geplande taken
  • Resterende tijd tot het aflopen van een niet-geactiveerd exemplaar van Windows

En nog veel meer. De vroegste implementaties van LSA-geheimen werden al snel gekraakt en tools als mimikatz kunnen ook LSA-geheimen dumpen uit geheugen- en registerhives in sommige versies van Windows.

3. SYSKEY: HKLM\System

Syskey, ook wel bekend onder de naam SAM Lock Tool, maakte deel uit van oudere Windows-versies. Deze functie versleutelt de SAM (Security Account Manager)-database en zorgt daarmee voor een extra beschermingslaag voor SAM tijdens het opstarten van de computer.

Syskey beschermt de beveiligingsgegevens alleen wanneer het besturingssysteem niet actief is. Is het besturingssysteem actief, dan wordt de Syskey-waarde in het geheugen geladen, zodat hiermee later de SAM kan worden ontsleuteld. HKLM\SAM is gekoppeld aan de SECURITY-subsleutel onder HKLM\SECURITY\SAM.

De Syskey-functie is vanaf 2017 stopgezet, maar is nog wel te vinden onder hklm\system in relevante versies van Windows waar de functie wordt ingeschakeld en geconfigureerd.

4. Inloggegevens dumpen met LSASS

Tot aan de release van Windows 8 konden met mimikatz in Windows de inloggegevens in gewone tekst worden opgehaald uit de Local Security Authority Subsystem Service (LSASS).

In de loop van de tijd zijn er verschillende correcties doorgevoerd waarmee het LSASS-gebruik steeds beter werd beschermd, zodat het steeds moeilijker werd het gehashte wachtwoord te pakken te krijgen. In Windows 10 Enterprise is ook Credential Guard beschikbaar om het LSASS-proces onbereikbaar te maken, zelfs voor gebruikers met SYSTEM-rechten.

Mimikatz-wachtwoordextractie in Windows 7:

De wijzigingen zijn te zien wanneer de tool in Windows 10 wordt uitgevoerd. We zien niet het wachtwoord met gewone tekst, maar wel de NTLMv1-hash.

Wachtwoordextractie vanuit NTLMv2-hash

De NTLM-hash is op tal van manieren te achterhalen als u geen lokale toegang tot de doelcomputer hebt.

Responder is een van de populairdere tools die voor deze taak gebruikt kunnen worden.


Voorbeeld van de NTLMv2-hash die als output wordt verkregen met behulp van Responder

admin::M57oDBrlht:08ca45b7d6da58ee:88dcbe4346168966a153a0064958dae6:5b6740315c7830310000000000000b45c67103d07d7b95acd12dea11230e0000000052920b85f78d013c31cdb3b92f5d765c783030

Deze tool biedt vele mogelijkheden, maar in deze is het relevant dat gebruikers naar inloggegevens kan worden gevraagd wanneer bepaalde netwerkservices worden aangevraagd. Dat kan resulteren in wachtwoorden met gewone tekst of wachtwoordhashes.

Bij deze aanval wordt de tool gebruikt om LLMNR-pakketten te detecteren en de hash te extraheren uit de uitdaging/respons. We stellen de tool in om naar de juiste pakketten op het netwerk te scannen, waarna we vanaf de getroffen computer een netwerkresource proberen op te halen die er in feite niet is. Op die manier zouden we het verkeer moeten kunnen vastleggen en van daaruit de NTLM-hash eruit halen.

Ik probeerde vanaf een Windows-computer toegang te krijgen tot de niet-bestaande share “MadeUpNetworkShare”. De tool draaide op een computer in hetzelfde netwerk en legde de uitdaging/respons vast, waardoor de NTLM-hashes aan het licht kwamen.

Hoe kunnen wachtwoordhashes worden gebruikt?

Nu we de hash hebben, zijn er enkele opties om het wachtwoord met gewone tekst te extraheren.

Woordenlijst-aanval/Brute-force-aanval: bij deze methode wordt gebruikgemaakt van een woordenlijst waarmee de wachtwoorden worden vergeleken. Voor dat soort werk zijn er openbare tools beschikbaar, zoals John the Ripper, hashcat, Cain & Abel en Ophcrack.

Rainbowtabel-aanval: deze methode is meer geschikt voor het kraken van een hash, maar is afhankelijk van een bestaande database met mogelijke wachtwoorden en de bijbehorende vooraf berekende hashes.

Voorbeeld van het kraken van een NTLMv1-wachtwoord met een rainbowtabel (overgenomen van https://crackstation.net/):

Houd er wel rekening mee dat alleen bekende, niet-bewerkte hashes op deze manier van hash naar wachtwoord kunnen worden herleid.

Als het te moeilijk is om het wachtwoord te kraken, zijn er andere opties zoals een pass the hash-aanval. Daarvoor moet gebruik worden gemaakt van services in het netwerk die verificatie uitvoeren met behulp van een hash van het wachtwoord en niet met het wachtwoord zelf. Een goed voorbeeld daarvan is psexec, maar er zijn ook andere services die via SMB communiceren.

Aanbevelingen om het exfiltreren van inloggegevens te voorkomen

Om het dumpen en exfiltratie van inloggegevens te voorkomen, zouden organisaties ervoor moeten zorgen dat oudere systemen in het netwerk geen LM-versleutelde wachtwoorden meer in de SAM-database hebben en dat LM (dat standaard is uitgeschakeld) niet op nieuwere systemen is ingeschakeld. LM-wachtwoorden gebruiken een beperkte tekenset en zijn eenvoudig te kraken.

Het verdient ook aanbeveling NTLMv1 uit te schakelen. Het is betrekkelijk eenvoudig om wachtwoorden uit een NTLMv1-hash te extraheren en zolang deze niet anders is geconfigureerd, zouden de meeste services die met NTLMv1 werken, dat ook met NTLMv2 moeten doen.

U kunt LM en NTLMv1 beide uitschakelen vanaf de pagina Groepsbeleidobject (Group Policy Object, GPO):

Breng de volgende wijzigingen aan in het Groepsbeleidobject om gebruik van NTLMv1 te voorkomen:

Het is niet zo eenvoudig om de NTLMv2-hash te kraken als het een lang en uniek wachtwoord betreft. En de hash biedt een aanvaller niet per definitie een voordeel als er geen services zijn die verificatie uitvoeren met NTLM-hashes.

Het is ook raadzaam Credential Guard in te schakelen op Windows 10-computers die dat ondersteunen om meer bescherming te bieden voor NTLM- en Kerberos-inloggegevens.

De meest effectieve manier voor een organisatie om de aanvalsmogelijkheden te verminderen en bescherming te bieden tegen het exfiltreren van inloggegevens is een next-gen beveiligingsoplossing zoals SentinelOne te implementeren die gebruikmaakt van machine learning en Actieve EDR.

En niet te vergeten…

Deze elementaire aanvallen kunnen worden afgeweerd door aandacht te besteden aan de architectuur van uw netwerk en de services die in uw omgeving worden gebruikt. Het zijn met name dit soort aanvallen die het meest effectief zijn in Windows 7 (en lager) en die ondanks hun EOL-status (End Of Life) nog steeds in veel bedrijfsnetwerken voorkomen. Gelukkig gebruiken veel organisaties tegenwoordig veiligere implementaties, zoals Kerberos in een groepsdomein om precies die kwetsbaarheden te vermijden die we hier hebben besproken. Bovendien implementeren ze een betrouwbaar, next-gen platform voor endpointbeveiliging om hun apparaten en netwerk te beschermen.

Referenties voor MITRE ATT&CK

Credential Dumping – T1003
Pass the Hash – T1075
Brute Force – T1110