РАЗБОР Статья

RDP как вектор атаки: от входа до шифровальщика

Сергей Попов
Сергей Попов Red Team · 6,6 тыс. сообщений
Подписаться
361
[ обложка статьи ]
Режим чтения
Старинный ключ-отмычка расколот пополам на чёрном антистатическом коврике, зубцы повторяют форму разъёма RDP. На месте разлома гравировка CVE-2019-0708 BLUEKEEP и тянется дымок с красным свечением.


По данным Sophos 2024 Active Adversary Report, RDP как вектор атаки фигурирует в 90% расследованных ransomware-инцидентов. Вот как это выглядит в жизни: понедельник, 9:15 утра, SOC получает серию алертов на Event ID 4625 (LogonType 10) с одного внешнего IP - шесть неудачных попыток за 12 минут. К 9:40 - успешный Event 4624 с того же адреса. К 10:20 тот же аккаунт инициирует RDP-сессию на контроллер домена. К полудню - 47 зашифрованных серверов. Бэкапы были, NLA стоял, процессы прописаны. Атакующие зашли через RDP-порт на 33890, который "временно" открыли для миграции полгода назад. Временных решений не бывает - бывают забытые.

Бизнес-логика: зачем атакующему нужен RDP​

RDP атака привлекательна для злоумышленников по трём конкретным причинам. И ни одна из них не про сложный хакинг. Подробнее - в нашем материале про living off the land атаки windows.

Интерактивный GUI-доступ. В отличие от reverse shell или WMI, RDP даёт полноценный рабочий стол. Атакующий запускает приложения, открывает файлы, работает с интерфейсами, у которых нет CLI-аналогов - включая консоли управления бэкапами. Попробуйте через reverse shell поуправлять Veeam. Удачи.

Легитимность протокола. RDP - штатный компонент Windows, включённый по умолчанию на серверных ОС. Трафик по порту 3389 не вызывает подозрений у большинства IDS/IPS. Большинство серверов в корпоративных сетях принимают внутренний RDP-трафик без ограничений - подключение с валидными учётными данными неотличимо от работы администратора. Вот и попробуй отличи атакующего от сисадмина, который решил поработать в субботу.

Встроенные каналы эксфильтрации. Протокол нативно поддерживает перенаправление дисков (drive redirection), буфера обмена и принтеров. Эксфильтрация данных через RDP не требует установки стороннего ПО - хватает штатного mstsc.exe. Всё "из коробки", как любит Microsoft.

С точки зрения бизнес-последствий: компрометация через удаленный рабочий стол чаще всего заканчивается шифровальщиком с последующей утечкой ПДн. При оборотных штрафах по 152-ФЗ - это не только стоимость восстановления инфраструктуры, но и прямые финансовые санкции за утечку персональных данных.

Первоначальный доступ: три сценария RDP-атаки​

1791521748959.webp

Brute force и credential stuffing​

Подбор учётных данных на RDP, выставленном в интернет - самый тупой и самый массовый вектор первоначального доступа. hydra, crowbar, ncrack перебирают по словарям утечек. Типичный паттерн: сканирование Shodan/Censys на порт 3389 и нестандартные порты (13389, 23389 - смена порта не защита) -> массовый brute force RDP -> успешный вход -> закрепление.

Detection: серия Event ID 4625 с LogonType 10 от одного IP - порог 5+ попыток за 10 минут. Sigma-правило zeek_rdp_public_listener.yml из SigmaHQ детектирует RDP-listener на нестандартных портах - помогает обнаружить попытки обхода мониторинга сетевого трафика RDP.

Rogue RDP: фишинг через .rdp-файлы​

В январе 2025 года SOC-команда Innostage зафиксировала таргетированную фишинговую атаку через конфигурационные файлы .rdp. При открытии вредоносного .rdp-файла происходило автоматическое подключение к серверу атакующих с включённым перенаправлением дисков - через монтирование \\tsclient\<диск>\ на терминальный сервер копировался вредоносный файл в каталог автозагрузки жертвы. Всё это за 2-3 секунды до автоматического logoff. Пользователь даже моргнуть не успевает.

