Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
rdpscan-BlueKeep — Быстрый сканер для уязвимости CVE-2019-0708 "BlueKeep". | Kitploit
Инструменты/GitHubGitHub/gh0st0ne/rdpscan-bluekeep
РазведкаСканеры уязвимостейЭксплуатацияСбор информацииСетевая безопасностьТестирование на Проникновение
GitHubgh0st0ne/rdpscan-bluekeep

rdpscan-BlueKeep

Быстрый сканер для уязвимости CVE-2019-0708 "BlueKeep".

Репозиторий
127 лет назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Windows download macOS download Linux download Follow

rdpscan для уязвимости CVE-2019-0708 BlueKeep

Это быстрый и грязный сканер для уязвимости CVE-2019-0708 в Microsoft Remote Desktop. На данный момент около 900 000 машин в публичном интернете уязвимы для этой уязвимости, поэтому многие ожидают скорого появления червя, подобного WannaCry и notPetya. Поэтому просканируйте свои сети и установите патчи (или, по крайней мере, включите NLA) на уязвимых системах.

Это инструмент командной строки. Вы можете скачать исходный код и скомпилировать его самостоятельно, или скачать один из предварительно скомпилированных бинарных файлов для Windows или macOS по ссылке выше.

Этот инструмент полностью основан на патче rdesktop из https://github.com/zerosum0x0/CVE-2019-0708. Я просто обрезал код, чтобы его можно было легко скомпилировать на macOS и Windows, а также добавил возможность сканировать несколько целей.

Статус

Этот инструмент появился всего несколько дней назад и является экспериментальным. Однако я тестирую его, сканируя весь интернет (с помощью masscan), так что довольно быстро прорабатываю множество проблем. Вы можете связаться со мной в Twitter (@erratarob) для помощи/комментариев.

  • 2019-05-38 - Улучшенные описания результатов вывода, а также документация о том, что они означают (см. ниже).
  • 2019-05-27 - Выпущены бинарные файлы для Windows и macOS (нажмите на значки выше).
  • 2019-05-26 - Исправление проблем с сетью в Windows
  • 2019-05-25 - Linux и macOS работают хорошо, Windows имеет несколько сетевых ошибок
  • 2019-05-24 - Работает на Linux и macOS, Windows имеет несколько ошибок компиляции
  • 2019-05-23 - В настоящее время работаю над macOS в XCode

Основное использование

Чтобы просканировать сеть, запустите его следующим образом:

root@kitploit:~
rdpscan 192.168.1.1-192.168.1.255

Это выдает один из трех результатов для каждого адреса:

  • SAFE - если цель определена как запатченная или, по крайней мере, требующая CredSSP/NLA
  • VULNERABLE - если цель подтверждена как уязвимая
  • UNKNOWN - если цель не отвечает или произошла какая-то ошибка протокола

Когда по целевому IP-адресу ничего нет, старые версии выводили сообщение "UNKNOWN - connection timed out". При сканировании больших сетей это создает перегрузку информацией о системах, которые вам безразличны. Поэтому новая версия по умолчанию не выводит эту информацию, если только вы не добавите -v (verbose) в командной строке.

Вы можете увеличить скорость сканирования больших сетей, увеличив количество рабочих потоков:

root@kitploit:~
rdpscan --workers 10000 10.0.0.0/8

Однако на моем компьютере получается только около 1500 рабочих потоков из-за ограничений системы, независимо от того, насколько высоко я установлю этот параметр.

Вы можете еще больше увеличить скорость, используя этот инструмент вместе с masscan, как описано во втором разделе ниже.

Интерпретация результатов

Есть три общих ответа:

  • SAFE - означает, что цель, вероятно, запатчена или иным образом не уязвима для этой ошибки.
  • VULNERABLE: означает, что мы подтвердили, что цель уязвима для этой ошибки, и при атаке червя она, скорее всего, будет заражена.
  • UNKNOWN: означает, что мы не можем подтвердить ни то, ни другое, обычно потому, что цель не отвечает или не запущен RDP, что составляет подавляющее большинство ответов. Также, когда цели испытывают нехватку ресурсов или проблемы с сетью, мы получаем много таких ответов. Наконец, многие из них обусловлены ошибками протокола. Хотя три основных ответа - SAFE, VULNERABLE и UNKNOWN, они содержат дополнительный текст, объясняющий диагноз. В этом разделе описаны различные строки, которые вы увидите.

