РАЗБОР
Статья
RDP как вектор атаки: от входа до шифровальщика
[ обложка статьи ]
Режим чтения
По данным 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-атаки
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 внутри сети
Вот тут начинается самое неприятное. Взлом одного хоста превращается в компрометацию всей корпоративной сети. 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, корреляции
Карта Event ID для мониторинга RDP
| Event ID | Источник лога | Значение для detection |
|---|---|---|
| 4624 (Type 10) | Security | Успешный RDP-вход |
| 4625 (Type 10) | Security | Неудачная попытка RDP-входа |
| 1149 | TerminalServices-RemoteConnectionManager | Входящее RDP-подключение (source IP, username) |
| 21 | TerminalServices-LocalSessionManager | Начало RDP-сессии |
| 24 | TerminalServices-LocalSessionManager | Отключение RDP-сессии |
| 4778 | Security | Переподключение к существующей сессии |
| 4779 | Security | Отключение от сессии |
Три корреляции для 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
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.yml | RDP-listener на нестандартном порту |
win_security_rdp_reverse_tunnel.yml | Обратный RDP-туннель |
net_connection_win_rdp_to_http.yml | RDP-соединение с переходом в HTTP |
win_security_pass_the_hash_2.yml | Pass-the-hash через Security Log |
proc_creation_win_ssh_port_forward.yml | SSH port forwarding (туннелирование) |
Конвертация Sigma в формат конкретного SIEM - через
sigma-cli / pySigma с соответствующим бэкендом. Для российских SIEM (MaxPatrol SIEM, KUMA, R-Vision SIEM) потребуются ручные адаптации маппинга полей - готовых бэкендов под них пока нет, так что придётся повозиться руками.Сводная таблица: атака -> detection
| Этап kill chain | MITRE ATT&CK | Что ищем | Где |
|---|---|---|---|
| Brute force | T1021.001 | 4625 Type 10, burst >5/10 min | Security Log |
| Rogue RDP | T1021.001 | 1149 с внешним IP | TerminalServices Log |
| Lateral movement | T1021.001 | 4624 Type 10 между внутренними хостами | Security Log |
| Pass-the-hash | T1550.002 | 4624 Type 3 от источника, обычно дающего Type 10 | Security Log |
| Session hijacking | T1563.002 | 4778 без 4779 + tscon.exe | Security + Sysmon |
| Эксфильтрация | T1570 | Обращения к \\tsclient\* | Sysmon, EDR |
Hardening RDP: конкретные настройки
А теперь нюанс, который не покрывают большинство руководств по защите 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.
AI-выжимка
по разделам
Тезисы статьи скоро
Статья читается полностью. Тезисы со ссылками на разделы появятся позже.
Содержание
Codeby Academy
Практика и мастерство
От основ до продвинутого — программы для практиков Codeby.
Перейти к курсу →
Продолжить чтение
Следующий разбор
Bug bounty репорт уязвимости: разбор CVE-2026-4986
Комментарии
0