Вектор опасен тем, что .rdp-файл - несколько строк текста, которые редко блокируются почтовыми шлюзами и EDR. По данным Innostage, домен рассылки был зарегистрирован на ликвидированную компанию с действующим почтовым сервером на уязвимой версии Exchange. Группировка, стоящая за атакой, по атрибуции Innostage предположительно связана с APT, специализирующейся на кибершпионаже против российских организаций (детали атрибуции - в отчёте Innostage, независимо не верифицированы).

Detection: мониторинг исходящих RDP-подключений к IP/доменам за пределами корпоративной сети. Sigma-правило win_security_rdp_reverse_tunnel.yml покрывает сценарий обратного RDP-туннеля. Первая линия защиты - блокировка .rdp-вложений на почтовом шлюзе. Звучит просто, но почему-то мало кто делает.

BlueKeep и сбор NTLM-хешей​

CVE-2019-0708 (BlueKeep) - RDP уязвимость в Remote Desktop Services (CVSS 9.8, CRITICAL, CWE-416: Use After Free), позволяющая неаутентифицированному атакующему выполнить произвольный код через специально сформированные RDP-запросы. Затронуты Windows 7 и Windows Server 2008. Уязвимость включена в каталог CISA KEV как активно эксплуатируемая (с пометкой «known ransomware campaign use»), верифицированный эксплойт доступен в Metasploit (EDB-47416). CVSS-вектор: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - атака по сети, без привилегий, без взаимодействия пользователя. Казалось бы, 2019 год - кто ещё не пропатчил? Вы удивитесь.

CVE-2025-24054 (CVSS 6.5, MEDIUM, CWE-73: External Control of File Name or Path) - через специально сформированные .library-ms файлы атакующий провоцирует утечку NTLMv2-хешей по сети. Затронуты Windows 10 (версии 1507, 1607, 1809). Включена в CISA KEV с 17 апреля 2025 года. Эксплойты опубликованы на Exploit-DB (EDB-52480, EDB-52478, EDB-52280). Собранные хеши идут в pass-the-hash - следующий этап kill chain.

Detection: для BlueKeep - IDS/IPS-сигнатуры на аномальные запросы к каналу MS_T120. Для CVE-2025-24054 - мониторинг NTLM-аутентификаций из нетипичных источников: Sigma-правило win_susp_ntlm_auth.yml.

Lateral movement через RDP внутри сети​

1791521794955.webp

Вот тут начинается самое неприятное. Взлом одного хоста превращается в компрометацию всей корпоративной сети. Lateral movement RDP - фаза, на которой окно реагирования SOC сужается до минут. Проспали - получили ransomware на всём домене.

RDP с украденными учётными данными (T1021.001)​

Самый частый сценарий: атакующий дампит credentials с первого хоста (через lsass dump, credential manager) и подключается по RDP к следующим целям - файловым серверам, контроллерам домена, бэкап-серверам. Подключение неотличимо от штатной работы администратора: те же логи, тот же протокол, те же порты. Именно поэтому lateral movement по RDP так тяжело ловить.

Pass-the-hash через RDP (T1550.002 + T1021.001)​

Когда пароль в открытом виде недоступен, атакующий использует NTLM-хеш напрямую. xfreerdp поддерживает авторизацию через хеш. Предусловие: на целевом хосте должен быть включён Restricted Admin Mode (реестр: DisableRestrictedAdmin = 0). Без него PtH через RDP не сработает - атакующему придётся использовать хеш через SMB (wmiexec, psexec).

Atomic Red Team содержит публичные тесты для этого вектора: "Mimikatz Pass the Hash" и "crackmapexec Pass the Hash" (T1550.002) - позволяют валидировать detection-правила в контролируемой среде.

Detection: Sigma-правило win_security_pass_the_hash_2.yml отслеживает паттерн PtH через Security Event Log. Ключевой индикатор - Event 4624 с LogonType 3 (Network) при том, что source address обычно генерирует Type 10 (RemoteInteractive). D3FEND описывает контрмеру D3-PSA (Process Spawn Analysis) для выявления аномальных процессов после PtH.

RDP Hijacking: перехват чужих сессий (T1563.002)​