SAFE

Есть три основные причины, по которым мы считаем цель безопасной:

  • SAFE - Цель выглядит запатченной Это происходит, когда цель не отвечает на триггерный запрос. Это означает, что это система Windows, которая была обновлена, или система, которая изначально не была уязвима, например Windows 10 или Unix.
  • SAFE - требуется CredSSP/NLA Это означает, что цель сначала требует аутентификации на уровне сети (NLA) до установки RDP-соединения. Инструмент не может пройти этот этап без легитимных учетных данных, поэтому не может определить, была ли цель запатчена. Однако хакеры также не смогут пройти этот этап для эксплуатации уязвимых систем, так что вы, вероятно, в безопасности. Но при появлении эксплойтов инсайдеры с действительными именами пользователей/паролями смогут эксплуатировать систему, если она не заплатчена.
  • SAFE - не RDP Это означает, что система не использует RDP, но имеет какую-то другую службу, которая использует тот же порт и дает ответ, явно не являющийся RDP. Типичные примеры: HTTP и SSH. Обратите внимание, что вместо идентифицируемого протокола сервер может ответить пакетом RST или FIN. В таких случаях статус будет UNKNOWN, а не SAFE.

VULNERABLE

Это означает, что мы подтвердили, что система уязвима для этой ошибки.

  • VULNERABLE - получен appid Есть только один ответ, когда система уязвима, - этот.

UNKNOWN

Существует огромное количество вариаций для UNKNOWN

  • UNKNOWN - нет соединения - таймаут Это, безусловно, самый распространенный ответ, когда целевой IP-адрес вообще не отвечает. Фактически, он настолько распространен, что при сканировании больших диапазонов адресов он обычно опускается. Для его включения необходимо добавить флаг -v (verbose).
  • UNKNOWN - нет соединения - отказано (RST) Это, безусловно, второй по распространенности ответ, когда цель существует и отвечает на сетевой трафик, но не запущен RDP, поэтому соединение отклоняется пакетом TCP RST.
  • UNKNOWN - ошибка протокола RDP - таймаут приема Это третий по распространенности ответ, когда мы успешно установили RDP-соединение, но затем сервер перестает отвечать. Это связано с сетевыми ошибками и перегрузкой целевой системы по какой-то причине. Это также могут быть сетевые ошибки на нашей стороне, например, когда вы находитесь за NAT и перегружаете его слишком большим количеством соединений.
  • UNKNOWN - нет соединения - соединение закрыто Это означает, что мы установили соединение (TCP SYN-ACK), но затем соединение немедленно закрывается (с использованием RST или FIN). Существует много причин, по которым это происходит, и мы не можем их различить:
    • Она использует RDP, но по какой-то причине закрывает соединение, возможно, из-за нехватки ресурсов.
    • Она не использует RDP и не принимает отправленный RDP-запрос, поэтому вместо отправки понятного сообщения об ошибке (которое привело бы к статусу SAFE - не RDP), она резко закрывает соединение.
    • Какое-то промежуточное устройство, например IPS, файрвол или NAT, закрыло соединение, поскольку идентифицировало его как враждебное, или же у него закончились ресурсы.
    • Какая-то другая причина, которую я не идентифицировал, при сканировании интернета происходит много странного.
  • UNKNOWN - нет соединения - хост недоступен (ошибка ICMP) Удаленная сеть сообщает, что хост недоступен или не работает. Попробуйте позже, если считаете, что хост должен быть активен.
  • UNKNOWN - нет соединения - сеть недоступна (ошибка ICMP) Произошла (временная) сетевая ошибка на удаленном конце. Попробуйте позже, если считаете, что эта сеть должна работать.
  • UNKNOWN - ошибка протокола RDP Это означает, что произошла какая-то ошибка в протоколе RDP, либо из-за неправильной реализации на удаленной стороне (не система Windows), либо из-за плохой обработки временной сетевой ошибки, либо по другой причине.
  • UNKNOWN - ошибка протокола SSL Начиная с Windows Vista, RDP использует протокол STARTTLS для работы через SSL. У этого уровня есть свои проблемы, как указано выше, включая плохую обработку основных сетевых ошибок или попытки связи с системами, имеющими какую-то несовместимость. Если вы получаете очень длинное сообщение об ошибке (например, SSL3_GET_RECORD:wrong version), это означает, что на другой стороне есть ошибка в SSL или в вашей собственной библиотеке SSL, которую вы используете.

