SOC Prime Bias: Критичний

22 May 2026 07:08 UTC

Відкритий RDP: Неправильна конфігурація, яка все ще приносить користь зловмисникам

Author Photo
SOC Prime Team linkedin icon Стежити
Відкритий RDP: Неправильна конфігурація, яка все ще приносить користь зловмисникам
shield icon

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, повернути шкідливі зміни в реєстрі, підтвердити, що правила фаєрволу не були змінені, і скинути уражені облікові дані. Постійний моніторинг повторних спроб доступу та перевірка всіх змін конфігурації також є необхідними.

<div class="wp-block-socprime-category-attack-flow attack-flow-class" data-title="Attack Flow" data-attack-flow="graph TB %% Class Definitions classDef technique fill:#ffcc99 classDef action fill:#99ccff classDef tool fill:#cccccc classDef operator fill:#ff9900 %% Nodes – Techniques tech_scanning_ip["<b>Technique</b> – <b>T1595.001</b><br/><b>Name</b>: Active Scanning: Scanning IP Blocks<br/><b>Description</b>: Adversary probes ranges of IP addresses to locate vulnerable hosts."] class tech_scanning_ip technique tech_scanning_vuln["<b>Technique</b> – <b>T1595.002</b><br/><b>Name</b>: Active Scanning: Vulnerability Scanning<br/><b>Description</b>: Uses automated tools to find known vulnerabilities in remote systems."] class tech_scanning_vuln technique tech_valid_accounts["<b>Technique</b> – <b>T1078</b><br/><b>Name</b>: Valid Accounts<br/><b>Description</b>: Use of stolen or otherwise compromised credentials to gain access."] class tech_valid_accounts technique tech_disable_firewall["<b>Technique</b> – <b>T1562.004</b><br/><b>Name</b>: Disable or Modify System Firewall<br/><b>Description</b>: Alters firewall configuration to allow inbound traffic such as RDP."] class tech_disable_firewall technique tech_create_modify_process["<b>Technique</b> – <b>T1543</b><br/><b>Name</b>: Create or Modify System Process<br/><b>Description</b>: Creates or changes system processes via registry or service configuration."] class tech_create_modify_process technique tech_system_services["<b>Technique</b> – <b>T1569</b><br/><b>Name</b>: System Services<br/><b>Description</b>: Manipulates services to execute malicious code or maintain persistence."] class tech_system_services technique tech_discovery_network["<b>Technique</b> – <b>T1049</b><br/><b>Name</b>: System Network Connections Discovery<br/><b>Description</b>: Enumerates active network connections on the compromised host."] class tech_discovery_network technique %% Nodes – Tools / Commands tool_shodan["<b>Tool</b> – <b>Name</b>: Shodan<br/><b>Description</b>: Internet‑wide scanning service used to discover exposed services such as RDP."] class tool_shodan tool tool_rdp["<b>Tool</b> – <b>Name</b>: Remote Desktop Protocol (RDP)<br/><b>Description</b>: Windows remote login service leveraged after credential theft."] class tool_rdp tool tool_netsh["<b>Tool</b> – <b>Name</b>: netsh<br/><b>Command</b>: netsh advfirewall add rule name='RDP-Open' dir=in protocol=TCP localport=3389 action=allow enable=yes"] class tool_netsh tool tool_reg["<b>Tool</b> – <b>Name</b>: reg.exe<br/><b>Command</b>: reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f"] class tool_reg tool tool_netstart["<b>Tool</b> – <b>Name</b>: net start<br/><b>Command</b>: net start TermService"] class tool_netstart tool tool_adv_ip_scanner["<b>Tool</b> – <b>Name</b>: Advanced IP Scanner<br/><b>Description

