Відкритий RDP: Неправильна конфігурація, яка все ще приносить користь зловмисникам
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
У статті пояснюється, що відкриті служби Remote Desktop Protocol продовжують слугувати загальним початковим вектором доступу для атакуючих. Багато організацій все ще залишають порти RDP доступними з публічного інтернету, роблячи їх легкими цілями для автоматизованого сканування та нападів, заснованих на можливості. Пост висвітлює реальні випадки, коли атакуючі зловживали відкритим доступом до RDP або використовували відкриті портали RDWeb, щоб увійти в середовище, а потім розширювати свій доступ через латеральний рух.
Розслідування
Описані випадки включають медичну організацію з RDP-портом, що виступає в інтернет, інцидент, пов’язаний із зломом через портал RDWeb, і проникнення, в якому нападники змінили налаштування фаєрволу і реєстру для ввімкнення RDP після експлуатації вразливого пристрою SonicWall VPN. У цих сценаріях нападники покладалися на прості команди Windows, утиліти реверсивного тунелювання та скрипти для збору облікових даних, щоб зберігати доступ і проникнути глибше в мережу.
Міри протидії
Рекомендовані засоби захисту зосереджені на усуненні непотрібного відкритого доступу RDP, розміщенні необхідного доступу RDP за правильно налаштованими фаєрволами, зміні облікових даних після будь-якого підозрілого відкриття та подачі логів фаєрволу та VPN у SIEM для швидшого виявлення. Стаття також радить розгорнути EDR-покриття і стежити за змінами в реєстрі, які увімкнуть або знову ввімкнуть служби RDP.
Реакція
Якщо виявлена підозріла діяльність, пов’язана з RDP, реагуючі особи повинні заблокувати IP-адресу, що порушує, відключити службу RDP, повернути шкідливі зміни в реєстрі, підтвердити, що правила фаєрволу не були змінені, і скинути уражені облікові дані. Постійний моніторинг повторних спроб доступу та перевірка всіх змін конфігурації також є необхідними.
Потік атаки
Виявлення
Можливе відображення сервісів віддаленого робочого столу (через подію реєстру)
Переглянути
Можливе відображення сервісів віддаленого робочого столу (через створення процесу)
Переглянути
Підозрілі модифікації фаєрволу через CLI (через cmdline)
Переглянути
Виявлення модифікації реєстру для увімкнення підключень RDP [Подія реєстру Windows]
Переглянути
Виявлення відкритого RDP і модифікації правил фаєрволу [Фаєрвол]
Переглянути
Виконання симуляції
Попередня умова: Перевірка телеметрії та базових значень повинна бути пройдена.
Обґрунтування: У цьому розділі детально описано точне виконання методики супротивника (TTP), створеної для ініціювання правила виявлення. Команди та наратив мають безпосередньо відображати виявлені TTP та мають на меті генерувати ту саму телеметрію, яку очікує логіка виявлення.
-
Сценарій атаки та команди:
-
Розвідка (T1016.001): Супротивник проводить швидке сканування підмережі цілі, щоб виявити вузли з відкритим портом 3389, використовуючи
Test-NetConnectionу циклі. -
Ескалація привілеїв / Маніпуляція фаєрволом (T1021.001): Отримавши права локального адміністратора, нападник використовує
netsh.exeщоб додати дозволяюче вхідне правило фаєрволу для RDP, тим самим виставляючи службу в інтернет. - Перевірка після створення: Нападник перераховує правила фаєрволу, щоб підтвердити наявність нового запису, а потім ініціює сеанс RDP (поза межами цього тесту).
-
Розвідка (T1016.001): Супротивник проводить швидке сканування підмережі цілі, щоб виявити вузли з відкритим портом 3389, використовуючи
-
Скрипт регресійного тесту:
#--------------------------------------------------------- # Симульована діяльність супротивника – Виставлення RDP через netsh #--------------------------------------------------------- # 1. Сканування локальної /24 підмережі для відкритих портів RDP (доброзичливе розвідування) $subnet = "10.0.0." 1..254 | ForEach-Object { $ip = "$subnet$_" $result = Test-NetConnection -ComputerName $ip -Port 3389 -WarningAction SilentlyContinue if ($result.TcpTestSucceeded) { Write-Host "[+] RDP open on $ip" } } # 2. Додати правило фаєрволу, яке дозволяє вхідний RDP з будь-якої адреси $ruleName = "TempAllowRDP_$(Get-Random -Maximum 10000)" $netshCmd = "advfirewall firewall add rule name=`"$ruleName`" dir=in action=allow protocol=TCP localport=3389" Write-Host "`n[+] Creating firewall rule via netsh..." Start-Process -FilePath "$env:SystemRootSystem32netsh.exe" -ArgumentList $netshCmd -Wait -NoNewWindow # 3. Підтвердити існування правила (необов'язково, допомагає підтвердити телеметрію) netsh advfirewall firewall show rule name=$ruleName # End of simulated attack -
Команди очистки:
#--------------------------------------------------------- # Видалити тимчасове правило фаєрволу, створене під час тесту #--------------------------------------------------------- $rulePrefix = "TempAllowRDP_" $rules = netsh advfirewall firewall show rule name=all | Select-String -Pattern $rulePrefix | ForEach-Object { ($_ -split 's+')[0] } foreach ($r in $rules) { Write-Host "[*] Deleting rule $r" netsh advfirewall firewall delete rule name=$r }