Атака на ланцюг постачання на 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 виявлено.
graph TB %% Class definitions classDef technique fill:#c2e0ff classDef tool fill:#ffd9b3 classDef malware fill:#f5b7b1 classDef process fill:#d5f5e3 %% Technique nodes tech_t1195_002[“<b>Техніка</b> – <b>T1195.002</b> Компрометація ланцюга постачання: компрометація програмного забезпечення<br/><b>Опис</b>: Зловмисники компрометують оновлення ПЗ або розповсюдження пакетів для доставки шкідливого коду.”] class tech_t1195_002 technique tech_t1127_003[“<b>Техніка</b> – <b>T1127.003</b> Виконання через довірені інструменти розробника: post-install hook JamPlus<br/><b>Опис</b>: Шкідливий код виконується через post-install скрипт, вставлений у довірену утиліту розробника.”] class tech_t1127_003 technique tech_t1059_004[“<b>Техніка</b> – <b>T1059.004</b> Інтерпретатор команд і скриптів: Unix Shell<br/><b>Опис</b>: Використання команд Unix (curl, chmod, nohup) для завантаження та запуску payload’ів.”] class tech_t1059_004 technique tech_t1059_001[“<b>Техніка</b> – <b>T1059.001</b> Інтерпретатор команд і скриптів: PowerShell<br/><b>Опис</b>: Виконання команд PowerShell для запуску payload’у під Windows.”] class tech_t1059_001 technique tech_t1059_005[“<b>Техніка</b> – <b>T1059.005</b> Інтерпретатор команд і скриптів: Visual Basic<br/><b>Опис</b>: Запуск payload’у на основі VBScript.”] class tech_t1059_005 technique tech_t1059_003[“<b>Техніка</b> – <b>T1059.003</b> Інтерпретатор команд і скриптів: Windows Command Shell<br/><b>Опис</b>: Виконання batch-команд через cmd.exe.”] class tech_t1059_003 technique tech_t1027_014[“<b>Техніка</b> – <b>T1027.014</b> Обфускація файлів або інформації: поліморфний код<br/><b>Опис</b>: Використання кастомного Base64 + XOR для приховування шкідливого коду.”] class tech_t1027_014 technique tech_t1070_004[“<b>Техніка</b> – <b>T1070.004</b> Видалення індикаторів на хості: видалення файлів<br/><b>Опис</b>: Видалення setup.js та package.json для стирання слідів.”] class tech_t1070_004 technique tech_t1195_001[“<b>Техніка</b> – <b>T1195.001</b> Компрометація ланцюга постачання: компрометація залежностей і інструментів розробки<br/><b>Опис</b>: Інʼєкція plain-crypto-js у залежність Axios.”] class tech_t1195_001 technique tech_t1127[“<b>Техніка</b> – <b>T1127</b> Виконання через довірені інструменти (npm lifecycle hook)<br/><b>Опис</b>: Використання lifecycle hooks npm для виконання шкідливого коду під час встановлення пакету.”] class tech_t1127 technique tech_t1082[“<b>Техніка</b> – <b>T1082</b> Виявлення інформації про систему<br/><b>Опис</b>: Збір версії ОС, hostname, поточного користувача та інших даних.”] class tech_t1082 technique tech_t1219[“<b>Техніка</b> – <b>T1219</b> Засоби віддаленого доступу<br/><b>Опис</b>: Використання macOS Mach-O RAT для віддаленого керування.”] class tech_t1219 technique tech_t1102_002[“<b>Техніка</b> – <b>T1102.002</b> Веб-сервіс: двостороння комунікація<br/><b>Опис</b>: HTTP POST-запити до sfrclak.com для C2-комунікації.”] class tech_t1102_002 technique tech_t1570[“<b>Техніка</b> – <b>T1570</b> Латеральна передача інструментів<br/><b>Опис</b>: Завантаження платформозалежних бінарників або скриптів на скомпрометований хост.”] class tech_t1570 technique tech_t1036_005[“<b>Техніка</b> – <b>T1036.005</b> Маскування: імітація легітимних ресурсів<br/><b>Опис</b>: Перейменування package.md у package.json та використання правдоподібної назви wt.exe.”] class tech_t1036_005 technique tech_t1036_003[“<b>Техніка</b> – <b>T1036.003</b> Маскування: перейменування легітимних утиліт<br/><b>Опис</b>: Перейменування powershell.exe у wt.exe для маскування.”] class tech_t1036_003 technique %% Process / tool nodes (optional illustrative nodes) process_curl[“<b>Процес</b> – команда curl”] class process_curl process process_chmod[“<b>Процес</b> – команда chmod”] class process_chmod process process_nohup[“<b>Процес</b> – команда nohup”] class process_nohup process malware_rat[“<b>Шкідливе ПЗ</b> – macOS Mach-O RAT”] class malware_rat malware %% Connections showing attack flow tech_t1195_002 –>|leads_to| tech_t1127_003 tech_t1127_003 –>|uses| tech_t1059_004 tech_t1059_004 –>|executes| tech_t1059_001 tech_t1059_004 –>|executes| tech_t1059_005 tech_t1059_004 –>|executes| tech_t1059_003 tech_t1059_004 –>|employs| tech_t1027_014 tech_t1059_004 –>|leverages| tech_t1195_001 tech_t1059_004 –>|leverages| tech_t1127 tech_t1059_004 –>|collects| tech_t1082 tech_t1027_014 –>|enables| tech_t1070_004 tech_t1082 –>|enables| tech_t1219 tech_t1219 –>|communicates via| tech_t1102_002 tech_t1102_002 –>|facilitates| tech_t1570 tech_t1570 –>|results in| tech_t1036_005 tech_t1570 –>|results in| tech_t1036_003 %% Optional illustrative process links tech_t1059_004 –>|downloads| process_curl tech_t1059_004 –>|sets permissions| process_chmod tech_t1059_004 –>|runs background| process_nohup malware_rat –>|is the| tech_t1219
Потік атаки
Виявлення
Підозрілі місцезнаходження та назви MacOS – Plist (через file_event)
Перегляд
Підозрілі дочірні процеси NodeJS [Windows] (через cmdline)
Перегляд
Віддалене завантаження / завантаження файлів через стандартні інструменти (через cmdline)
Перегляд
Макос Підозрілі зміни дозволів на файли в папці Tmp (через cmdline)
Перегляд
Підозріле використання CURL (через cmdline)
Перегляд
Можливе виконання за допомогою chmod та nohup в одній команді (через cmdline)
Перегляд
Завантаження до підозрілих папок (через cmdline)
Перегляд
LOLBAS WScript / CScript (через process_creation)
Перегляд
Можливість виконання через приховані командні рядки PowerShell (через cmdline)
Перегляд
Використання Nohup (через cmdline)
Перегляд
IOC (SourceIP) для виявлення: Атака на ланцюг поставок в Axios тягне зловмисну залежність з npm
Перегляд
IOC (DestinationIP) для виявлення: Атака на ланцюг поставок в Axios тягне зловмисну залежність з npm
Перегляд
IOC (Emails) для виявлення: Атака на ланцюг поставок в Axios тягне зловмисну залежність з npm
Перегляд
Евразійська тактика PowerShell і VBScript в атаці на ланцюг поставок [Створення процесу Windows]
Перегляд
Виявлення виконання зловмисного гачка postinstall пакету npm [Створення процесу на Linux]
Перегляд
Виявлення зловмисного сценарію Python і тимчасового файлу в атаці на ланцюг поставок на Linux [Подія файлу Linux]
Перегляд
Перейменований термінал Windows та самовидалювана VBScript виявлені [Подія файлу Windows]
Перегляд
Виконання скрипту PowerShell з прихованими і обхідними прапорами [Windows Powershell]
Перегляд
Виконання моделювання
Передумова: Телеметрія та передполітна перевірка базових ліній повинні бути успішно завершені.
Обґрунтування: Цей розділ розкриває точне виконання техніки супротивника (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