Наименее мониторируемый вектор - и мой любимый пример того, как штатные утилиты Windows работают против защитников. Если атакующий получил SYSTEM-привилегии на хосте с отключёнными (disconnected) RDP-сессиями, он перехватывает любую из них без пароля:
Код:
query user
tscon 2 /dest:console
tscon - штатная утилита Windows. При выполнении от SYSTEM перенаправляет указанную сессию на текущую консоль. Атакующий работает под чужой учётной записью - включая доменного администратора, который отключился, но не завершил сессию. Закрыл крышку ноутбука вместо "Завершить сеанс" - подарил атакующему ключи от домена.

Detection: Event 4778 (reconnect) без предшествующего 4779 (disconnect) от того же источника. Запуск tscon.exe - через Sysmon Event 1 или EDR. Публичного теста в Atomic Red Team для T1563.002 нет, но сценарий воспроизводим на любом AD-стенде.

Скомпрометированный легитимный хост​

Отдельная головная боль - когда RDP-подключение исходит от рабочей станции IT-администратора, чьи учётные данные скомпрометированы. Source IP, учётная запись и паттерн подключения полностью совпадают с baseline. Единственный шанс обнаружения атак на RDP в таком сценарии - аномалия во времени (подключение в 3:00 от аккаунта, работающего 9-18) или в графе подключений (доступ к хостам, к которым этот администратор ранее не обращался).

D3FEND описывает контрмеру D3-NTCD (Network Traffic Community Deviation) - детекция отклонений от устоявшихся паттернов. На практике это реализуется через UEBA-модули SIEM, строящие baseline "кто к кому обычно ходит по RDP". Если UEBA нет - остаётся ручной разбор и надежда на удачу.

Эксфильтрация данных через RDP​

Эксфильтрация данных через RDP не требует загрузки внешних инструментов. Всё уже встроено.

Drive redirection. При подключении с параметром перенаправления дисков локальная директория атакующего монтируется на целевом хосте как \\tsclient\share. Копирование файлов через \\tsclient\ - штатная операция Windows, которую многие EDR не считают подозрительной. В инциденте с Rogue RDP (Innostage, январь 2025) этот механизм использовался для доставки malware в обратном направлении - тоже красиво, надо признать.

Clipboard. Буфер обмена перенаправляется по умолчанию. Атакующий копирует текстовые данные (пароли, конфиги, фрагменты БД) через стандартный copy-paste без следов в файловой системе. Ctrl+C, Ctrl+V - и гигабайт конфигов уехал.

RDP-туннелирование. Chisel или ligolo-ng пробрасывают порт 3389 через цепочку скомпрометированных хостов, позволяя дотянуться RDP-клиентом до изолированных сегментов сети. Sigma-правило proc_creation_win_ssh_port_forward.yml детектирует запуск SSH с флагами port forwarding на Windows-хостах.

Техника Lateral Tool Transfer (T1570, MITRE ATT&CK) покрывает передачу файлов через RDP clipboard и drive mapping. Atomic Red Team содержит два теста для T1570 - "Exfiltration Over SMB over QUIC""Эксфильтрация данных по протоколу SMB поверх QUIC" через New-SmbMapping и NET USE.

Detection playbook: Event ID, Sigma, корреляции​

1791521839199.webp

Карта Event ID для мониторинга RDP​

Event IDИсточник логаЗначение для detection
4624 (Type 10)SecurityУспешный RDP-вход
4625 (Type 10)SecurityНеудачная попытка RDP-входа
1149TerminalServices-RemoteConnectionManagerВходящее RDP-подключение (source IP, username)
21TerminalServices-LocalSessionManagerНачало RDP-сессии
24TerminalServices-LocalSessionManagerОтключение RDP-сессии
4778SecurityПереподключение к существующей сессии
4779SecurityОтключение от сессии

Три корреляции для SIEM​

Brute force. 5+ событий 4625 (LogonType 10) от одного source IP за 10 минут. Проверка вручную через PowerShell:
Код:
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} |
  Where-Object { $_.Properties[10].Value -eq 10 } |
  Group-Object { $_.Properties[19].Value } |
  Where-Object { $_.Count -gt 5 } |
  Select-Object Name, Count | Sort-Object Count -Desc
