CVE-2019-0708: Критическая уязвимость в службе удаленного рабочего стола Windows
14 мая 2019 года Microsoft сообщила о наличии критической уязвимости в реализации службы удаленных столов (ранее служба терминалов) в Windows, которая позволяет атакующему, не прошедшему проверку подлинности, через протокол RDP удаленно выполнить произвольный код на целевой системе. RCE (Remote Code Execution) уязвимость описана в CVE-2019-0708 и ей присвоено неофициальное название BlueKeep. Уязвимости подвержены только старые версии Windows – начиная с Windows XP (Windows Server 2003) и заканчивая Windows 7 (Windows Server 2008 R2). Более новые версии (Windows 10, 8.1 и Windows Server 2012R2/2016/2019) данной уязвимости в RDS не подвержены.
RCE уязвимость CVE-2019-0708 в Remote Desktop Services
Уязвимость присутствует не в самом протоколе RDP, а в реализации службы удаленных рабочих столов (Remote Desktop Service) в старых версиях Windows. Для эксплуатации уязвимости необходим только сетевой доступ к компьютеру с подверженной версией Windows и наличие на нем включенной службы RDP (доступ к которой не должен блокироваться межсетевыми экранами). Т.е. если ваш Windows хост доступен из интернета через RDP, это означает, что уязвимость может быть эксплуатирована кем угодно. Уязвимость реализуется за счет отправки специального запроса к службе удаленного рабочего стола через RDP, преаутентфикация удаленного пользователя при этом не требуется. После реализации уязвимости BlueKeep атакующий может удаленно выполнить произвольный код на целевой системе с правами SYSTEM.
Microsoft отмечает, что есть весьма высокая вероятность появления автоматических червей, которые будут используют уязвимость в RDS для распространения в локальных сетях. Таким образом масштаб атак может достигнуть результатов червя WannaCry (использовал уязвимость в протоколе SMB CVE-2017-0144 — EternalBlue).
Защита от уязвимости BlueKeep CVE-2019-0708
Для защиты от уязвимости CVE-2019-0708 (BlueKeep) Microsoft рекомендует оперативно установить обновления безопасности (перечислены в следующем разделе). Для уменьшения рисков реализации уязвимости на системах до момента установки обновления во внешнем периметре рекомендуются следующие действия:
- Временно отключить RDP доступ к компьютерам и отключить службу Remote Desktop Services или заблокировать внешний доступ на RDP на межсетевых экранах периметра сети и отключить проброс RDP портов в локальную сеть;
- Включить поддержку Network Level Authentication (NLA— Проверку подлинности на уровне сети) в настройках RDP на компьютере ) – возможно настроить как в Windows 7 /2008 R2, так и в Windows XP SP3. При включенной NLA для реализации уязвимости атакующему сначала нужно аутентифицироваться в службе Remote Desktop Services с помощью действительного аккаунта (реализовать атаку можно только под легитимным пользователем).
Обновления Windows для защиты от RDP уязвимости BlueKeep
Microsoft выпустила обновления для всех ОС Windows, подверженных уязвимости CVE-2019-0708 (BlueKeep). Патчи доступны для загрузки в каталоге обновлений Microsoft.
Несмотря на то, что Microsoft прекратила поддержку Windows XP и Windows Server 2003, для защиты от BlueKeep были выпушены обновления и для этих устаревших систем. Что лишний раз подчеркивает серьезность найденной уязвимости и высокий риск ее массовой эксплуатации.
Ниже приведены прямые ссылки на ручную загрузку обновлений для популярных версий Windows:
KB4500331:
Windows XP SP3 x86, x64 Windows XP Embedded, Windows Server 2003 SP2 x86, x64 — https://www.catalog.update.microsoft.com/Search.aspx?q=KB4500331
В Windows XP и 2003 обновления kb4500331 придется устанавливать вручную.
Злоумышленники могут получить доступ к каждому десятому открытому удаленному рабочему столу
Xakep #257. Pivoting
Эксперты Positive Technologies подсчитали, что всего за три недели (с конца февраля 2020 года) количество ресурсов, доступных через RDP, увеличилось на 9% и составило более 112 000. При этом свыше 10% таких ресурсов уязвимы перед проблемой BlueKeep (CVE-2019-0708), которая позволяет атакующему получить полный контроль над компьютером на базе Windows.
Для атаки достаточно отправить специальный RDP-запрос к уязвимым службам удаленного рабочего стола (RDS). Аутентификации при этом не требуется. В случае успеха злоумышленник сможет устанавливать и удалять программы в скомпрометированной системе, создавать учетные записи с максимальным уровнем доступа, читать и редактировать конфиденциальную информацию. Уязвимости подвержены операционные системы Windows 7, Windows Server 2008 и Windows Server 2008 R2.
По динамике роста числа открытых по RDP узлов на сегодняшний день лидирует Уральский федеральный округ: оно увеличилось на 21%, а общая доля узлов, уязвимых для BlueKeep, составляет 17%. Далее идут Сибирский (21% и 16% соответственно), Северо-Западный (19% и 13%), Северо-Кавказский (18% и 17%), Южный (11% и 14%), Приволжский (8% и 18%), Дальневосточный (5% и 14%) и Центральный федеральные округа (4% и 11%).
«На сетевом периметре российских компаний начало увеличиваться число ресурсов, атака на которые позволит злоумышленникам получить контроль над сервером и проникнуть в локальную сеть, — отметил директор экспертного центра безопасности Positive Technologies Алексей Новиков. — Мы связываем это, в первую очередь, с поспешным переводом части сотрудников на удаленную работу. Независимо от выбранного типа удаленного подключения разумно обеспечить удаленный доступ через специальный шлюз. Для RDP-подключений это Remote Desktop Gateway (RDG), для VPN — VPN Gateway. Удаленное подключение напрямую к рабочему месту использовать не рекомендуется».
В Positive Technologies предупреждают, что открытие доступа к отдельным подсетям сразу всем пользователям VPN существенно снижает защищенность организации и не только дает широкие возможности внешнему атакующему, но и повышает риск атаки со стороны инсайдера. Поэтому IT-специалистам необходимо сохранять сегментацию сетей и выделять необходимое число VPN-пулов.
Помимо этого, Positive Technologies рекомендует обратить внимание на критически опасную уязвимость (CVE-2019-19781) в ПО Citrix, которое используется в корпоративных сетях, в том числе для организации терминального доступа сотрудников к внутренним приложениям компании с любого устройства через интернет. В случае эксплуатации этой уязвимости злоумышленник получает прямой доступ в локальную сеть компании из интернета. Для проведения такой атаки не требуется доступ к каким-либо учетным записям, а значит, выполнить ее может любой внешний нарушитель.
RDP: слабые места протокола и эксперимент с развертыванием ханипота
RDP — один из самых популярных протоколов для удаленного подключения к машинам Windows. Но при неправильной конфигурации он может стать ахиллесовой пятой любой инфраструктуры.
Когда бизнес переходил на удаленку, выбор компаний пал на протокол RDP из-за простоты его настройки и использования. Но переход был экстренным и далеко не все уделили необходимое внимание безопасности. В результате организации оказались под прицелом злоумышленников.
В этой статье мы решили разобрать слабые места протокола RDP и рассказать, как обезопасить инфраструктуру компании. Также мы провели эксперимент, развернув ханипот RDP на нескольких серверах, и описали криминалистические артефакты, которые могут быть обнаружены в случае несанкционированного подключения злоумышленников.
▍Слабости RDP
Почти 4 миллиона RDP-серверов по всему миру сегодня доступны из внешней сети. Не меньшее их количество, скорее всего, доступно лишь из внутренних сетей.
Злоумышленники часто специально ищут слабые места RDP-серверов, чтобы использовать их в своих целях. Так, RDP нередко подвергается брутфорс-атакам. Кроме того, за последние два года специалисты обнаружили серьезные RCE-уязвимости, связанные с RDP.
Брутфорс-атаки
Самые распространенные атаки на RDP — атаки типа брутфорс. Их можно условно разделить на несколько групп.
- Простейшие атаки, которые заключаются в подборе элементарных паролей без использования каких-либо инструментов автоматизации.
- Атаки по словарю, во время которых запускается перебор всевозможных паролей для предполагаемого имени пользователя.
- Гибридные атаки, которые включают использование словарей, но каждый пароль проверяется не только в словарной форме, но и после ряда простых модификаций.
- Password spraying, во время которых для известного пароля перебираются миллионы имен пользователей, пока не найдется совпадение.
- Credential stuffing, при которых для перебора злоумышленники используют список скомпрометированных учетных данных пользователей.
Подобрав пару логин-пароль, злоумышленники получают полный доступ к скомпрометированной системе.
Простейшим атакам и атакам с использованием словарей организации обычно уделяют должное внимание и защищаются от них. Например, часто предусматривают блокировку учетной записи после нескольких безуспешных попыток входа.
В то же время про атаки password spraying и credential stuffing зачастую забывают. Однако подобные атаки сейчас не редкость, а, напротив, скорее стали обыденностью. Бороться с ними помогает блокировка IP-адресов, с которых производятся множественные неудачные попытки входа по RDP. Также не станет лишним запрет на повторное использование паролей. Кроме того, не стоит использовать один и тот же пароль на нескольких ресурсах.
Уязвимости
С 2019 года было обнаружено несколько серьезных RCE-уязвимостей, связанных с RDP. Их эксплуатация приводит к удаленному исполнению кода на целевой системе.
Уязвимость CVE-2019-0708, получившую название BlueKeep, обнаружили не в самом протоколе RDP, а в реализации службы удаленных рабочих столов (Remote Desktop Service). Данная уязвимость позволяет неаутентифицированному пользователю удаленно исполнить произвольный код на целевой системе. Уязвимости подвержены старые версии Windows: начиная с Windows XP (Windows Server 2003) и заканчивая Windows 7 (Windows Server 2008 R2). Для ее успешной эксплуатации необходимы лишь сетевой доступ к компьютеру с уязвимой версией Windows и запущенная служба RDP. Для этого злоумышленник отправляет специально сформированный запрос к службе по RDP, что позволяет атакующему удаленно выполнить произвольный код на целевой системе. Информация о BlueKeep была опубликована в мае 2019 года, но уязвимыми до сих пор остаются более 289 тысяч RDP-серверов.
Уязвимости CVE-2019-1181/1182/1222/1226 практически аналогичны BlueKeep. Однако если предыдущей уязвимости были подвержены лишь старые версии Windows, то теперь под угрозой оказались и все новые версии ОС. Для эксплуатации уязвимостей злоумышленнику также достаточно отправить специально сформированный запрос к службе удаленных рабочих столов целевых систем, используя протокол RDP, что позволит выполнить произвольный код. Эти уязвимости были опубликованы в августе 2019 года.
Еще одна уязвимость — BlueGate (CVE-2020-0609/0610) — была найдена в компоненте Windows Remote Desktop Gateway в Windows Server (2012, 2012 R2, 2016 и 2019). Она также позволяет злоумышленникам посредством RDP и специально созданных запросов осуществлять удаленное выполнение кода на целевой системе. BlueGate была опубликована в начале 2020 года.
▍Вредоносные программы и RDP
Слабости RDP не остаются вне поля зрения операторов вредоносных программ. Злоумышленники нередко используют ставшие известными учетные данные RDP при проведении целевых атак.
После получения доступа по RDP к целевой системе атакующие вручную отключают средства антивирусной защиты и запускают вредоносные программы. В подобных атаках на зараженной системе зачастую запускаются программы-вымогатели, такие как Dharma (aka Crysis).
▍Приманка для злоумышленников, или как мы развернули ханипот
Мы решили провести эксперимент и проверить, что будет происходить с RDP-сервером, доступным из внешней сети. Для этого было развернуто два ханипота. Мы воспользовались реализацией протокола RDP на Python — RDPY, который можно найти в открытом доступе.
Один ханипот был развернут на публичном сервере DigitalOcean, другой — на сервере в сети нашей организации. Из интернета были доступны три порта:
- стандартный порт — 3389;
- два нестандартных порта — 36 и 25300.
Окно, отображаемое при подключении, приведено на скриншоте ниже.
Максимальное внимание в сети привлек стандартный порт 3389. За те полтора месяца, что работали ханипоты, в общей сложности зафиксировано 15 попыток брутфорса и 237 попыток записи невалидных данных в сокет на публичном сервере; и, соответственно, 16 и 135 попыток — на сервере в сети организации.
Также, как и следовало ожидать, стандартный порт 3389 подвергался многочисленным сканированиям из сети. При этом публичный сервер сканировался в среднем в 2,5 раза чаще, чем сервер в сети организации.
Частоту сканирований можно увидеть на графике ниже. Вертикальными линиями здесь обозначены субботы и воскресенья, которые пришлись на период работы ханипотов. В большинстве случаев на конец рабочей недели приходился спад сканирований из сети.
По горизонтали — дни работы ханипотов, по вертикали — количество коннектов.
Синяя кривая — публичный север, оранжевая — сервер в сети организации.
Вертикальные линии — сб и вс .
Попыток просканировать нестандартные порты практически не было. Следовательно, перенос RDP на нестандартный порт поможет частично защититься от большей части атак.
▍Безопасность
Обобщая все вышесказанное, можно вывести несколько правил, которые помогут обезопасить инфраструктуру при удаленном подключении по RDP.
- Выбирайте нестандартный порт для предоставления подключения по RDP. Как показывает практика, стандартный порт чаще других подвергается сканированиям и попыткам входа со стороны нежелательных пользователей. Тем не менее один только нестандартный порт не может полностью защитить от проведения атак.
- Организуйте удаленное подключение к корпоративным ресурсам через VPN. Это обеспечит дополнительный уровень защиты, поскольку без доступа к VPN будет невозможно провести брутфорс-атаки.
- Применяйте строгие парольные политики, которые накладывают ограничение на длину пароля, его содержание, повторное использование, а также количество неудачных попыток входа, после которых производится блокировка учетной записи. Это поможет защититься от атак перебором. Запрет же повторного использования пароля снизит риск реализации атак password spraying и credential stuffing.
- Блокируйте IP-адреса, с которых производятся множественные неудачные попытки входа по RDP. Это позволит защититься от атак password spraying и credential stuffing.
- Используйте двухфакторную аутентификацию. Это сведет к минимуму реализацию всех типов брутфорс-атак.
- Настройте аудит событий RDP и проводите регулярный просмотр журналов подключений, чтобы вовремя регистрировать подозрительную активность.
▏Где искать следы подключения по RDP▕
Если у вас возникли подозрения о компрометации системы по RDP, можно попробовать самостоятельно выполнить несколько шагов.
- Логи. В первую очередь следует немедленно проверить логи событий:
- %SystemRoot%\System32\Winevt\Logs\Microsoft-Windows-TerminalServices-RemoteConnectionManager%4Operational.evtx
Событие 1149 для успешного подключения до аутентификации с использованием логина и пароля, но после аутентификации IP-адреса источника подключения. Важно искать подключения с необычных IP-адресов, сюда же может попасть перебор паролей.
%SystemRoot%\System32\Winevt\Logs\Security.evtx
Событие 4624 — для успешного входа, 4625 — для неудачного входа, 4778 — для переподключения, 4634 — для отключения. Стоит обратить внимание на «LogonType». Для удаленных подключений оно будет равно 3, 10 или 7. Здесь необходимо искать успешные события входа с необычных IP-адресов, обращать внимание на неуспешные события входа — это может быть атака перебором.
%SystemRoot%\System32\Winevt\Logs\Microsoft-Windows-TerminalServices-LocalSessionManager%4Operational.evtx
События 21, 22 и 25 — для успешного входа или переподключения, 23 — для отключения. Следует искать события с необычных IP-адресов.
Даже если подключения разрешены исключительно со внутренних IP-адресов, все еще имеет смысл периодически проверять описанные выше логи на предмет внезапного подключения из внешней сети. Это позволит своевременно найти ошибки конфигурации, допущенные администраторами по невнимательности (например, при настройке форвардинга портов и пр.).
Если следы обнаружены
В случае обнаружения следов успешного проникновения через RDP необходимо в первую очередь:
- постараться изолировать злоумышленника (или вовсе отключить инфраструктуру от интернета, или отключить критичные серверы от локальной сети);
- проверить контроллер домена на следы взлома, а также проверить файловые помойки и другие возможные цели злоумышленника.
Есть существенная вероятность, что заражение уже распространилось по внутренним ресурсам. Если это произошло, нужно проверять события запуска PowerShell, срабатываний антивирусов и прочие. А лучше всего — сразу обратиться к специалистам по компьютерной криминалистике.