graph TB %% Class Definitions classDef technique fill:#ffcc99 classDef action fill:#99ccff classDef tool fill:#cccccc classDef operator fill:#ff9900 %% Nodes – Techniques tech_scanning_ip[“<b>Technique</b> – <b>T1595.001</b><br/><b>Name</b>: Active Scanning: Scanning IP Blocks<br/><b>Description</b>: Adversary probes ranges of IP addresses to locate vulnerable hosts.”] class tech_scanning_ip technique tech_scanning_vuln[“<b>Technique</b> – <b>T1595.002</b><br/><b>Name</b>: Active Scanning: Vulnerability Scanning<br/><b>Description</b>: Uses automated tools to find known vulnerabilities in remote systems.”] class tech_scanning_vuln technique tech_valid_accounts[“<b>Technique</b> – <b>T1078</b><br/><b>Name</b>: Valid Accounts<br/><b>Description</b>: Use of stolen or otherwise compromised credentials to gain access.”] class tech_valid_accounts technique tech_disable_firewall[“<b>Technique</b> – <b>T1562.004</b><br/><b>Name</b>: Disable or Modify System Firewall<br/><b>Description</b>: Alters firewall configuration to allow inbound traffic such as RDP.”] class tech_disable_firewall technique tech_create_modify_process[“<b>Technique</b> – <b>T1543</b><br/><b>Name</b>: Create or Modify System Process<br/><b>Description</b>: Creates or changes system processes via registry or service configuration.”] class tech_create_modify_process technique tech_system_services[“<b>Technique</b> – <b>T1569</b><br/><b>Name</b>: System Services<br/><b>Description</b>: Manipulates services to execute malicious code or maintain persistence.”] class tech_system_services technique tech_discovery_network[“<b>Technique</b> – <b>T1049</b><br/><b>Name</b>: System Network Connections Discovery<br/><b>Description</b>: Enumerates active network connections on the compromised host.”] class tech_discovery_network technique %% Nodes – Tools / Commands tool_shodan[“<b>Tool</b> – <b>Name</b>: Shodan<br/><b>Description</b>: Internet‑wide scanning service used to discover exposed services such as RDP.”] class tool_shodan tool tool_rdp[“<b>Tool</b> – <b>Name</b>: Remote Desktop Protocol (RDP)<br/><b>Description</b>: Windows remote login service leveraged after credential theft.”] class tool_rdp tool tool_netsh[“<b>Tool</b> – <b>Name</b>: netsh<br/><b>Command</b>: netsh advfirewall add rule name=’RDP-Open’ dir=in protocol=TCP localport=3389 action=allow enable=yes”] class tool_netsh tool tool_reg[“<b>Tool</b> – <b>Name</b>: reg.exe<br/><b>Command</b>: reg add “HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fDenyTSConnections /t REG_DWORD /d 0 /f”] class tool_reg tool tool_netstart[“<b>Tool</b> – <b>Name</b>: net start<br/><b>Command</b>: net start TermService”] class tool_netstart tool tool_adv_ip_scanner[“<b>Tool</b> – <b>Name</b>: Advanced IP Scanner<br/><b>Description</b>: GUI utility used to enumerate devices and network connections.”] class tool_adv_ip_scanner tool %% Connections – Attack Flow tech_scanning_ip –>|uses| tool_shodan tech_scanning_ip –>|leads_to| tech_scanning_vuln tech_scanning_vuln –>|leads_to| tech_valid_accounts tech_valid_accounts –>|uses| tool_rdp tool_rdp –>|enables| tech_disable_firewall tech_disable_firewall –>|uses| tool_netsh tech_disable_firewall –>|leads_to| tech_create_modify_process tech_create_modify_process –>|uses| tool_reg tech_create_modify_process –>|leads_to| tech_system_services tech_system_services –>|uses| tool_netstart tech_valid_accounts –>|reused_for| tech_valid_accounts tech_valid_accounts –>|leads_to| tech_discovery_network tech_discovery_network –>|uses| tool_adv_ip_scanner

Потік атаки

Виконання симуляції

Попередня умова: Перевірка телеметрії та базових значень повинна бути пройдена.

Обґрунтування: У цьому розділі детально описано точне виконання методики супротивника (TTP), створеної для ініціювання правила виявлення. Команди та наратив мають безпосередньо відображати виявлені TTP та мають на меті генерувати ту саму телеметрію, яку очікує логіка виявлення.

  • Сценарій атаки та команди:

    1. Розвідка (T1016.001): Супротивник проводить швидке сканування підмережі цілі, щоб виявити вузли з відкритим портом 3389, використовуючи Test-NetConnection у циклі.
    2. Ескалація привілеїв / Маніпуляція фаєрволом (T1021.001): Отримавши права локального адміністратора, нападник використовує netsh.exe щоб додати дозволяюче вхідне правило фаєрволу для RDP, тим самим виставляючи службу в інтернет.
    3. Перевірка після створення: Нападник перераховує правила фаєрволу, щоб підтвердити наявність нового запису, а потім ініціює сеанс RDP (поза межами цього тесту).
  • Скрипт регресійного тесту:

    #---------------------------------------------------------
    # Симульована діяльність супротивника – Виставлення 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
    }