
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
Основное использование
Чтобы просканировать сеть, запустите его следующим образом:
rdpscan 192.168.1.1-192.168.1.255
Это выдает один из трех результатов для каждого адреса:
- SAFE - если цель определена как запатченная или, по крайней мере, требующая CredSSP/NLA
- VULNERABLE - если цель подтверждена как уязвимая
- UNKNOWN - если цель не отвечает или произошла какая-то ошибка протокола
Когда по целевому IP-адресу ничего нет, старые версии выводили сообщение
"UNKNOWN - connection timed out". При сканировании больших сетей
это создает перегрузку информацией о системах, которые вам безразличны. Поэтому новая версия по умолчанию не выводит
эту информацию, если только вы не добавите -v (verbose) в командной строке.
Вы можете увеличить скорость сканирования больших сетей, увеличив
количество рабочих потоков:
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