Сканируем сеть на предмет наличия уязвимости CVE-2019-0708 (BlueKeep) с помощью модуля Metasploit и утилиты rdpscan в ОС Kali Linux 2019.2

Network Scan with Metasploit in Kali LinuxРанее мы писали о выпущенных обновлениях для закрытия уязвимости CVE-2019-0708 Remote Desktop Services Remote Code Execution Vulnerability. Развёртывание этих обновлений не вызывает само по себе какой-то сложности. Однако, учитывая серьёзность уязвимости, будет совсем не лишним провести дополнительное сканирование всех своих сетей на предмет выявления всё ещё уязвимых хостов. Для проведения подобных проверок есть разные методики и инструменты. В этой заметке мы рассмотрим то, как выполнить сканирование сетей с помощью scanner-модуля из состава комплекса Metasploit, поставляемого в специальном дистрибутиве ОС Kali Linux 2019.2. Помимо этого, в этой же ОС, мы выполним сборку и использование дополнительной утилиты сканирования rdpscan.


Разворачиваем Kali Linux

Те, кто до сих пор не знаком со специализированным дистрибутивом ОС Kali Linux, могут получить базовую информацию об этой сборке из статьи Википедии. Для проведения разовых проверок уровня информационной безопасности сетей или отдельной взятых хостов или сервисов с помощью ПО, входящего в состав Kali Linux, можно воспользоваться Live-Boot режимом без установки этой ОС на диск какого-либо компьютера.

В нашем случае для задач тестирования развёрнута выделенная виртуальная машина Hyper-V Gen2 на хосте виртуализации с ОС Windows Server 2012 R2.

Скачать загружаемый образ актуальной версии Kali Linux "без СМС и регистраций" можно с официального сайта проекта: Kali Linux Downloads

Установка Kali Linux на диск виртуальной машины не составит никакого труда для администратора, который уже имел дело с программой установки Linux Debian.

Сразу после установки нам потребуется выпустить систему в Интернет для возможности обновления всех предустановленных пакетов, в число которых входит и интересующий нас комплекс Metasploit. Обновление выполняется стандартным для APT-систем способом:

# apt-get update
# apt-get upgrade

Разумеется, чтобы обновление пакетов работало, в систему должны быть подключены репозитории Kali Linux:

# cat /etc/apt/sources.list

deb     http://http.kali.org/kali kali-rolling main non-free contrib
deb-src http://http.kali.org/kali kali-rolling main non-free contrib

Возможно также и полное обновление Kali Linux с предыдущих версий, как это описано, например, здесь:

# apt update && apt -y full-upgrade

Kali Linux Upgrade

Убедившись в том, что пакетная база системы обновлена, можем переходить к использованию предустановленных в Kali инструментов, например, к интересующему нас комплексу Metasploit.


Используем модуль Metasploit

Входим в интерактивный режим работы со специальной консолью Metasploit:

# msfconsole

Metasploit console

Данная консоль имеет собственный набор команд и опций. Проверим, какие глобальные опции используются в консоли:

> show options

Metasploit console Get global options

Среди имеющихся опций нас могут заинтересовать опции логирования, выполняемых в консоли действий - ConsoleLogging и SessionLogging. Как видим, в конфигурации по умолчанию эти опции выключены. Включаем логирование консоли и каждой сессий и сохраняем настройки:

> set ConsoleLogging true
> set SessionLogging true
> save

Логи консоли по умолчанию сохраняются в домашнем каталоге текущего пользователя в расположении: ~/.msf4/logs/console.log. Логи сессий в подкаталоге ~/.msf4/logs/sessions

После установки глобальных опций логирования лучше завершить сессию командой exit и запустить новую сессию, так как настройки логирования сессий должны начать действовать только для последующих сессий.

Metasploit console Set global options

После повторного входа проверяем то, что заданные нами ранее настройки логирования включены:

Metasploit console Check global options

Справедливости ради стоит отметить тот факт, что мой небольшой опыт использования этой консоли в Kali Linux так и не позволил воспользоваться логами сессий. Сессионные логи, не смотря на выставленные опции логирования, так ни разу и не создались. Возможно, это какое-то ограничение данной свободно распространяемой версии Metasploit, а возможно для включения сессионного логирования требуется какое-то дополнительное "шаманство", о котором я просто не знаю.

Как бы там ни было, получить лог работы консоли можно и сторонними средствами. Например, можно использовать логирование SSH-сессии, имеющееся в клиенте PuTTY для Windows, открыв свойства текущего подключения и указав опции логирования сессии.

PuTTY SSH session Logging

Логирование процесса сканирования сетей может быть важным для последующей обработки результатов в том случае, если объём сканирования существенен и занимает немало времени. Ведь у администратора не всегда есть возможность наблюдать за длительным процессом сканирования.

