Операція Dragon Weave використовує Azure Cloud C2 для націлювання на Чеську Республіку та Тайвань
Detection stack
- AIDR
- Alert
- ETL
- Query
Зміст
Цілеспрямована операція зі шпигунства, відома як Operation Dragon Weave, використовує шкідливі LNK файли ярликів разом із виконуваним файлом на базі Rust для запуску завантажувача з декількома стадіями, який в кінцевому підсумку розгортає керуючий агент Adaptix AZUREVEIL. Оператори використовують як механізм „мертвої точки” для зв’язку з командним і контрольним центром зберігання в Microsoft Azure Blob. Кампанія орієнтована на державних службовців та дослідників у Чехії та Тайвані.
Дослідження
Дослідження простежило повний ланцюжок зараження від початкового ZIP архіву через виконання VBScript, розшифрування на основі PowerShell, бічне завантаження DLL і спеціального завантажувача на базі Rust, який використовував RC4, Base64 і SM4 для розшифровки кінцевого завантажувача. Останнє стадійне зловмисне програмне забезпечення AZUREVEIL було ідентифіковано як 64-розрядний Adaptix DLL, який спілкувався лише через Azure Blob Storage і підтримував виконання завантажених файлів в оперативній пам’яті.
Пом’якшення ризиків
Захисники повинні блокувати виконання неочікуваних LNK файлів і підписаних виконуваних файлів, забезпечувати суворий контроль над виконанням скриптів і макросів та контролювати незвичний трафік Azure Blob Storage. Використання PowerShell із обходом політики виконання повинно бути обмежене або ретельно наглядатися, а команди безпеки повинні виявляти підозріле створення файлів у %LOCALAPPDATA% and %TEMP%. Також рекомендується сильна гігієна облікових даних для облікових записів Azure і регулярна ротація токенів SAS.
Відповідь
Команди безпеки повинні виявляти та ізолювати уражені хости, збирати змінну пам’ять для відновлення будь-яких завантажених у пам’ять даних, блокувати визначений домен зберігання Azure та шукати вказані артефакти файлів та шаблони процесів. Також має бути проведено повне судове дослідження для виявлення будь-яких додатково завантажених компонентів та видалення механізмів стійкості.
graph TB %% Class Definitions Section classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef file fill:#ddffdd classDef process fill:#ffeb99 classDef operator fill:#ff9900 %% Nodes attack_phishing[“<b>Дія</b> – <b>T1566.001 Цільове фішингове вкладення</b><br/>Зловмисник надсилає жертвам електронною поштою шкідливий ZIP-архів.”] class attack_phishing action file_zip[“<b>Файл</b> – malicious.zip<br/>Містить ярлик .lnk та дропер .exe, скомпільований мовою Rust.”] class file_zip file action_user_exec[“<b>Дія</b> – <b>T1204.001 Виконання користувачем</b><br/>Жертва відкриває файл .lnk або запускає .exe, що запускає ланцюг виконання дропера.”] class action_user_exec action file_lnk[“<b>Файл</b> – payload.pdf.lnk<br/>Ярлик використовує подвійне розширення та іконку Edge, щоб виглядати безпечним.”] class file_lnk file tool_wscript[“<b>Інструмент</b> – wscript.exe<br/>Виконує VBScript-пейлоад.”] class tool_wscript tool file_vbs[“<b>Файл</b> – empty.vbs<br/>Мінімалістичний VBScript, який запускає PowerShell.”] class file_vbs file action_vbscript[“<b>Дія</b> – <b>T1059.005 Visual Basic</b><br/>VBScript запускається через wscript для запуску PowerShell.”] class action_vbscript action action_powershell[“<b>Дія</b> – <b>T1059.001 PowerShell</b><br/>Profile.ps1 виконується з обходом політики виконання та розшифровує наступний етап атаки.”] class action_powershell action file_dat[“<b>Файл</b> – 1.dat<br/>Контейнер, зашифрований XOR, який містить RuntimeBroker_update.exe.”] class file_dat file process_runtime[“<b>Процес</b> – RuntimeBroker_update.exe<br/>Розшифровується з 1.dat; завантажує шкідливу UnityPlayer.dll через DLL side-loading.”] class process_runtime process file_dll[“<b>Файл</b> – UnityPlayer.dll<br/>Шкідлива DLL, розміщена поруч із RuntimeBroker_update.exe.”] class file_dll file action_dll_sideload[“<b>Дія</b> – <b>T1546.009 DLL AppCert</b><br/>DLL side-loading забезпечує виконання коду.”] class action_dll_sideload action tool_rustloader[“<b>Інструмент</b> – Завантажувач Rust (RUSTCLOAK)<br/>Виділяє пам’ять, записує розшифрований PE-файл AZUREVEIL та виконує його через Windows Fibers.”] class tool_rustloader tool action_process_injection[“<b>Дія</b> – <b>T1055.002 Впровадження в процес</b><br/>PE-ін’єкція з використанням Windows Fibers.”] class action_process_injection action file_azureveil[“<b>Файл</b> – AZUREVEIL.exe<br/>Розшифрований пейлоад, який виконується після ін’єкції.”] class file_azureveil file action_discovery[“<b>Дія</b> – <b>T1083 Виявлення файлів і каталогів</b><br/>Завантажувач перелічує файли та переміщує їх до %TEMP%.”] class action_discovery action action_network_discovery[“<b>Дія</b> – <b>T1016 Виявлення конфігурації мережі системи</b><br/>Збирає MAC- та IP-адреси для використання проксі та латерального переміщення.”] class action_network_discovery action action_c2[“<b>Дія</b> – <b>T1102 Вебсервіс</b><br/>Встановлює зв’язок з Azure Blob Storage через HTTPS.”] class action_c2 action action_dead_drop[“<b>Дія</b> – <b>T1102.003 Односторонній зв’язок</b><br/>Завантажує beacon-blob та отримує команди з того самого контейнера.”] class action_dead_drop action action_encrypted_channel[“<b>Дія</b> – <b>T1573.001 Зашифрований канал</b><br/>Дані beacon та команд шифруються за допомогою власної реалізації RC4 і SM4-CBC.”] class action_encrypted_channel action action_exfil[“<b>Дія</b> – <b>T1567.002 Ексфільтрація через вебсервіс</b><br/>Завантажує зашифровані дані до кінцевої точки Azure Blob.”] class action_exfil action action_persistence[“<b>Дія</b> – <b>T1547.009 Модифікація ярликів</b><br/>Розміщує шкідливий файл .lnk у папках автозапуску для забезпечення персистентності.”] class action_persistence action %% Edges attack_phishing –>|доставляє| file_zip file_zip –>|запускає| action_user_exec action_user_exec –>|відкриває| file_lnk file_lnk –>|виконує| tool_wscript tool_wscript –>|запускає| file_vbs file_vbs –>|ініціює| action_vbscript action_vbscript –>|запускає| action_powershell action_powershell –>|розшифровує| file_dat file_dat –>|створює| process_runtime process_runtime –>|завантажує| file_dll file_dll –>|використовується для| action_dll_sideload process_runtime –>|виконує| action_process_injection action_process_injection –>|використовує| tool_rustloader tool_rustloader –>|завантажує| file_azureveil file_azureveil –>|виконує| action_discovery action_discovery –>|також виконує| action_network_discovery action_network_discovery –>|надсилає дані до| action_c2 action_c2 –>|використовує| action_dead_drop action_dead_drop –>|покладається на| action_encrypted_channel action_encrypted_channel –>|забезпечує| action_exfil action_exfil –>|може спричинити| action_persistence file_lnk –>|створює| action_persistence %% Class Assignments class attack_phishing action class file_zip file class action_user_exec action class file_lnk file class tool_wscript tool class file_vbs file class action_vbscript action class action_powershell action class file_dat file class process_runtime process class file_dll file class action_dll_sideload action class tool_rustloader tool class action_process_injection action class file_azureveil file class action_discovery action class action_network_discovery action class action_c2 action class action_dead_drop action class action_encrypted_channel action class action_exfil action class action_persistence action
Потік атаки
Виявлення
LOLBAS WScript / CScript (через process_creation)
Переглянути
Можливість виконання через приховані командні лінії PowerShell (через cmdline)
Переглянути
Виклик підозрілих методів .NET з PowerShell (через powershell)
Переглянути
Можливі індикатори обфускації PowerShell (через powershell)
Переглянути
IOCs (HashSha256) для виявлення: Operation Dragon Weave: розкриття пов’язаної з Китаєм кампанії, яка націлена на Чеську Республіку та Тайвань з використанням Azure Cloud C2
Переглянути
Виявлення шкідливого виконання wscript.exe та використання CreateFiberEx [Створення процесу Windows]
Переглянути
Виконання Profile.ps1 з обходом PowerShell [PowerShell Windows]
Переглянути
Шкідливий LNK файл та бічне завантаження DLL для виконання RUSTCLOAK [Подія файлу Windows]
Переглянути
Виконання симуляції
Попередня умова: Попередньо перевірка телеметрії та базової лінії повинна бути пройдена.
Наратив атаки та команди
- Доставка: Аттакер надсилає фішингове електронне повідомлення з вкладенням під назвою
計畫申請審查結果通知單.pdf.lnk. Подвійне розширення приховує натуру ярлика. LNK вказує наC:Tempevil.vbs. - Виконання (VBScript): Коли жертва двічі клацає LNK,
wscript.exeзапускаєevil.vbs. Скрипт скидаєRuntimeBroker_update.exeto%APPDATA%MicrosoftWindowsStart MenuProgramsRuntimeBroker_update.exeі копіює шкідливийUnityPlayer.dll(що містить завантажувач на базі Rust) у ту саму директорію. - Бічне завантаження DLL: Аттакер виконує
RuntimeBroker_update.exe. Оскільки виконуваний файл підписано (або імітує легітимний бінарник), Windows завантажує сусіднійUnityPlayer.dll, який виконує вбудоване завантаження на базі Rust (RUSTCLOAK) та встановлює канал керування і контролю до Azure. - Після виконання: Вантаж виконує виявлення системи (T1016, T1082) та починає ексфільтрацію (T1041) через зашифрований канал (T1573).
Скрипт регресійного тестування
<#
Скрипт симуляції для виявлення шкідливого LNK та бічного завантаження DLL.
Попередні умови:
- Sysmon з увімкненими ProcessCreate (ID 1) та ImageLoad (ID 7).
- Дозвіл на запис до $env:APPDATAMicrosoftWindowsStart MenuPrograms
#>
# 1. Підготовка шкідливого VBScript
$vbPath = "$env:TEMPevil.vbs"
@'
Set objShell = CreateObject("WScript.Shell")
'objShell.Run """$env:APPDATAMicrosoftWindowsStart MenuProgramsRuntimeBroker_update.exe""", 0, False
'@ | Set-Content -Path $vbPath -Encoding Unicode
# 2. Розгортання фальшивого UnityPlayer.dll (місце утримання бінарника)
$dllPath = "$env:APPDATAMicrosoftWindowsStart MenuProgramsUnityPlayer.dll"
# Для демонстрації просто скопіюйте будь-який існуючий DLL (наприклад, version.dll) і перейменуйте його
Copy-Item "$env:SystemRootSystem32version.dll" $dllPath -Force
# 3. Розгортання допоміжного виконуваного файлу (копія легітимного бінарника для реалістичності)
$exePath = "$env:APPDATAMicrosoftWindowsStart MenuProgramsRuntimeBroker_update.exe"
Copy-Item "$env:SystemRootSystem32RuntimeBroker.exe" $exePath -Force
# 4. Створення шкідливого LNK з подвійним розширенням
$lnkPath = "$env:USERPROFILEDesktop計畫申請審查結果通知單.pdf.lnk"
$ws = New-Object -ComObject WScript.Shell
$shortcut = $ws.CreateShortcut($lnkPath)
$shortcut.TargetPath = "$env:SystemRootSystem32wscript.exe"
$shortcut.Arguments = "`"$vbPath`""
$shortcut.Save()
Write-Host "Шкідливий LNK створено у $lnkPath"
Write-Host "Виконання LNK для запуску ланцюгу..."
Start-Process -FilePath $lnkPath -Wait
Команди очищення
# Видалити артефакти
Remove-Item "$env:TEMPevil.vbs" -Force -ErrorAction SilentlyContinue
Remove-Item "$env:APPDATAMicrosoftWindowsStart MenuProgramsUnityPlayer.dll" -Force -ErrorAction SilentlyContinue
Remove-Item "$env:APPDATAMicrosoftWindowsStart MenuProgramsRuntimeBroker_update.exe" -Force -ErrorAction SilentlyContinue
Remove-Item "$env:USERPROFILEDesktop計畫申請審查結果通知單.pdf.lnk" -Force -ErrorAction SilentlyContinue
Write-Host "Очищення завершено."