FrostyNeighbor: Свіжі Шахрайства та Цифрові Загрози
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
ESET повідомляє, що група APT FrostyNeighbor, також відома як Ghostwriter, відновила атаки на українські урядові організації, використовуючи спір-фішинг PDF-файли, які доставляють завантажувач на основі JavaScript, відомий як PicassoLoader, який зрештою розгортає маяк Cobalt Strike. Кампанія покладається на гео-базовану валідацію, збереження за допомогою запланованих завдань та різні методи скидання файлів для зменшення видимості та уникнення виявлення. Її інфраструктура розташована за Cloudflare і використовує декілька needbinding.icu доменів.
Розслідування
Дослідники реконструювали повний ланцюг атаки, починаючи з зловмисного PDF-приманки, продовжуючи через JavaScript-дропер і PicassoLoader-завантажувач, та закінчуючи доставкою корисного навантаження Cobalt Strike. Вони вилучили показники, включаючи назви файлів, зміни реєстру та командно-контрольні URLs, після чого пов’язали їх з відомою тактикою FrostyNeighbor. У звіті також підкреслюється експлуатація CVE-2023-38831 у WinRAR та CVE-2024-42009 у Roundcube.
Зменшення ризиків
Організації повинні блокувати підозрілі типи вкладень, запроваджувати суворий контроль за виконанням макросів та скриптів, моніторити створення запланованих завдань невідомими двійковими файлами та обмежувати вихідний HTTPS-трафік до відомих зловмисних доменів. Зазначені вразливості повинні бути виправлені негайно, а обмеження найменших привілеїв слід застосовувати до використання rundll32.exe .
Відповідь
Якщо виявлено які-небудь пов’язані показники, негайно ізолюйте уражену систему, зберіть судово-медичні артефакти та проведіть пошук як для маяка Cobalt Strike, так і для компонентів PicassoLoader. Скиньте будь-які відкриті облікові дані та перегляньте заплановані завдання та записи ключів запуску на свідчення постійності.
"граф TB %% Визначення класів classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef file fill:#c2f0c2 classDef tool fill:#cccccc classDef malware fill:#ff9999 %% Вузли – Дії attack_initial_access["<b>Дія</b> – <b>T1566.001 Фішинг: Вкладення для спір-фішингу</b><br/>Зловмисний електронний лист PDF із посиланням на архів RAR."] class attack_initial_access action action_user_execution["<b>Дія</b> – <b>T1204.002 Виконання користувачем</b><br/>Жертва відкриває PDF, який запускає JavaScript-дропер."] class action_user_execution action %% Вузли – Файли file_malicious_pdf["<b>Файл</b> – <b>Назва</b>: malicious.pdf<br/>Містить JavaScript-дропер."] class file_malicious_pdf file file_rar["<b>Файл</b> – <b>Назва</b>: payload.rar<br/>Доставлено через посилання в PDF."] class file_rar file file_scheduled_xml["<b>Файл</b> – <b>Назва</b>: scheduled_task.xml<br/>XML, використаний для реєстрації запланованого завдання."] class file_scheduled_xml file file_reg["<b>Файл</b> – <b>Назва</b>: persistence.reg<br/>Файл реєстру, що створює ключ запуску.""" class file_reg file file_lnk["<b>Файл</b> – <b>Назва</b>: launcher.lnk<br/>Ярлик, розміщений у папці запуску.""" class file_lnk file %% Вузли – Шкідливе програмне забезпечення / Інструменти malware_javascript_dropper["<b>Шкідливе програмне забезпечення</b> – <b>Назва</b>: JavaScript Dropper<br/>Виконує скрипти, кодування base64, та вбудовує корисні навантаження другого етапу."] class malware_javascript_dropper malware tool_picasso_loader["<b>Інструмент</b> – <b>Назва</b>: PicassoLoader<br/>Збирає системну інформацію, список процесів та дані про жертву."] class tool_picasso_loader tool malware_cobalt_strike["<b>Шкідливе програмне забезпечення</b> – <b>Назва</b>: Cobalt Strike Beacon<br/>Надає функції віддаленого управління.""" class malware_cobalt_strike malware %% Вузли – Техніки technique_obfuscation["<b>Техніка</b> – <b>T1027 Завуальовані файли або інформація</b><br/>Корисні навантаження закодовані base64 для уникнення виявлення."] class technique_obfuscation technique technique_embedded_payload["<b>Техніка</b> – <b>T1027.009 Вбудовані корисні навантаження</b><br/>Завантажувач і маяк приховані всередині JavaScript."] class technique_embedded_payload technique technique_gather_identity["<b>Техніка</b> – <b>T1589 Збір інформації про ідентичність жертви</b><br/>Збирає ім’я користувача, ім’я комп'ютера, версію ОС та час завантаження."] class technique_gather_identity technique technique_system_info["<b>Техніка</b> – <b>T1082 Виявлення системної інформації</b><br/>Збирає детальні специфікації системи."] class technique_system_info technique technique_process_discovery["<b>Техніка</b> – <b>T1057 Виявлення процесів</b><br/>Перераховує запущені процеси на хості."] class technique_process_discovery technique technique_c2_https["<b>Техніка</b> – <b>T1071.001 Протокол прикладного рівня: Веб-протоколи</b><br/>Зв’язується з C2 через HTTPS POST.""" class technique_c2_https technique technique_scheduled_task["<b>Техніка</b> – <b>T1053.005 Заплановане завдання/Робота</b><br/>Створює XML для запланованого завдання для забезпечення постійності.""" class technique_scheduled_task technique technique_run_key["<b>Техніка</b> – <b>T1060 Ключі запуску реєстру / Папка запуску</b><br/>Додає ключ запуску, що вказує на зловмисний LNK.""" class technique_run_key technique technique_exfiltration["<b>Техніка</b> – <b>T1041 Витік через C2 канал</b><br/>Передає зібрані дані через той самий HTTPS канал.""" class technique_exfiltration technique %% Зв’язки – Потік атаки attack_initial_access –>|доставляє| file_malicious_pdf file_malicious_pdf –>|відкритий| action_user_execution action_user_execution –>|виконує| malware_javascript_dropper malware_javascript_dropper –>|використовує| technique_obfuscation malware_javascript_dropper –>|містить| technique_embedded_payload technique_embedded_payload –>|скидає| tool_picasso_loader tool_picasso_loader –>|збирає| technique_system_info tool_picasso_loader –>|збирає| technique_process_discovery tool_picasso_loader –>|збирає| technique_gather_identity tool_picasso_loader –>|контактує| technique_c2_https technique_c2_https –>|доставляє| malware_cobalt_strike malware_cobalt_strike –>|встановлює| technique_scheduled_task technique_scheduled_task –>|створює| file_scheduled_xml malware_cobalt_strike –>|встановлює| technique_run_key technique_run_key –>|створює| file_reg file_reg –>|додає| file_lnk technique_c2_https –>|вижимає через| technique_exfiltration "
Атака потоку
Виявлення
Можливі точки постійності [ASEPs – програмне забезпечення/NTUSER Hive] (через подію реєстру)
Переглянути
Виконання системних процесів з нетипових шляхів (через створення процесу)
Переглянути
Підозріле виконання DLL Rundll32 по підозрілому шляху (через створення процесу)
Переглянути
LOLBAS WScript / CScript (через створення процесу)
Переглянути
Індикатори компрометації (HashSha1) для виявлення: FrostyNeighbor: Свіжі витівки та цифрові підступи
Переглянути
Виявлення зв’язку FrostyNeighbor C&C [Мережеве з’єднання Windows]
Переглянути
Розгортання Cobalt Strike FrostyNeighbor через rundll32 і JavaScript [Створення процесу Windows]
Переглянути
Імітаційне виконання
Передумова: Телеметрія і перевірка базової готовності повинні бути пройдені.
Мотив: Цей розділ детально описує точне виконання техніки супротивника (TTP), призначеної для того, щоб ініціювати правило виявлення. Команди і розповідь МАЮТЬ безпосередньо відображати виявлені TTPs і прагнути генерувати ту саму телеметрію, яка очікується логікою виявлення.
-
Нарратив атаки і команди:
Зловмисник отримав плацдарм на хості жертви і хоче розгорнути маяк Cobalt Strike, залишаючись невидимим. Вони:
- Копіювати
використання rundll32.exeдо нестандартного місця розташування (C:ProgramDataTemprundll32.exe) щоб уникнути простих алертів білого списку. - Скидання зловмисного DLL (
ViberPC.dll) в%ProgramData%. Ця DLL містить завантажене навантаження Cobalt Strike. - Виконання скопійованого
використання rundll32.exeза допомогою командного рядка, що завантажує зловмисну DLL (%ProgramData%ViberPC.dll). - Кидають два файли JavaScript (
53_7.03.2026_R.jsandUpdate.js) які містять JScript, що контактує з сервером C2 і завершує установку маяка. - Запускають файли JavaScript використовуючи
cscript.exe, спричиняючи створення процесів, чийОбраззакінчується з.jsі чийКоманднийРядокмістить точні назви файлів.
Ці кроки генерують точні події створення процесів Sysmon, поєднані з
вибором1,вибором2, тавибором3в правилі Sigma. - Копіювати
-
Скрипт регресійного тестування:
# Імітація розгортання Cobalt Strike FrostyNeighbor # ------------------------------------------------- # 1. Підготувати шляхи $tempDir = "$env:ProgramDataTemp" $rundllCopy = Join-Path $tempDir "rundll32.exe" $malDll = "$env:ProgramDataViberPC.dll" $js1 = "$env:ProgramData53_7.03.2026_R.js" $js2 = "$env:ProgramDataUpdate.js" # 2. Забезпечити існування тимчасового каталогу New-Item -Path $tempDir -ItemType Directory -Force | Out-Null # 3. Копіювати rundll32.exe до нетипового місця Copy-Item -Path "$env:SystemRootSystem32rundll32.exe" -Destination $rundllCopy -Force # 4. Створити фіктивну зловмисну DLL (в реальній атаці це був би корисний вантаж) $dummyDll = [IO.File]::ReadAllBytes("$env:SystemRootSystem32driversetchosts") # бінарний файл-заповнювач [IO.File]::WriteAllBytes($malDll, $dummyDll) # 5. Виконання скопійованого rundll32 з зловмисною DLL Start-Process -FilePath $rundllCopy -ArgumentList "`"$malDll`"" -WindowStyle Hidden # 6. Скидання корисних навантажень JavaScript $jsContent = @" // Простий JScript, що звертається до кінцевої точки C2 (симульовано) var xhr = new ActiveXObject("MSXML2.XMLHTTP"); xhr.open("GET", "http://127.0.0.1:8080/beacon", false); xhr.send(); "@ Set-Content -Path $js1 -Value $jsContent -Encoding ASCII Set-Content -Path $js2 -Value $jsContent -Encoding ASCII # 7. Виконання файлів JavaScript через cscript (це створює процеси з образом .js) Start-Process -FilePath "cscript.exe" -ArgumentList "//NoLogo `"$js1`"" -WindowStyle Hidden Start-Process -FilePath "cscript.exe" -ArgumentList "//NoLogo `"$js2`"" -WindowStyle Hidden # 8. Пауза для дозволу поглинання SIEM Start-Sleep -Seconds 15 -
Команди очищення:
# Очищення після імітації $paths = @( "$env:ProgramDataViberPC.dll", "$env:ProgramData53_7.03.2026_R.js", "$env:ProgramDataUpdate.js", "$env:ProgramDataTemprundll32.exe" ) foreach ($p in $paths) { if (Test-Path $p) { Remove-Item -Path $p -Force } } # При бажанні зупинити залишені процеси cscript, запущені тестом Get-Process -Name cscript -ErrorAction SilentlyContinue | Stop-Process -Force