Вернёмся к консоли Metasploit и с помощью команды search выполним поиск модуля сканирования уязвимости BlueKeep по её названию командой вида:

> search bluekeep

Search bluekeep in msfconsole

В ответ мы получим имя модуля сканирования, который нас интересует.

Чтобы переключиться на этот модуль, выполнима команду use с указанием имени модуля:

> use auxiliary/scanner/rdp/cve_2019_0708_bluekeep

Модуль имеет собственный набор опций, получить значение которых можно командой show, находясь на уровне этого модуля:

> show options

Connect to bluekeep scanner in msfconsole

Как видим, модуль имеет три обязательных опции, две из которых уже определены в конфигурации по умолчанию. Чтобы изменить эти опции, используем команду set. Например, зададим сегмент сети, которую нужно сканировать, и количество потоков сканирования:

> set RHOSTS 10.1.3.0/24
> set THREADS 10

Bluekeep scanner options in msfconsole

Теперь только остаётся запустить процесс сканирования с помощью простой команды:

> run

На консоль будет ведена информация о результатах сканирования и обнаруженных уязвимых хостах:

Network Scanning for Bluekeep in msfconsole

По окончании процесса сканирования завершаем работу с консолью командой exit, анализируем лог сканирования и принимаем меры по устранению уязвимости обнаруженных хостов.

На этом заметку об описании метода выявления уязвимых хостов можно было бы считать законченной, однако от некоторых коллег поступила информация о том, что были замечены случаи, когда метод выявлял не все уязвимые хосты. Поэтому в контексте нашей задачи мы рассмотрим ещё один инструмент для сканирования сетей на выявление уязвимости BlueKeep - утилиту rdpscan.


Собираем и используем утилиту rdpscan

Загрузить актуальную версию уже скомпилированной утилиты rdpscan под операционные системы Windows и macOS можно по ссылке: Github - robertdavidgraham - rdpscan – releases. Однако в нашем случае для задачи сканирования используется выделенная система на базе Kali Linux, поэтому нам потребуется выполнить загрузку и самостоятельную сборку этой утилиты из исходных колов под Linux.

Выполним установку пакетов, необходимых для загрузки исходных кодом и сборки:

# apt-get install git libssl-dev build-essential

В Kali Linux актуальной версии пакеты git и build-essential уже предустановлены, поэтому в нашем случае в систему будет доустановлен только пакет libssl-dev.

Setup rdpscan build tools

Создадим в домашнем каталоге текущего пользователя отдельный подкаталог и загрузим в него исходные коды утилиты rdpscan:

# mkdir ~/rdpscan    
# git clone --depth=1 https://github.com/robertdavidgraham/rdpscan.git ~/rdpscan

Download rdpscan sources from GitHub

Перейдём в каталог с исходными кодами и вызовем процедуру сборки утилиты:

# cd ~/rdpscan
# make

Build rdpscan tool from Sources in Kali Linux

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

Посмотрим то, какие опции умеет для работы принимать эта утилита:

# ./rdpscan --help

Run rdpscan tool in Kali Linux

Как видим, здесь, также как и в случае с модулем Metasploit, доступна возможность указания TCP-порта, работающего с RDP-протоколом. Также есть возможность загрузки списка сканируемых хостов из файла, и имеются разны варианты полноты вывода информации.

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

# ./rdpscan --workers 10 10.1.1.0/24

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

Run rdpscan tool for network scan

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

# ./rdpscan --workers 10 10.1.1.0/24 | grep 'VULN' | cut -f1 -d'-'

Если требуется сохранить результаты работы утилиты в лог-файл для последующего анализа, то можем просто перенаправить вывод утилиты в файл:

# ./rdpscan --workers 10 10.1.1.0/24 > rdpscan.log

Ну и опять же, анализируем лог сканирования и безотлагательно принимаем меры по устранению уязвимости обнаруженных хостов.

В качестве заключения могу отметить, что из моего скромного опыта использования выше обозначенного модуля сканирования BlueKeep в Metasploit и утилиты rdpscan, оба инструмента выполнили свою задачу с одинаковым результатом. Поэтому выбор инструмента сканирования в данном случае - дело сугубо субъективное.

Всего комментариев: 4 Комментировать

  1. Дмитрий /

    rdesktop не рассматривали? тоже, как вариант, хорошо сканирует

    1. Алексей Максимов / Автор записи

      У нас не было задачи испробовать все сканеры на свете.

  2. Дмитрий /

    просто rdpscan основан на rdesktop потому и спросил

  3. k8s /

    Надо было по "модному", через docker собрать :)

Добавить комментарий