APT-Q-27 Dragon Breath: Аналіз RONINGLOADER і Gh0st RAT
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
Dragon Breath – це китайська кіберзлочинна APT, що націлена на користувачів, які розмовляють китайською мовою в Азіатсько-Тихоокеанському регіоні. Група використовує передові методи, серед яких троянські інсталяційні файли, завантаження DLL-бібліотек з бокової сторони і підписані ядрові драйвери для впровадження ланцюга інфекції RONINGLOADER і налаштованих варіантів Gh0st RAT. Також відомо, що актори здатні зламувати постачальників сертифікатів та отримувати матеріали для кодування своїх шкідливих програм.
Розслідування
Звіт досліджує еволюцію Dragon Breath з 2020 по 2026 рік, документуючи їхній перехід від атак на водопій до передових DLL-бокових завантажень і зловживання захищеними процесами Light (PPL). Особливо підкреслюється вторгнення 2026 року, що стосується DigiCert, де, за повідомленнями, група отримала матеріали для підписування коду. Аналіз також охоплює кілька технік ін’єкції, включаючи зловживання об’єктами пулу потоків та припинення процесів у режимі ядра.
Пом’якшення
Організації повинні перевірити контролі безпеки кінцевих точок на прикладі імітованих технік атаки Dragon Breath і посилити захист під час виконання додатків. Необхідно суворо дотримуватись політик контролю додатків, одночасно спостерігаючи за несанкціонованим створенням сервісів і підозрілим завантаженням DLL-бібліотек. Зокрема, виявлення зловживання захищеними процесами Light (PPL) і несанкціонованими чи непідписаними політиками WDAC є критично важливим.
Відповідь
Якщо виявлено активність Dragon Breath, уражені хости слід негайно ізолювати і розслідувати на наявність несанкціонованих локальних облікових записів і збереження через Windows Services. Відповідачі мають ретельно проаналізувати активність ін’єкції процесів, яка включає довірені системні процеси, такі як TrustedInstaller.exe or taskhostw.exe. Необхідно перевірити коди підпису сертифікатів і переглянути модифікації Windows Defender або регіональних засобів безпеки.
Потік атаки
Виявлення
Можлива затримка виконання поведінки (через командний рядок)
Підозріла створення твердого посилання для техніки перенаправлення каталогу (через командний рядок)
Можлива спроба зловживання ClipUp для втручання в засоби безпеки (через командний рядок)
Стійкість Dragon Breath: Створення локального бекдор акаунта [Журнал безпеки Microsoft Windows]
Виявлення Golden Gh0st RAT WebSocket C2 комунікації [Мережеве з’єднання Windows]
Стійкість Dragon Breath через модифікацію реєстру Winlogon [Подія реєстру Windows]
Виконання проксі-системного двійкового файлу Dragon Breath через regsvr32.exe та appR.exe [Створення процесу Windows]
Виконання симуляції
Передумова: Телеметрія та перевірка передстартової бази повинні бути пройдені.
Обґрунтування: Цей розділ деталізує точне виконання техніки супротивника (TTP), призначеної для спрацьовування правила виявлення. Команди та розповідь МАЮТЬ прямо відображати ідентифіковані TTP і мету генерувати саме ту телеметрію, що очікується логікою виявлення. Абстрактні або несумісні приклади призведуть до неправильної діагностики.
-
Опис атаки та команди: Супротивник отримав перший доступ і намагається встановити постійний канал командуючої контролі (C2). Для уникнення традиційного детектування на основі підписів і фаєрволів, що відстежують тільки стандартні HTTP/S запити, зловмисник розгортає легкий агент, що ініціює запит на покращення WebSocket. Переходячи від стандартного запиту HTTP GET до з’єднання WebSocket, зловмисник встановлює двосмуговий канал зв’язку, який дозволяє йому надсилати команди та отримувати дані (наприклад, натискання клавіш або ексфільтрацію файлів) в режимі реального часу під виглядом постійного веб-трафіку.
-
Скрипт регресійного тесту:
# Скрипт симуляції для імітації рукостискання/з'єднання WebSocket # Використовується реалізація сокета PowerShell для ініціації з'єднання у стилі WebSocket. # Примітка: Для успіху потрібен активний слухач або публічний WebSocket-ехо сервіс. $wsUri = "wss://echo.websocket.org" # Використання публічного ехо сервісу для симуляції Write-Host "[*] Спроба встановити з'єднання WebSocket з $wsUri..." try { $ws = New-Object System.Net.WebSockets.ClientWebSocket $ct = New-Object System.Threading.CancellationTokenSource $connectTask = $ws.ConnectAsync($wsUri, $ct.Token) # Очікування на з'єднання для імітації події 'Мережеве з'єднання' if ($connectTask.Wait(10000)) { Write-Host "[+] З'єднання WebSocket успішно встановлено." Write-Host "[!] Перевірте свій SIEM на наявність 'Протокол: WebSocket' попереджень." # Надіслати невеликий сигнализаційний пакет для утримання сокета відкритим $buffer = [System.Text.Encoding]::UTF8.GetBytes("Ping") $sendTask = $ws.SendAsync((New-Object ArraySegment[byte]($buffer)), [System.Net.WebSockets.WebSocketMessageType]::Text, $true, $ct.Token) $sendTask.Wait(5000) # Утримати з'єднання на короткий час для забезпечення захоплення телеметрії Start-Sleep -Seconds 10 $ws.CloseAsync([System.Net.WebSockets.WebSocketCloseStatus]::NormalClosure, "Закриття", $ct.Token).Wait() } else { Write-Host "[-] Час очікування з'єднання закінчився. Переконайтесь, що ціль може досягти URI WebSocket." } } catch { Write-Error "[-] Помилка під час симуляції: $($_.Exception.Message)" } finally { if ($ws) { $ws.Dispose() } } -
Очистка команд:
# PowerShell скрипт не створює постійних артефактів. # Переконайтесь, що будь-які підключення, відкриті вручну, закриті. Write-Host "[*] Очистка середовища симуляції..." Stop-Process -Name "powershell" -ErrorAction SilentlyContinue