Lateral movement chain. Event 4624 (Type 10) на хосте A, затем Event 4624 (Type 10) от того же аккаунта на хосте B в течение 30 минут. Один аккаунт открывает RDP-сессии на несколько серверов последовательно - поведение, нетипичное даже для самых деятельных администраторов.

Session hijacking. Event 4778 без предшествующего 4779 от того же source в окне 60 секунд + процесс tscon.exe в Sysmon Event 1.

Sigma-правила из SigmaHQ​

Репозиторий SigmaHQ содержит 16 правил с тегом T1021.001 и 6 правил для T1550.002. Наиболее релевантные:

Sigma-правилоЧто детектирует
zeek_rdp_public_listener.ymlRDP-listener на нестандартном порту
win_security_rdp_reverse_tunnel.ymlОбратный RDP-туннель
net_connection_win_rdp_to_http.ymlRDP-соединение с переходом в HTTP
win_security_pass_the_hash_2.ymlPass-the-hash через Security Log
proc_creation_win_ssh_port_forward.ymlSSH port forwarding (туннелирование)

Конвертация Sigma в формат конкретного SIEM - через sigma-cli / pySigma с соответствующим бэкендом. Для российских SIEM (MaxPatrol SIEM, KUMA, R-Vision SIEM) потребуются ручные адаптации маппинга полей - готовых бэкендов под них пока нет, так что придётся повозиться руками.

Сводная таблица: атака -> detection​

Этап kill chainMITRE ATT&CKЧто ищемГде
Brute forceT1021.0014625 Type 10, burst >5/10 minSecurity Log
Rogue RDPT1021.0011149 с внешним IPTerminalServices Log
Lateral movementT1021.0014624 Type 10 между внутренними хостамиSecurity Log
Pass-the-hashT1550.0024624 Type 3 от источника, обычно дающего Type 10Security Log
Session hijackingT1563.0024778 без 4779 + tscon.exeSecurity + Sysmon
ЭксфильтрацияT1570Обращения к \\tsclient\*Sysmon, EDR

Hardening RDP: конкретные настройки​

📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме


А теперь нюанс, который не покрывают большинство руководств по защите RDP от взлома - и на котором горят даже опытные инженеры. Restricted Admin Mode и Remote Credential Guard решают разные задачи. Restricted Admin Mode не передаёт credentials на удалённый хост - но при этом включает возможность pass-the-hash через RDP, потому что переключает аутентификацию на network logon (Type 3), который принимает хеш. По сути, закрывая одну дверь, вы открываете другую. Remote Credential Guard использует Kerberos и не открывает PtH-вектор. Если основная модель угроз - lateral movement с PtH, правильный выбор - Remote Credential Guard, не Restricted Admin Mode. Но Remote Credential Guard требует доменного окружения и Windows 10 1607+.

На практике многие организации закрывают RDP снаружи (NLA, VPN, Gateway) и на этом останавливаются. Внутренняя сеть остаётся плоской: любая рабочая станция может открыть RDP-сессию на контроллер домена. Brute force снаружи - шумный и легко детектируемый. Lateral movement внутри - тихий и неотличимый от штатной работы. Именно это определяет масштаб ransomware-инцидента: не пролом периметра, а беспрепятственное перемещение внутри сети после него.

На моей практике большинство SOC-команд, которым я задавал вопрос "какие хосты прямо сейчас могут открыть RDP на ваш DC?", не дают точного ответа с первого раза. Пока этот ответ неизвестен - detection-правила работают вхолостую, потому что алертят на всё или ни на что. Первый шаг - не Sigma-правило и не NLA, а инвентаризация: кто, откуда и куда ходит по RDP внутри сети. Без этого baseline любая корреляция - шум.

Проверьте прямо сейчас: запустите PowerShell-скрипт из раздела "Три корреляции для SIEM" на вашем DC. Если в выводе больше нуля строк - у вас кто-то ломится. Если скрипт вообще не отработал - значит, аудит входа не включён. И то и другое - повод действовать сегодня. На форуме codeby.net коллеги ведут тред с разбором нестандартных кейсов RDP hijacking - включая IOC и таймлайны из реальных инцидентов, полезно сверить со своим playbook.
Полезно

Комментарии

0