Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Несмотря на то, что решения для удаленного доступа уже много лет успешно работают на рынке и имеют многомиллионную аудиторию, они всегда вызывали у пользователей некоторые опасения в плане безопасности. Некоторые люди и компании принципиально отказывались ими пользоваться. Что ж, в чем-то их страхи оправдались: количество атак через протокол удаленного доступа не просто растет - во время пандемии оно вообще удвоилось. В этой статье расскажем о том, как обнаружить RDP-атаку, как защититься от нее на постоянной основе, а какие методы не настолько эффективны.
До недавнего времени корпоративный поток данных в подавляющем большинстве случаев циркулировал в контролируемой инфраструктуре. Но пандемия вынудила людей в спешке организовывать весь доступ к корпоративной среде в домашних условиях и незащищенных сетях Wi-Fi. Ну а уж любовь пользователей к простым паролям и нелюбовь к двухфакторной авторизации всегда были головной болью безопасников.
Этим немедленно воспользовались киберпреступники. И без того “популярные” атаки через протоколы удаленного доступа с начала строгого карантина пошли лавиной: ежедневно стало регистрироваться почти миллион таких попыток. Самый популярный из протоколов удаленного доступа - проприетарный протокол Microsoft RDP, поэтому такие атаки называют RDP-атаками. Хотя в той или иной степени уязвимо любое решение удаленного доступа.
Статистика
По данным Лаборатории Касперского, с начала марта 2020 года количество атак на RDP скачкообразно увеличилось. ESET в своем отчете говорит о более чем 100 тысячах новых RDP-атак в день - рост более чем в два раза по сравнению с первым кварталом.
Причина, в том числе, не только в переходе на удаленку, но и в спешке - для компаний при переезде “в карантин” главным было добиться работоспособности инфраструктуры, а ее безопасность стояла только второй задачей. Например, опрос специалистов по информационной безопасности, который провели в Positive Technologies, показал, что в связи с пандемией удаленный доступ им пришлось либо экстренно организовывать с нуля (11%), либо срочно масштабировать (41%).
Что такое RDP-атаки
Протокол RDP (Remote Desktop Protocol) - это один из наиболее популярных протоколов для подключения к удаленным рабочим столам, доступный во всех версиях Windows, начиная с XP. Помимо взаимодействия с удаленным компьютером он позволяет подключить к удаленной машине локальные диски, порты и другие устройства. Используется большинством админов Windows-сред для администрирования рабочих мест пользователей и серверов, экономя им много времени.
В протоколе постоянно находили уязвимости, причем так часто, что в 2018 году даже ФБР выпустило специальное предупреждение. В мае 2019 года в старых версиях протокола была обнаружена критическая уязвимость под названием BlueKeep. Всего через месяц после ее появления началась активная волна атак, использующих BlueKeep. Затем в августе того же года в протоколе нашли еще четыре новые уязвимости. Они были связаны не с протоколом RDP, а с сервисом удаленных рабочих столов RDS и позволяли с помощью специального запроса, отправленного через RDP, получить доступ к уязвимой системе, не проходя при этом процедуру проверки подлинности.
RDP-атака - это, по сути, атака brute force, в ходе которой подбирается логин и пароль или ключ шифрования для доступа к RDP путем систематического перебора всех возможных комбинаций символов, пока не будет найден верный вариант. Для длинных паролей может использоваться перебор по словарю, где вместо генерирования комбинации букв и цифр используется длинный список популярных или скомпрометированных паролей.
Цель - получить полный удаленный доступ к нужному компьютеру или серверу и проникнуть через него в корпоративную сеть, обладая всеми соответствующими правами и доступами. Атакующий внедряется в диалог двух систем в момент установления RDP-сессии и, расшифровав пакет, получает полный доступ к удаленной системе, причем без каких-либо нотификаций на стороне клиента или сервера, поскольку у него есть “правильный” сертификат.
А затем начинается собственно атака изнутри системы. Решения безопасности отключаются или удаляются, а затем либо начинается DDoS-атака, либо запускается программа-вымогатель, которая устанавливает пароль на доступ к базам данных с важной для компании информацией. Либо уводятся реальные персональные данные для credential stuffing и фишинга. Также можно использовать плохо защищенный RDP для установки программ для майнинга криптовалют или создания бэкдора (на случай, если несанкционированный доступ к RDP будет обнаружен и закрыт), для установки рекламного или шпионского ПО, SMS-троянов, и так далее. Этим можно полностью заразить все доступные в сети машины.
Существуют скрипты, которые способны по-максимуму использовать права пользователя, который подключается по RDP и всех последующих пользователей в цепочке RDP-подключений. Этот метод получил название RDPInception. Если атакованная машина подключается по цепочке через несколько серверов и везде монтируются локальные диски, то скрипт самокопируется в нужные директории и становится возможным атаковать все машины, поскольку при входе в систему выполняются скрипты, расположенные в Startup директории. Все, что подключается в этой цепочке, также может быть заражено.
Почему они опасны?
Плохо защищенное RDP-соединение может обеспечить преступникам доступ ко всей корпоративной системе. Например, зашифровка серверов компании программами-вымогателями, которые потом требуют выкуп, может быть крайне разрушительной для бизнеса. Тут показательна недавняя история очень крупного GPS-вендора Garmin, который был вынужден заплатить вымогателям $10 миллионов - по-другому их специалистам по безопасности решить проблему не удалось.
Технически такие атаки тоже становятся все более опасными. Во-первых, злоумышленники больше не работают точечно, а охватывают большие сегменты сетей.
Во-вторых, время простых атак уже прошло. Преступники используют сложные схемы и комбинируют методы. Так, в трояне TrickBot появился новый модуль rdpScanDll, который используется для проведения атак brute force на RDP-соединения. Этот модуль уже отметился в ряде атак на крупные компании, в том числе связанными с образованием и финансами.
В-третьих, персональные данные и инструменты для взлома, к сожалению, становятся все более доступными. Например, недавно исходный код Dharma, ransomware-as-a-service ПО, также нацеленного на RDP, выложили для продажи онлайн (извините, ссылку давать не будем). Растет количество утечек баз с паролями и словарей для перебора паролей, упоминавшиеся выше скрипты для взлома можно найти в открытом доступе, и там же есть готовые списки серверов, у которых открыт RDP порт. На рынке есть огромное количество ботов, которые постоянно сканируют все доступные точки подключения и пытаются подобрать пароль.
Наконец, средств для защиты либо недостаточно для “переборщиков паролей”, либо они не применяются. Часто компании даже не видят, что такая атака уже идет. Они могут заметить низкую производительность и долгое выполнение запросов, но лечат это оптимизацией памяти и другими нерелевантными методами.
Как понять, что RDP-атака началась
Снижается общая производительность, ответы на запросы становятся дольше (причем иногда вы не видите это в трафике - в нем нет ни очевидных всплесков, ни провалов, и нет аномалий в статистике нагрузки на вычислительные ресурсы).
Серверы не принимают соединения со службой удалённого доступа, пользователи не могут зайти на свои рабочие столы. При этом ситуация может то временно улучшаться, то ухудшаться. В целом серверы могут быть доступны и даже отвечать на ping.
В журналах регистрации событий вы видите множество сообщений о попытке подобрать пароль (к сожалению, далеко не всегда - там часто не отображаются попытки неверного ввода логина и пароля, потому что отслеживание этих событий дает большую нагрузку на сервер).
Способы от них избавиться
Способов, на самом деле, множество, но в данной статье мы решили разделить их на полностью надежные и те, у которых или есть определенные недостатки, или их сложно реализовать, или они могут служить только временной мерой. Начнем с надежных.
Правильная система паролей
Недавнее исследование Verizon показало, что более 80% взломов связано не с уязвимостями протокола RDP, а именно с ненадежными паролями. Поэтому в компаниях должна быть принята и закреплена в инфраструктуре политика использования сложных для подбора паролей и обязательной двухфакторной аутентификации. Пароли пользователям желательно хранить в специальных защищенных менеджерах паролей. Решения по безопасности также должны быть дополнительно защищены паролем, чтобы нельзя было их отключить изнутри при успешной атаке.
Система мониторинга всех запросов
Эффективный способ - мониторить весь входящий трафик и отслеживать все несанкционированные подключения и запросы. К системам мониторинга удаленных подключений можно добавить какие-то дополнительные системы отслеживания, которые помогут увидеть более полную картину происходящего. Например, можно включить решение Variti - Active Bot Protection, которое не только позволяет размечать все входящие запросы на предмет “бот - не бот”, начиная с самого первого, в режиме реального времени, но и вычислять и блокировать источники атаки. Подобное отслеживание может вестись на всех системных уровнях, включая транспортный уровень и уровень приложений. Это позволит, например, увидеть подозрительную ботовую активность, которая может быть признаком начала атаки.
Другой вариант: если нет централизованной системы контроля доступа, то можно создать скрипт на powershell, который сообщает о всех фактах и попытках авторизации. Наконец, можно настроить “События” на отображение всей доступной информации.
Network Level Authentication
NLA обеспечивает более надежную защиту от подмены ключей, требуя аутентификацию до установления сессии и во время сессии. В прошлом году именно NLA затрудняла эксплуатацию серьезных уязвимостей в протоколе.
Ряд других полезных практик:
Используйте нестандартные ключи, например, PKI (Public Key Infrastructure), а соединения RDP стройте с помощью TLS (Transport Layer Security).
Если RDP не используется, то выключите его и отключите на брандмауэре сети внешние соединения с локальными машинами на порту 3389 (TCP/UDP) или любом другом порту RDP.
Постоянно обновляйте все ПО на устройствах сотрудников до актуальных версий. Помните, что 80-90% эксплойтов создано после выхода патча на уязвимость. Узнав, что была уязвимость, атакующие ищут ее именно в старых версиях софта. Конечно, это непростая задача в условиях удаленки, но это должно быть частью корпоративной ИТ-политики. Кроме того, любые незащищенные или устаревшие компьютеры нужно изолировать.
По возможности используйте шифрование на устройствах, которые используются для решения рабочих задач (например, шифрование диска).
Сделайте резервные копии ключевых данных. Резервные копии должны быть доступны только администратору или пользователю резервного копирования. Права на папки к файлам резервного копирования также должны быть максимально ограничены.
Установите на все устройства сотрудников защитные решения и решения, позволяющие отследить технику в случае ее утери.
А теперь перейдем к вариантам, которые сложно назвать однозначными, потому что у них есть и плюсы, и минусы.
Организовать доступ через VPN
Помимо очевидных преимуществ, у этого варианта есть несколько сложностей.
Даже у тех, кто использует Virtual Private Network, иногда разрешена авторизация пользователя без пароля.
Практически во всех популярных VPN-решениях также есть уязвимости для несанкционированного доступа.
Если вы раньше не пользовались VPN, что поднимать в спешке IPSec-соединения - не самая простая задача.
В условиях полного домашнего “зоопарка” устройств и подключений к сети (как насчет выхода в интернет через сотовый модем?) на удаленке довольно тяжело объяснять и настраивать каждому из нескольких сотен пользователей, чтобы у пользователя все стабильно работало и не пропадало подключение к сети.
VPN-серверы тоже могут падать, причем в отличие от временного падения какого-то из сервисов, это может грозить серьезными последствиями. Получается, что VPN серверы становятся единой точкой отказа со всеми вытекающими последствиями.
VPN — это двойное шифрование (помимо стандартного RDP шифрования дополнительно выполняется ещё и VPN шифрование), что означает дополнительную нагрузку и более медленное подключение, что не очень хорошо в условиях нестабильного или не особо быстрого канала связи.
При взломе VPN (а это может быть при взломе роутера), если он настроен по умолчанию (или недостаточно компетентно), хакер получает сразу доступ ко всей внутренней сети, в отличии от доступа к одиночному ПК в случае взлома RDP (хотя и через него тоже потом можно получить доступ ко внутренней сети).
Использовать другие средства удаленного доступа
К сожалению, в них также есть уязвимости. Например, в конце прошлого года найдено 37 уязвимостей в разных клиентах, работающих с протоколом VNC.
Изменить настройки всех пользователей на другой порт
Наверное, наименее надежный способ из всех, хотя наверняка найдутся люди, у которых это прекрасно работает. Почему же он “не очень”?
Требует много времени на то, чтобы изменить настройки, если у вас много конечных пользователей, среди которых могут оказаться и клиенты. А ведь счет часто идет на минуты во время активной фазы атак. В этой ситуации нужно как можно быстрее устранить проблему с минимальным отрывом пользователей от дел.
Кроме того, это временное решение, потому что современные боты с интеллектуальной программой сканирования портов быстро найдут новый нестандартный порт. Из нашей анти-бот практики: боты ловят нестандартный порт от пары часов до пары дней. В общем, к вам все равно придут, хоть и позже. Возможно, переименование учетных записей типа Администратор, admin, user, user1 на более несловарные будет здесь даже более эффективно.
Ввести различные ограничения на подключения
Например, можно ограничить количество разрешенных одновременно открытых сеансов, минимизировать количество пользователей, которые могут подключаться к серверам организации через интернет, запретить доступ к серверу с более чем N IP адресов, ограничить количество разрешенных ошибочных попыток входа и время для этих попыток, установить время блокировки для входа в случае неправильного ввода пароля и так далее. Да, это помогает, но это нельзя назвать полноценным решением. К сожалению, как показывает практика, эти меры могут не дать заметного снижения количества атак, ведь боты работают круглосуточно и без остановки, а ограничения - это куча тонких настроек, где одно зависит от другого, а у самого администратора часто есть определенные ограничения на настройки.
Блокировка IP
Эффективный для поколения “кулхацкеров” метод - блокирование IP - в случае серьезных противников может быть бесполезным, а то и опасным. Во всяком случае, адреса, с которых идут атаки, меняются в очень широком диапазоне (атака на перебор часто идет с группы адресов и даже с разных подсетей), так что сама идея блокировки по адресам — это лечение последствий, а не болезни. IP адрес слишком легко подделать, атакующие могут применять сотни и с легкостью менять их. И есть большая вероятность, что они подставят его так, что будет заблокирован ваш собственный адрес или IP ваших клиентов.
К тому же блокировка отдельных IP на сервере Windows - не такая уж простая задача. Во-первых, в логах безопасности часто не видно IP того, кто пытается подключится - в некоторых случаях его можно увидеть только при успешной авторизации. В противном случае видно только логин, под которым пытались залогиниться, хотя события в журнале отмечаются. И тем более это сложно, если IP специально скрывается.
Кстати, если вы делаете это с помощью Windows Firewall, то через какое-то время Windows начинает сильно тормозить из-за переполненного правила Windows Firewall.
Давать доступ к данным только белому списку IP-адресов - тоже достаточно сложная вещь в условиях удаленки и домашних офисов - IP может плавать, так как пользователь задействует очень разные гаджеты, которые есть “в хозяйстве”, и все норовит поработать из кафе или парка с публичным вайфаем.
О дивный новый мир
Для многих компаний удаленная работа, вероятно, останется постоянной частью их корпоративной культуры, и с этим придется что-то делать. При этом уязвимости в RDP всплывают постоянно, и приходится регулярно гуглить, что же появилось нового.
Основная головная боль в том, чтобы защититься от RDP-атак в такой ситуации - это зоопарк устройств, на которых удаленно работают сотрудники, и сроки, так как проблему нужно решать быстро. И не нужно объяснять, что в каждой конкретной организации у администратора могут быть отдельные ограничения - кому-то выделяют только один порт под сервис, у кого-то нет подходящего железа и достаточного бюджета.
Единого ответа в том, как полностью обезопасить себя от таких нападений за счет одного-единственного инструмента, наверное, пока не существует (но, думаем, рынок усиленно над этим работает). К тому же и боты стали намного хитрее и сложнее, и хакеры стали более умными, и атаки более многоплановыми. Понадобится комплекс мер, ведь существует еще достаточно много вариантов защиты, кроме тех, о которых мы написали, в том числе аппаратных - межсетевые экраны, маршрутизаторы, виртуализация, разделение основной базы данных и многое другое.
Но, мы уверены, что самый важный и первый шаг - это четко увидеть, существует ли у вас такая проблема и насколько она серьезна. Так что включайте свои мониторинги. Второй шаг - это сделать все возможное, чтобы максимально усложнить жизнь хакеру. Есть огромная вероятность того, что столкнувшись хотя бы с несколькими приемами, хакер не будет тратить время на вас, а найдет жертву попроще.