
Сканирование шлюзов удаленного рабочего стола (Потенциально неисправленные CVE-2020-0609 и CVE-2020-0610)
Сканер имеет 2 режима работы:
Использует код сканирования уязвимостей из https://github.com/MalwareTech/RDGScanner
Сканирование на уязвимости повреждения памяти опасно и может привести к сбоям в работе систем. Хотя этот инструмент разработан для предотвращения сбоев, стабильность не может быть гарантирована на 100%. Используйте на свой страх и риск и сканируйте только те системы, которые вам разрешено тестировать.
Сканер многопоточный и может обрабатывать файлы, содержащие CIDR-маски, но для больших сетей вы, возможно, захотите использовать nmap для поиска открытых портов UDP 3391 перед сканированием уязвимостей. На данный момент это не работает «из коробки». Вам нужно добавить 3391 в секцию DTLS в nmap-payloads (обычно в /usr/share/nmap, скоро будет PR) и сканировать, например, с помощью:
nmap -Pn -p 3391 -sU -oA rdg_scan_yyyymmdd 10.0.0.0/24 (требуются права root)
Порт по умолчанию для сканирования уязвимостей — UDP 3391, изменить с помощью --port.
Не все шлюзы RD имеют активный или открытый на брандмауэре UDP 3391, вероятно, потому что он работает и с HTTPS, а администраторы не потрудились прочитать документацию. Если вы также хотите найти такие шлюзы RD, используйте webcheck (возможно, вы опасаетесь сервера с незапатченным CVE-2020-0609, и операторы откроют UDP 3391 через 6 месяцев из-за «лучшей производительности в сетях с высокой задержкой»).
Для сканирования через HTTPS используйте параметр --webcheck или -w. Порт по умолчанию для webcheck — TCP 443, изменить с помощью --port.
Имейте в виду, что, например, в свежих Debian/Kali установлены настройки OpenSSL по умолчанию, которые не позволяют ни одной программе, включая python, curl и т.д., устанавливать соединения с небезопасными реализациями SSL, включая всё ниже TLSv1.2. Это разумно для интернет-банкинга, но не для сканирования уязвимостей, где вы также хотите найти тот старый хост, всё ещё использующий SSLv3. Я не нашел лучшего решения, чем изменить это в /etc/ssl/openssl.cnf. Найдите/добавьте секцию [system_default_sect] и измените ее на:
[system_default_sect]
MinProtocol = SSLv3
CipherString = DEFAULT@SECLEVEL=1
Не забудьте вернуть обратно для чувствительных вещей! Если вы знаете решение, которое меняло бы эти настройки только для python-скрипта, дайте мне знать ;)
Ошибки SSL, появляющиеся во время сканирования, могут быть от IPS-систем.
Сканер может обрабатывать:
Example: python3 rdg_scanner_cve-2020-0609.py 192.168.1.1/24 # vuln scan for cve-2020-0609 on UDP 3391
Example2 python3 rdg_scanner_cve-2020-0609.py 192.168.1.1/24 --webcheck # check webpage for RD gateway
Example3: python3 rdg_scanner_cve-2020-0609.py 192.168.1.1
Example4: python3 rdg_scanner_cve-2020-0609.py fakewebsiteaddress.com
Example5: python3 rdg_scanner_cve-2020-0609.py as15169
Example6: python3 rdg_scanner_cve-2020-0609.py file:hostfile.txt
usage: rdg_scanner_cve-2020-0609.py [-h] [--port PORT] [--webcheck]
[--verbose]
target
Установка не требуется. Для Debian/Kali нужно: apt-get install python3-netaddr
TODO: