Атака на ланцюг постачання на Axios завантажує шкідливу залежність з NPM
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
Зловмисний пакет npm, plain-crypto-js@4.2.1, був опублікований і пізніше підтриманий як транзитивна залежність через скомпрометовані випуски широко використовуваного клієнта JavaScript HTTP Axios. Пакет використовує скрипт після встановлення для доставки багатостадійного трояну віддаленого доступу, націленого на Windows, macOS та Linux. Атака, схоже, спиралася на довготривалі маркери npm, які дозволяли загрозливим акторам надсилати зловмисні версії поза звичайним процесом випуску проекту. Виявлення пошкодженої залежності на ранньому етапі може зупинити RAT до виконання на уражених системах.
Розслідування
Дослідження Socket провели статичний аналіз setup.js дропера і декодували закодовані рядки, щоб виявити домен C2, логіку доставки навантаження та націлені шляхи файлової системи. Дослідники виявили три скомпрометовані версії Axios і два додаткові пакети npm, які містили той самий зловмисний код. Вони також вийняли мережеві індикатори, шляхи файлів і рядки користувацьких агентів, які можна використовувати для створення правил виявлення.
Пом’якшення
Організації повинні анулювати будь-які довготривалі маркери npm і змінити облікові дані для всіх потенційно уражених облікових записів. Скомпрометовані версії Axios і будь-які пакети, що залежать від plain-crypto-js@4.2.1 повинні бути негайно видалені або знижені. Команди також повинні перевірити lockfiles, CI/CD конвеєри та заходи безпеки ланцюга поставок програмного забезпечення, щоб ідентифікувати несанкціоновану публічну активність та зменшити ризик майбутнього компрометації пакетів.
Реакція
Команди безпеки повинні моніторити журнали установки npm на предмет згадок про plain-crypto-js@4.2.1 і уражені версії Axios. Повинні бути створені правила виявлення для виконання гачка postinstall, доступу до мережі на sfrclak.com, і зловмисного рядка користувацького агента. Якщо компрометація підтверджена, уражені системи повинні бути поміщені в карантин, зібрана летуча пам’ять для аналізу, а хост перевстановлений, якщо RAT виявлено.
Потік атаки
Виявлення
Підозрілі місцезнаходження та назви MacOS – Plist (через file_event)
Proof of Value
Підозрілі дочірні процеси NodeJS [Windows] (через cmdline)
Proof of Value
Віддалене завантаження / завантаження файлів через стандартні інструменти (через cmdline)
Proof of Value
Макос Підозрілі зміни дозволів на файли в папці Tmp (через cmdline)
Proof of Value
Підозріле використання CURL (через cmdline)
Proof of Value
Можливе виконання за допомогою chmod та nohup в одній команді (через cmdline)
Proof of Value
Завантаження до підозрілих папок (через cmdline)
Proof of Value
LOLBAS WScript / CScript (через process_creation)
Proof of Value
Можливість виконання через приховані командні рядки PowerShell (через cmdline)
Proof of Value
Використання Nohup (через cmdline)
Proof of Value
IOC (SourceIP) для виявлення: Атака на ланцюг поставок в Axios тягне зловмисну залежність з npm
Proof of Value
IOC (DestinationIP) для виявлення: Атака на ланцюг поставок в Axios тягне зловмисну залежність з npm
Proof of Value
IOC (Emails) для виявлення: Атака на ланцюг поставок в Axios тягне зловмисну залежність з npm
Proof of Value
Евразійська тактика PowerShell і VBScript в атаці на ланцюг поставок [Створення процесу Windows]
Proof of Value
Виявлення виконання зловмисного гачка postinstall пакету npm [Створення процесу на Linux]
Proof of Value
Виявлення зловмисного сценарію Python і тимчасового файлу в атаці на ланцюг поставок на Linux [Подія файлу Linux]
Proof of Value
Перейменований термінал Windows та самовидалювана VBScript виявлені [Подія файлу Windows]
Proof of Value
Виконання скрипту PowerShell з прихованими і обхідними прапорами [Windows Powershell]
Proof of Value
Виконання моделювання
Передумова: Телеметрія та передполітна перевірка базових ліній повинні бути успішно завершені.
Обґрунтування: Цей розділ розкриває точне виконання техніки супротивника (TTP), призначеної для спрацьовування правила виявлення. Команди і наратив повинні прямо відображати ідентифіковані TTPs і прагнути згенерувати саме ту телеметрію, яку очікує логіка виявлення.
-
Опис атаки і команди:
Нападник, який отримав обмежені привілеї користувача на скомпрометованій робочій станції, бажає завантажити зловмисний платіжний файл VBScript через легітимний пакет npm (сценарій ланцюга поставок). Щоб уникнути загального виявлення PowerShell, нападник копіює
powershell.exeдо нового файлу з ім’ямpowershell_renamed.exe, але зберігає рядок підпису “powershell” у імені файлу (щоб ще відповідало “Image|contains” перевірці). Потім нападник виконує “where powershell” для пошуку шляху перейменованого двійкового файлу і, нарешті, запускає платіжний файл VBScript за допомогоюcscript //nologoдля усунення банера логотипу.cscript //nologoТестовий сценарій регресії: -
# ————————————————- # Крок 1: Створити перейменовану копію powershell.exe # ————————————————- $src = “$env:SystemRootSystem32WindowsPowerShellv1.0powershell.exe” $dst = “$env:Temppowershell_renamed.exe” Copy-Item -Path $src -Destination $dst -Force # ————————————————- # Крок 2: Використовуйте ‘where’, щоб посилатися на перейменований двійковий файл # ————————————————- $whereOutput = & where.exe powershell_renamed Write-Host “Located renamed PowerShell at: $whereOutput” # ————————————————- # Крок 3: Створити простий зловмисний платіжний файл VBScript # ————————————————- $vbsPath = “$env:Tempmalicious.vbs” @” Set objShell = CreateObject(“WScript.Shell”) objShell.Run “cmd.exe /c echo pwned > $env:Temppwned.txt”, 0, False “@ | Set-Content -Path $vbsPath -Encoding ASCII # ————————————————- # Крок 4: Виконати VBScript тихо, використовуючи cscript //nologo # ————————————————- & $dst -Command “cscript //nologo `”$vbsPath`”” # ————————————————- # Кінець моделювання # ————————————————-
Команди очищення: -
Cleanup Commands:
# Видалити перейменований двійковий файл PowerShell Remove-Item -Path "$env:Temppowershell_renamed.exe" -Force -ErrorAction SilentlyContinue # Видалити зловмисний платіжний файл VBScript Remove-Item -Path "$env:Tempmalicious.vbs" -Force -ErrorAction SilentlyContinue # Видалити докази виконання Remove-Item -Path "$env:Temppwned.txt" -Force -ErrorAction SilentlyContinue