GammaSteel: Всередині розгорнутої зловмисницької ланцюга Gamaredon
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
Звіт описує GammaSteel, новий ланцюг вторгнень Gamaredon (UAC-0010), побудований навколо безфайлового крадіжника PowerShell. Шкідливе ПЗ зберігає 71 зашифровану функцію в HKCUPrinters ключі реєстру і захищає їх за допомогою Windows DPAPI. Воно збирає документи з локальних дисків, USB-носіїв та файлів, що активно редагуються, потім видаляє дублікати даних за допомогою MD5 перед ексфільтрацією до легітимного S3-сумісного сервісу Tebi.io, з резервним переходом на закодовані російські домени. Ширша інфраструктура також покладається на dead-drop резолвери, розміщені на публічних платформах, таких як Telegram, Telegra.ph, Write.as, Rentry.co і Mastodon, разом із динамічними DNS сервісами. Кампанія продовжує націлюватися на український уряд і важливі інфраструктурні середовища.
Розслідування
Sekoia.io проаналізувала більше 70 артефактів, відновила повний PowerShell-дроппер і виявила стійкість на основі реєстру, мутекс, приховане заплановане виконання PowerShell та багаторівневу схему ексфільтрації. Дослідники створили карту інфраструктури dead-drop резолверів, каталогізували 115 IP-адрес, чотири домени та декілька наборів S3-облікових даних і спостерігали за автоматичними оновленнями, здійсненими через пости в Mastodon. Вони також відзначили схожість з активністю InvisiMole 2020 року, зокрема використання DPAPI-зашифрованих навантажень, збережених у реєстрі.
Пом’якшення
Організації повинні стежити за незвичайними записами до HKCUPrinters, створенням прихованих процесів PowerShell та використанням Globalassembly307 мутекса. Вихідний трафік до ідентифікованої S3-крапки s3.tebi.io і резервної інфраструктури, такої як justsstop.ru and 165.22.170.129 повинен бути заблокований. Захисники також повинні розгорнути виявлення для специфічного рядка агента користувача в стилі iPhone та для записів запуску в реєстрі, що викликають скрипти PowerShell.
Відповідь
Якщо виявлена активність GammaSteel, ізолюйте постраждалий хост, зберіть HKCUPrinters вулика реєстру, витягніть захищені DPAPI навантаження та розшифруйте їх за допомогою майстер-ключа жертви, коли це можливо. Полюйте по всьому середовищі на пов’язані артефакти, блокуйте ідентифіковані URL-е командування та контролю доменів, скидайте будь-які скомпрометовані облікові дані та проведіть повний судово-медичний огляд, щоб виявити додаткові шкідливі модулі.
"graph TB %% Class definitions classDef technique fill:#e6f7ff classDef process fill:#ffebcc classDef action fill:#c2f0c2 classDef tool fill:#dddddd classDef storage fill:#ffe6e6 classDef network fill:#d9d9ff classDef data fill:#f0e68c %% Nodes u2013 techniques tech_T1027_009["<b>Technique</b> – <b>T1027.009 Вбудовані Навантаження</b><br/>Затемнення навантаження в іншому файлі"] class tech_T1027_009 technique tech_T1027_007["<b>Technique</b> – <b>T1027.007 Динамічне Розв’язування API</b><br/>Розв’язує API під час виконання, щоб уникнути статичного аналізу"] class tech_T1027_007 technique tech_T1027_002["<b>Technique</b> – <b>T1027.002 Упаковка Програмного Забезпечення</b><br/>Пакети шкідливого коду, щоб приховати його справжню природу"] class tech_T1027_002 technique tech_T1027_013["<b>Technique</b> – <b>T1027.013 Зашифрований/Закодований Файл</b><br/>Шифрує дані за допомогою DPAPI перед збереженням"] class tech_T1027_013 technique tech_T1547_001["<b>Technique</b> – <b>T1547.001 Ключі Запуску Реєстру / Папка Запуску</b><br/>Додає ключ запуску для досягнення стійкості"] class tech_T1547_001 technique tech_T1037_005["<b>Technique</b> – <b>T1037.005 Елементи Стартупу</b><br/>Використовує елементи стартупу для стійкості"] class tech_T1037_005 technique tech_T1680["<b>Technique</b> – <b>T1680 Відкриття Локального Зберігання</b><br/>Відкриває локальні диски і профілі користувачів"] class tech_T1680 technique tech_T1135["<b>Technique</b> – <b>T1135 Виявлення Загального Мережевого Локації</b><br/>Знаходить спільні мережеві локації"] class tech_T1135 technique tech_T1006["<b>Technique</b> – <b>T1006 Прямий Доступ до Тома</b><br/>Доступ до знімних медіа безпосередньо"] class tech_T1006 technique tech_T1025["<b>Technique</b> – <b>T1025 Дані з Знімних Медіа</b><br/>Збирає дані з USB-пристроїв"] class tech_T1025 technique tech_T1564_005["<b>Technique</b> – <b>T1564.005 Прихована Файлова Система</b><br/>Зберігає файли у прихованих локаціях"] class tech_T1564_005 technique tech_T1005["<b>Technique</b> – <b>T1005 Дані з Локальної Системи</b><br/>Збирає файли з локальної машини"] class tech_T1005 technique tech_T1537["<b>Technique</b> – <b>T1537 Передача Даних до Хмарного Облікового Запису</b><br/>Завантажує вкрадені дані у хмарне зберігання"] class tech_T1537 technique tech_T1538["<b>Technique</b> – <b>T1538 Хмарна Панель Управління</b><br/>Використовує інтерфейси хмарного сервісу для ексфільтрації даних"] class tech_T1538 technique tech_T1102_001["<b>Technique</b> – <b>T1102.001 Веб-Сервіс: Dead Drop Resolver</b><br/>Отримує команди і конфігурацію з загальних веб-сервісів"] class tech_T1102_001 technique tech_T1620["<b>Technique</b> – <b>T1620 Відображуване Завантаження Коду</b><br/>Завантажує та виконує код, отриманий під час виконання"] class tech_T1620 technique %% Nodes u2013 actions and components malware_dropper["<b>Шкідливе ПЗ</b> – <b>Назва</b>: Початковий Дропер<br/><b>Опис</b>: Виконує затемнений PowerShell-скрипт"] class malware_dropper process process_powershell["<b>Процес</b> – <b>Назва</b>: PowerShell<br/><b>Роль</b>: Виконує закодований скрипт"] class process_powershell process storage_dpapi["<b>Зберігання</b> – <b>Розташування</b>: HKCUPrinters<br/><b>Вміст</b>: 71 функція зашифрована з DPAPI"] class storage_dpapi storage persistence_runkey["<b>Дія</b> – <b>Стійкість</b>: Ключ запуску в реєстрі<br/><b>Ключ</b>: HKCUSoftwareMicrosoftWindowsCurrentVersionRun"] class persistence_runkey action process_hidden_ps["<b>Процес</b> – <b>Назва</b>: Схований PowerShell<br/><b>Мета</b>: Зчитує оркестратор з реєстру"] class process_hidden_ps process orchestrator["<b>Дія</b> – <b>Оркестратор</b>: Перераховує ресурси та координує збір"] class orchestrator action enumeration["<b>Дія</b> – <b>Перерахування</b>: Диски, профілі, мережеві частки"] class enumeration action collection["<b>Дія</b> – <b>Збір</b>: Збирає файли з локальних та мережевих локацій"] class collection action monitor_usb["<b>Дія</b> – <b>Моніторинг USB</b>: Підписка на події WMI для знімних медіа"] class monitor_usb action staging_folder["<b>Зберігання</b> – <b>Прихована Папка</b>: Область для копіювання файлів"] class staging_folder storage fs_watcher["<b>Процес</b> – <b>Назва</b>: FileSystemWatcher<br/><b>Функція</b>: Моніторинг незнімних дисків на зміни"] class fs_watcher process deduplication["<b>Дія</b> – <b>Дедуплікація</b>: Видалення дублікатів файлів перед ексфільтрацією"] class deduplication action upload_s3["<b>Дія</b> – <b>Завантаження</b>: Відправляє дані в S3-сумісне відро (tebi.io)"] class upload_s3 network fallback_post["<b>Дія</b> – <b>Резервна Ексфільтрація</b>: POST на домени C2, що імітують iPhone UA"] class fallback_post network dead_drop["<b>Дія</b> – <b>Dead Drop Resolver</b>: Отримує конфігурацію з Telegram, Telegra.ph, Write.as, Rentry.co, Mastodon"] class dead_drop action vbscript_backdoor["<b>Дія</b> – <b>Другий Backdoor</b>: Виконує довільний VBScript з HTTP-відповіді"] class vbscript_backdoor action %% Connections u2013 flow malware_dropper –>|використовує| tech_T1027_009 malware_dropper –>|використовує| tech_T1027_007 malware_dropper –>|використовує| tech_T1027_002 malware_dropper –>|зберігає зашифровані дані| tech_T1027_013 malware_dropper –>|запускає| process_powershell process_powershell –>|записує зашифровані функції до| storage_dpapi storage_dpapi –>|включає| persistence_runkey persistence_runkey –>|створює| tech_T1547_001 persistence_runkey –>|створює| tech_T1037_005 persistence_runkey –>|запускає| process_hidden_ps process_hidden_ps –>|завантажує оркестратор з реєстру| orchestrator orchestrator –>|виконує| enumeration enumeration –>|покриває| tech_T1680 enumeration –>|покриває| tech_T1135 orchestrator –>|збирає дані, використовуючи| collection collection –>|використовує| tech_T1005 collection –>|включає знімні медіа через| tech_T1025 collection –>|включає прямий доступ до тома через| tech_T1006 collection –>|тригерить| monitor_usb monitor_usb –>|копіює файли до| staging_folder staging_folder –>|прихований за допомогою| tech_T1564_005 staging_folder –>|моніториться| fs_watcher fs_watcher –>|виявляє зміни і тригерить| deduplication deduplication –>|завантажується в хмару через| upload_s3 upload_s3 –>|спирається на| tech_T1537 upload_s3 –>|резервний варіант до| fallback_post fallback_post –>|спирається на| tech_T1538 orchestrator –>|отримує оновлення від| dead_drop dead_drop –>|використовує| tech_T1102_001 dead_drop –>|доставляє| vbscript_backdoor vbscript_backdoor –>|використовує| tech_T1620 %% Styling assignments class malware_dropper,process_powershell,process_hidden_ps,fs_watcher,orchestrator,monitor_usb,vbscript_backdoor builtin class storage_dpapi,staging_folder builtin class persistence_runkey,enumeration,collection,deduplication,upload_s3,fallback_post,dead_drop action class tech_T1027_009,tech_T1027_007,tech_T1027_002,tech_T1027_013,tech_T1547_001,tech_T1037_005,tech_T1680,tech_T1135,tech_T1006,tech_T1025,tech_T1564_005,tech_T1005,tech_T1537,tech_T1538,tech_T1102_001,tech_T1620 technique "
Потік атак
Виявлення
Можливі точки стійкості [ASEPs – Software/NTUSER Hive] (via registry_event)
Переглянути
Можливість виконання через приховані командні рядки PowerShell (through cmdline)
Переглянути
LOLBAS WScript / CScript (через process_creation)
Переглянути
Можливе виявлення системної інформації за допомогою модуля WMI PowerShell (through powershell)
Переглянути
Підозрілий запит DNS процесу до відомих веб-сервісів (через network_connection)
Переглянути
Можливе зловживання доменами розробки Cloudflare (через dns)
Переглянути
IOC (SourceIP) для виявлення: Матрьошка ФСБ #3/3 – подарунки Gamaredon, які продовжують розпаковуватись – GammaSteel
Переглянути
IOC (DestinationIP) для виявлення: Матрьошка ФСБ #3/3 – подарунки Gamaredon, які продовжують розпаковуватись – GammaSteel
Переглянути
Виявлення прихованого виконання PowerShell для операцій Gamaredon [Windows Powershell]
Переглянути
Виявлення техніки сценування реєстру PowerShell Gamaredon [Event реєстру Windows Registry]
Переглянути
Виконання симуляції
Передумова: Перевірка телеметрії та базової лінії повинна була пройти успішно.
Обґрунтування: У цьому розділі детально описано точне виконання техніки супротивника (TTP), призначеної для спрацювання правила виявлення. Команди та наратив ОБОВ’ЯЗКОВО повинні безпосередньо відображати ідентифіковані TTP та намагатися згенерувати точну телеметрію, яка очікується від логіки виявлення.
-
Опис & Команди атаки:
Атакувач, зламувавши обліковий запис користувача з низькими привілеями, хоче сценувати зашифроване навантаження PowerShell, не торкаючись файлової системи. Вони записують закодоване в Base64 навантаження вRunключ, щоб воно виконувалося при наступному вході в систему. Щоб уникнути єдиного виключення з правила, вони навмисно використовують підключення підHKCUPrinters, що є not виключеним значенням, імітуючи патерн “стагування прінтера”, спостережений в зразках Gamaredon. -
Сценарій тестування регресії:
# -------------------------------------------------------------- # Симулюйте сценування реєстру PowerShell Gamaredon (TC-20260608-A1B2C) # -------------------------------------------------------------- # 1. Визначте закодовану в Base64, нешкідливу команду PowerShell (наприклад, запис файлу) $payload = 'Write-Host "Gamaredon simulation executed"' $b64 = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($payload)) # 2. Збережіть навантаження через ключ запуску (стійкість) $runKey = 'HKCU:SOFTWAREMicrosoftWindowsCurrentVersionRun' New-ItemProperty -Path $runKey -Name 'GamaredonStager' -Value "powershell -enc $b64" -PropertyType String -Force # 3. Сценуйте те ж навантаження в ключі "прінтера" (безфайлове сценування) $printerKey = 'HKCU:PrintersYxwHku2chu0bznt3kkyAD' # Примітка: інший суфікс, щоб уникнути виключення New-Item -Path $printerKey -Force | Out-Null Set-ItemProperty -Path $printerKey -Name 'EncryptedPS' -Value $b64 -Force Write-Host "Simulacija completed – registry entries created." -
Очистки Команди:
# Видалити запис з ключа запуску Remove-ItemProperty -Path 'HKCU:SOFTWAREMicrosoftWindowsCurrentVersionRun' -Name 'GamaredonStager' -ErrorAction SilentlyContinue # Видалити ключ сценування "прінтера" Remove-Item -Path 'HKCU:PrintersYxwHku2chu0bznt3kkyAD' -Recurse -Force -ErrorAction SilentlyContinue Write-Host "Очистка завершена – артефакти реєстру видалено."