APT-атаки націлюються на уряд Індії з використанням SHEETCREEP, FIREPOWER і MAILCREEP | Частина 2
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
Звіт охоплює операцію Sheet Attack, в рамках якої були розгорнуті три спеціально створених бекдори—SHEETCREEP, FIREPOWER та MAILCREEP—для компрометації індійських урядових організацій. Імпланти покладалися на легітимні хмарні платформи для командування та управління, включаючи Google Sheets, Firebase Realtime Database і Microsoft Graph API, щоб діяльність зливалася з нормальним трафіком SaaS. Аналіз також відзначає артефакти, які свідчать про використання розробниками генеративного ШІ для допомоги у створенні коду. Кампанія оцінюється як імовірно пов’язана з підгрупою APT36, що базується в Пакистані.
Розслідування
ThreatLabz провів як динамічний, так і статичний аналіз бекдорів, задокументував методи персистентності, робочі процеси C2 і поведінку ексфільтрації даних. Команда також здійснила картування інфраструктури підтримки, спостерігала за географічною і User-Agent–базованою фільтрацією, і захопила індикатори на рівні коду, які свідчать про генерацію джерела за допомогою ШІ.
Пом’якшення
Застосовуйте багатошарові методи виявлення для підозрілих PDF/LNK ланцюгів доставки та контролюйте заплановані завдання, які запускають виконання PowerShell або VBS. Застосовуйте строгі зовнішні обмеження і моніторинг аномалій для хмарних сервісів, які зазвичай зловживаються як C2, включаючи Google Sheets, Firebase та Microsoft Graph. Використовуйте блокування на основі хешів для відомих корисних навантажень і блокуйте ідентифіковані зловмисні домени та IP-адреси.
Відповідь
Після виявлення ізолюйте кінцеву точку, завершіть приховану діяльність cmd.exe та PowerShell, видаліть відповідні заплановані завдання і видаліть бекдор бінарні файли. Збережіть і перегляньте логи C2 на основі Google Sheets і артефакти Firebase, потім проведіть полювання у середовищі на додаткові вузли, які демонструють ті ж індикатори.
graph TB %% Class definitions classDef action fill:#99ccff classDef process fill:#ffdd99 classDef file fill:#ffcccc classDef data fill:#e6e6ff classDef protocol fill:#d9ead3 classDef technique fill:#ffd966 %% Nodes – Initial Access action_phishing[“<b>Дія</b> – <b>T1204.001 Виконання Користувачем: Шкідливе Посилання</b><br/>Жертва натискає шкідливе посилання у PDF-файлі”] class action_phishing action file_phishing_pdf[“<b>Файл</b> – <b>Назва</b>: Фішинговий PDF<br/><b>Техніка</b>: T1204.001”] class file_phishing_pdf file file_malicious_lnk[“<b>Файл</b> – <b>Назва</b>: Шкідливий LNK<br/><b>Техніка</b>: T1204.002 Виконання Користувачем: Шкідливий Файл”] class file_malicious_lnk file process_powershell[“<b>Процес</b> – <b>Назва</b>: PowerShell<br/><b>Техніка</b>: T1059.001 Інтерпретатор Команд і Скриптів”] class process_powershell process file_dotnet_assembly[“<b>Файл</b> – <b>Назва</b>: .NET збірка, замаскована під PNG<br/><b>Техніки</b>: T1620 Відбивне Завантаження Коду, T1036.008 Маскування Типу Файлу”] class file_dotnet_assembly file process_hidden_cmd[“<b>Процес</b> – <b>Назва</b>: Прихований cmd.exe<br/><b>Техніка</b>: T1059.003 Командна Оболонка”] class process_hidden_cmd process %% Nodes – Persistence action_persistence[“<b>Дія</b> – Налаштування Стійкості”] class action_persistence action task_scheduled[“<b>Техніка</b> – T1053 Заплановане Завдання”] class task_scheduled technique script_gservices[“<b>Файл</b> – <b>Назва</b>: GServices.vbs<br/><b>Призначення</b>: Повторне виконання”] class script_gservices file %% Nodes – Command and Control action_c2[“<b>Дія</b> – Командування та Контроль”] class action_c2 action data_google_sheets[“<b>Сховище Даних</b> – Google Sheets<br/><b>Техніка</b>: T1102.002 Вебсервіс: Таблиці”] class data_google_sheets data protocol_https[“<b>Протокол</b> – HTTPS<br/><b>Техніка</b>: T1071.001 Вебпротоколи”] class protocol_https protocol technique_dead_drop[“<b>Техніка</b> – T1102.001 Dead Drop Resolver”] class technique_dead_drop technique backup_firebase[“<b>Сховище Даних</b> – Firebase URL<br/><b>Резерв</b>: Канал C2”] class backup_firebase data backup_gcs[“<b>Сховище Даних</b> – Google Cloud Storage<br/><b>Резерв</b>: Канал C2”] class backup_gcs data encryption_tripledes[“<b>Техніка</b> – T1027 Обфускація/Шифрування Даних (TripleDES)”] class encryption_tripledes technique encryption_channel[“<b>Техніка</b> – T1573 Зашифрований Канал”] class encryption_channel technique %% Nodes – Discovery action_discovery[“<b>Дія</b> – Виявлення”] class action_discovery action command_whoami[“<b>Команда</b> – whoami<br/><b>Техніка</b>: T1033 Виявлення Користувача Системи”] class command_whoami technique command_enum_domains[“<b>Команда</b> – Перелік доменних облікових записів<br/><b>Техніка</b>: T1087.002 Доменний Обліковий Запис”] class command_enum_domains technique %% Nodes – Execution of Commands action_execution[“<b>Дія</b> – Виконання Отриманих Команд”] class action_execution action %% Nodes – Cloud Account Creation cloud_account_creation[“<b>Дія</b> – Створення Облікового Запису Google Cloud<br/><b>Техніка</b>: T1136.003 Хмарний Обліковий Запис”] class cloud_account_creation action %% Nodes – Defense Evasion action_defense_evasion[“<b>Дія</b> – Ухилення від Захисту”] class action_defense_evasion action technique_hidden_fs[“<b>Техніка</b> – T1564.005 Приховані Файли та Каталоги”] class technique_hidden_fs technique %% Connections – Flow action_phishing –>|доставляє| file_phishing_pdf file_phishing_pdf –>|містить посилання на| file_malicious_lnk file_malicious_lnk –>|виконує| process_powershell process_powershell –>|завантажує через відбиття| file_dotnet_assembly file_dotnet_assembly –>|створює| process_hidden_cmd process_hidden_cmd –>|дозволяє| action_persistence action_persistence –>|створює| task_scheduled action_persistence –>|запускає| script_gservices action_persistence –>|звʼязується з| action_c2 action_c2 –>|використовує| data_google_sheets data_google_sheets –>|через| protocol_https action_c2 –>|застосовує| technique_dead_drop action_c2 –>|резервно використовує| backup_firebase action_c2 –>|резервно використовує| backup_gcs action_c2 –>|шифрує трафік через| encryption_tripledes action_c2 –>|встановлює| encryption_channel action_c2 –>|ініціює| action_discovery action_discovery –>|виконує| command_whoami action_discovery –>|виконує| command_enum_domains action_c2 –>|передає команди для| action_execution action_execution –>|виконує через PowerShell| process_powershell action_execution –>|виконує через прихований cmd| process_hidden_cmd action_c2 –>|вимагає| cloud_account_creation cloud_account_creation –>|надає інфраструктуру для| data_google_sheets cloud_account_creation –>|надає інфраструктуру для| backup_firebase cloud_account_creation –>|надає інфраструктуру для| backup_gcs action_execution –>|використовує| action_defense_evasion action_defense_evasion –>|застосовує| technique_hidden_fs
Потік Атаки
Виявлення
Завантаження або вивантаження через PowerShell (через cmdline)
Перегляд
Домен Microsoft Graph API, розв’язаний незвичайним процесом (через dns_query)
Перегляд
Підозрілі файли в загальному профілі користувача (через подія файлу)
Перегляд
Спроба виконання підозрілого GNU Wget (через cmdline)
Перегляд
Виклик підозрілих .NET методів з PowerShell (через powershell)
Перегляд
Підозріле виконання з загального профілю користувача (через creation процесу)
Перегляд
Можливе введення/виведення даних/C2 через сторонні сервіси/інструменти (через dns)
Перегляд
Підозрілі вилучені файли з архіву (через подія файлу)
Перегляд
IOC (SourceIP) для виявлення: APT-атаки націлені на уряд Індії з використанням SHEETCREEP, FIREPOWER і MAILCREEP | Частина 2
Перегляд
IOC (HashMd5) для виявлення: APT-атаки націлені на уряд Індії з використанням SHEETCREEP, FIREPOWER і MAILCREEP | Частина 2
Перегляд
IOC (DestinationIP) для виявлення: APT-атаки націлені на уряд Індії з використанням SHEETCREEP, FIREPOWER і MAILCREEP | Частина 2
Перегляд
IOC (HashSha1) для виявлення: APT-атаки націлені на уряд Індії з використанням SHEETCREEP, FIREPOWER і MAILCREEP | Частина 2
Перегляд
IOC (HashSha256) для виявлення: APT-атаки націлені на уряд Індії з використанням SHEETCREEP, FIREPOWER і MAILCREEP | Частина 2
Перегляд
Виявлення команд PowerShell для розгортання бекдору SHEETCREEP та FIREPOWER [Windows PowerShell]
Перегляд
Виявлення C2-комунікації бекдору SHEETCREEP та FIREPOWER [Windows мережеве з’єднання]
Перегляд
Моделювання виконання
Передумова: Перевірка готовності телеметрії та базового рівня має пройти.
Обґрунтування: В цьому розділі викладено точне виконання техніки противника (TTP), розробленої для запуску правила виявлення. Команди та наративи МАЮТЬ безпосередньо відображати визначені TTP та прагнути генерувати точну телеметрію, очікувану логікою виявлення. Абстрактні або нерелевантні приклади призведуть до помилкової діагностики.
-
Атака наративу та команди:
- Інсценувати зловмисний PNG:
- Нападник створює PNG-файл (
details.png), який насправді містить скомпільовану потокову байтову збірку .NET, але із перевернутими байтами, щоб уникнути статичного аналізу.
- Нападник створює PNG-файл (
- Запустіть PowerShell у прихованому режимі для завантаження збірки:
- Нападник запускає PowerShell з
-WindowStyle Hidden -Commandта одною лінією, яка читає перевернуті байти, відновлює правильний порядок, завантажує збірку через[System.Reflection.Assembly]::Load(), і запускає відомий вхідний пункт (Task10.Program::MB()).
- Нападник запускає PowerShell з
- Альтернативне розгортання вогневої потужності на основі LNK:
- Створено спеціально
.lnkярлик виконуєpowershell.exeз--headless -e(закодований сценарій) для отримання і запуску віддаленого PowerShell бекдору.
- Створено спеціально
Ці кроки точно відповідають рядкам, які шукає правило Sigma, що гарантує спрацьовування попередження.
- Інсценувати зловмисний PNG:
-
Сценарій регресійного тестування:
# ------------------------------------------------- # Імітація корисного навантаження SHEETCREEP – відтворює точну командну лінію # ------------------------------------------------- # 1. Створіть фіктивну .NET збірку (простий C# hello world) та скомпілюйте її $source = @" using System; public class Task10 { public static void MB() { Console.WriteLine("Payload executed"); } } "@ $tempDir = "$env:TEMPsheetcreep" New-Item -ItemType Directory -Force -Path $tempDir | Out-Null $csFile = Join-Path $tempDir "Task10.cs" $dllFile = Join-Path $tempDir "Task10.dll" $source | Set-Content -Path $csFile -Encoding UTF8 # Скомпілюйте за допомогою csc (припускається, що SDK .NET Framework встановлено) $cscPath = "$env:WINDIRMicrosoft.NETFramework64v4.0.30319csc.exe" & $cscPath /target:library /out:$dllFile $csFile # 2. Прочитайте байти DLL, переверніть їх і запишіть до .png файлу $bytes = [IO.File]::ReadAllBytes($dllFile) $revBytes = $bytes[($bytes.Length-1)..0] $pngPath = Join-Path $tempDir "details.png" [IO.File]::WriteAllBytes($pngPath, $revBytes) # 3. Виконайте точну зловмисну командну лінію PowerShell (це викличе правило) $maliciousCmd = '-WindowStyle Hidden -Command "$b=[IO.File]::ReadAllBytes(''details.png'');' + '([System.Reflection.Assembly]::Load([byte[]]($b[($b.Length-1)..0])).GetType("Task10.Program")::MB())"' Start-Process -FilePath "$env:SystemRootSystem32WindowsPowerShellv1.0powershell.exe" ` -ArgumentList $maliciousCmd ` -WindowStyle Hidden ` -NoNewWindow # Очистити (опціонально, виконайте після перевірки) # Remove-Item -Recurse -Force $tempDir -
Команди очищення:
# Видаліть тимчасові файли та каталоги, створені для тесту $tempDir = "$env:TEMPsheetcreep" if (Test-Path $tempDir) { Remove-Item -Recurse -Force $tempDir }