Использование с masscan

Этот инструмент rdpscan довольно медленный, сканирует всего несколько сотен целей в секунду. Вместо этого вы можете использовать masscan для ускорения. Инструмент masscan примерно в 1000 раз быстрее, но предоставляет ограниченную информацию о цели.

Шаги следующие:

  • Сначала просканируйте диапазоны адресов с помощью masscan, чтобы быстро найти хосты, отвечающие на порту 3389 (или любом другом порту, который вы используете).
  • Затем передайте вывод masscan в rdpscan, чтобы он сканировал только те цели, которые, как мы знаем, активны.

Простой способ запуска - просто объединить их в командной строке:

root@kitploit:~
masscan 10.0.0.0/8 -p3389 | rdpscan --file -

Я делаю это в два этапа:

root@kitploit:~
masscan 10.0.0.0/8 -p3389 > ips.txt
rdpscan --file ips.txt --workers 10000 >results.txt

Сборка

Сложная часть - установка библиотек OpenSSL без конфликтов с другими версиями в системе. На Debian Linux я делаю:

root@kitploit:~
$ sudo apt install libssl-dev

После решения этой проблемы вы просто компилируете все .c файлы вместе следующим образом:

root@kitploit:~
$ gcc *.c -lssl -lcrypto -o rdpscan

Я поместил Makefile в каталог, который это делает, так что вы, вероятно, можете просто сделать:

root@kitploit:~
$ make

Код написан на C, поэтому требуется установленный компилятор C, например:

root@kitploit:~
$ sudo apt install build-essential

Распространенные ошибки сборки

В этом разделе описаны наиболее очевидные ошибки сборки.

root@kitploit:~
ssl.h:24:25: fatal error: openssl/rc4.h: No such file or directory

Это означает, что у вас либо не установлены заголовки OpenSSL, либо они находятся не в том пути. Помните, что даже если у вас установлены бинарные файлы OpenSSL, это не означает, что у вас установлены файлы для разработки. Вам нужны и заголовки, и библиотеки.

Чтобы установить их в Debian, выполните:

root@kitploit:~
$ sudo apt install libssl-dev

Чтобы исправить проблему с путем, добавьте флаг компиляции -I/usr/local/include или что-то подобное.

Пример проблемы компоновщика:

root@kitploit:~
Undefined symbols for architecture x86_64:
"_OPENSSL_init_ssl", referenced from:
    _tcp_tls_connect in tcp-fac73c.o
"_RSA_get0_key", referenced from:
    _rdssl_rkey_get_exp_mod in ssl-d5fdf5.o
"_SSL_CTX_set_options", referenced from:
    _tcp_tls_connect in tcp-fac73c.o
"_X509_get_X509_PUBKEY", referenced from:
    _rdssl_cert_to_rkey in ssl-d5fdf5.o

Я получаю это на macOS, потому что есть несколько версий OpenSSL. Я исправляю это, жестко прописывая пути:

root@kitploit:~
$ gcc *.c -lssl -lcrypto -I/usr/local/include -L/usr/local/lib -o rdpscan

Согласно комментариям других, следующая командная строка может работать на macOS, если вы использовали Homebrew для установки. Однако я все еще получаю ошибки компоновки выше, потому что установил другие компоненты OpenSSL, которые конфликтуют.

root@kitploit:~
gcc $(brew --prefix)/opt/openssl/lib/libssl.a $(brew --prefix)/opt/openssl/lib/libcrypto.a -o rdpscan *.c

Запуск

В разделе выше даны краткие советы по запуску программы. В этом разделе дана более подробная справка.

Чтобы просканировать одну цель, просто передайте адрес цели:

root@kitploit:~
./rdpscan 192.168.10.101

Вы можете передавать IPv6-адреса и DNS-имена. Можно передавать несколько целей. Пример:

root@kitploit:~
./rdpscan 192.168.10.101 exchange.example.com 2001:0db8:85a3::1

Вы также можете сканировать диапазоны адресов, используя IPv4-адреса в формате начало-конец или CIDR. Диапазоны IPv6 не поддерживаются, так как они слишком велики.

root@kitploit:~
./rdpscan 10.0.0.1-10.0.0.25 192.168.0.0/16

По умолчанию он сканирует только 100 целей одновременно. Вы можете увеличить это число с помощью параметра --workers. Однако, независимо от того, насколько высоко вы установите этот параметр, на практике вы получите максимум от 500 до 1500 одновременно работающих рабочих потоков, в зависимости от вашей системы.

root@kitploit:~
./rdpscan --workers 1000 10.0.0.0/24

Вместо указания целей в командной строке вы можете загрузить их из файла, используя хорошо названный параметр --file:

root@kitploit:~
./rdpscan --file ips.txt

Формат файла: один адрес, имя или диапазон на строку. Он также может принимать текст, сгенерированный masscan. Лишние пробелы обрезаются, пустые строки игнорируются, и любые строки комментариев игнорируются. Комментарием считается строка, начинающаяся с символа # или //.

Вывод отправляется в stdout и показывает статус VULNERABLE, SAFE или UNKNOWN. Для каждого могут быть дополнительные причины. Эти причины описаны выше.

root@kitploit:~
211.101.37.250 - SAFE - CredSSP/NLA required
185.11.124.79 - SAFE - not RDP - SSH response seen
125.121.137.42 - UNKNOWN - no connection - refused (RST)
40.117.191.215 - SAFE - CredSSP/NLA required
121.204.186.182 - SAFE - CredSSP/NLA required
99.8.11.148 - SAFE - CredSSP/NLA required
121.204.186.114 - SAFE - CredSSP/NLA required
49.50.145.236 - SAFE - CredSSP/NLA required
106.12.74.155 - VULNERABLE - got appid
222.84.253.26 - SAFE - CredSSP/NLA required
144.35.133.109 - UNKNOWN - RDP protocol error - receive timeout
199.212.226.196 - UNKNOWN - RDP protocol error - receive timeout
183.134.58.152 - UNKNOWN - no connection - refused (RST)
83.162.246.149 - VULNERABLE - got appid

Вы можете обрабатывать это с помощью дополнительных команд Unix, таких как grep и cut. Чтобы получить список только уязвимых машин:

root@kitploit:~
./rdpscan 10.0.0.0/8 | grep 'VULN' | cut -f1 -d'-'

Параметр -dddd означает диагностическую информацию, и чем больше d вы добавляете, тем больше деталей выводится. Это отправляется в stderr вместо stdout, чтобы вы могли разделить потоки. В bash это делается так:

root@kitploit:~
./rdpscan --file myips.txt -ddd 2> diag.txt 1> results.txt

Диагностическая информация

Добавление параметра -d выводит диагностическую информацию о соединениях в stderr.

root@kitploit:~
./rdpscan 62.15.34.157 -d

[+] [62.15.34.157]:3389 - connecting...
[+] [62.15.34.157]:3389 - connected from [10.1.10.133]:49211
[+] [62.15.34.157]:3389 - SSL connection
[+] [62.15.34.157]:3389 - version = v4.8
[+] [62.15.34.157]:3389 - Sending MS_T120 check packet
[-] [62.15.34.157]:3389 - Max sends reached, waiting...
62.15.34.157    - SAFE - Target appears patched

На macOS/Linux вы можете перенаправлять stdout и stderr отдельно в разные файлы обычным способом:

root@kitploit:~
./rdpscan --file ips.txt 2> diag.txt 1> results.txt

SOCKS5 и Tor для прикола

Итак, он включает поддержку SOCKS5:

root@kitploit:~
./rdpscan --file ips.txt --socks5 localhost --socks5port 9050

Это усугубляет проблемы с соединением, поэтому вы получаете гораздо больше результатов "UNKNOWN".

Скачать инструмент