WSL у екосистемі шкідливого ПО
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
У статті пояснюється, як шкідливий JavaScript може виявити Підсистему Windows для Linux (WSL) на хості, а потім перерахувати інформацію про користувача Windows та каталоги. Зразок—ottercookie-socketScript-module-3.js—відноситься до сімейства вірусів Cryxos. Використовуючи змінні середовища та перевірки файлової системи, код шукає маркери WSL, а потім відображає дані Windows, які експонуються через точки монтування WSL (наприклад, шляхи користувачів під /mnt/c/Users). У статті це подається як використання WSL як засобу залишатися під радаром.
Розслідування
Аналіз вказує на дві функції: is_wsl() та get_wu(), які шукають специфічні для WSL артефакти та отримують ім’я користувача Windows, який увійшов у систему. Якщо WSL присутня, шкідливе ПЗ розширює свою сферу збору даних, додаючи /mnt до цілей сканування, щоб воно могло проходити через змонтовані шляхи хосту і перераховувати користувацькі каталоги. Хеш SHA256 зразка не був опублікований, але було надано ім’я файлу для полювання і кореляції.
Пом’якшення
Слідкуйте за незвичним використанням WSL на продукційних кінцевих точках, включаючи підозрілі дії через wsl$ поділи та неочікуваний доступ до змонтованих об’ємів хосту. Вимкніть або обмежте WSL, де це не потрібно, і виявляйте скрипти, які запитують змінні середовища WSL або читають /proc/version. Також спостерігайте за випадками запуску JavaScript, які викликають cmd.exe для відображення %USERNAME% під час профілювання хосту.
Відповідь
Якщо виявлено, ізолюйте кінцеву точку, збережіть судово-медичні докази змонтованих WSL та файлів, до яких здійснювався доступ, і запустіть повне сканування на наявність шкідливого ПЗ. Видаліть ottercookie-socketScript-module-3.js та будь-які супутні навантаження, потім переконайтеся, що конфігурації WSL затверджені або вимкнені.
"graph TB %% Class definitions classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef data fill:#ccffcc %% Action: Check for WSL environment action_check_wsl["<b>Action</b> – Check for WSL environment<br/><b>Technique</b> – T1497.002: Virtualization/Sandbox Evasion: User Activity Based Checks<br/><b>Description</b>: Adversary inspects the environment for virtualization or sandbox artifacts based on user activity to avoid analysis."] class action_check_wsl action %% Technique node for T1497.002 (optional, shown within action text) %% Action: Retrieve Windows username action_retrieve_username["<b>Action</b> – Retrieve Windows username via cmd.exe and /mnt/c/Users<br/><b>Technique</b> – T1056.004: Input Capture: Credential API Hooking<br/><b>Description</b>: Adversary captures credential input by hooking relevant Windows APIs."] class action_retrieve_username action %% Action: Locate browser data paths action_locate_browser["<b>Action</b> – Locate browser data paths<br/><b>Technique</b> – T1555.003: Credentials from Password Stores: Credentials from Web Browsers<br/><b>Description</b>: Adversary searches typical browser directories to access stored web credentials."] class action_locate_browser action %% Action: Add /mnt mount point to priority directories action_add_mount["<b>Action</b> – Add /mnt mount point to priority directories<br/><b>Technique</b> – T1564.004: Hide Artifacts: NTFS File Attributes<br/><b>Description</b>: Adversary uses NTFS attributes to hide mount points and prioritize malicious locations."] class action_add_mount action %% Action: Collect files from mounted Windows drives action_collect_files["<b>Action</b> – Collect files from mounted Windows drives<br/><b>Techniques</b> – T1025: Data from Removable Media; T1091: Replication Through Removable Media<br/><b>Description</b>: Adversary gathers data and replicates malicious files via mounted removable media."] class action_collect_files action %% Action: Harvest credentials from browser stores action_harvest_credentials["<b>Action</b> – Harvest credentials from browser stores<br/><b>Technique</b> – T1555.003: Credentials from Password Stores: Credentials from Web Browsers<br/><b>Description</b>: Extracted saved passwords, cookies and session tokens from browsers."] class action_harvest_credentials action %% Action: Potential lateral movement via collected data action_lateral_movement["<b>Action</b> – Potential lateral movement via collected data<br/><b>Description</b>: Use harvested credentials and files to move laterally within the network."] class action_lateral_movement action %% Connections action_check_wsl –>|leads_to| action_retrieve_username action_retrieve_username –>|leads_to| action_locate_browser action_check_wsl –>|enables| action_add_mount action_add_mount –>|enables| action_collect_files action_locate_browser –>|enables| action_harvest_credentials action_collect_files –>|enables| action_lateral_movement action_harvest_credentials –>|supports| action_lateral_movement "
Потік Атак
Виконання Імітації
Умова: Телеметрія та Попередня Перевірка Базової Лінії повинні були успішно пройдені.
Обґрунтування: Цей розділ детально описує точне виконання техніки супротивника (TTP), призначеної для активації правила виявлення. Команди та супровідний текст МАЮТЬ прямо відображати виявлені TTP і бути спрямовані на генерацію точної телеметрії, яку очікує логіка виявлення.
-
Опис та Команди Атаки:
Зловмисник отримав початковий доступ до машини жертви і намагається перерахувати ім’я користувача, який увійшов у систему, щоб персоналізувати навантаження. Щоб залишатися під радари, супротивник використовує командну оболонку Windows (Living‑off‑the‑Land) і виконує точну
echo %USERNAME%команду, яка розширює змінну середовища до імені поточного користувача. Ця активність генерує подіюcmd.exeстворення процесу з командною строкоюecho %USERNAME%, яка відповідає підпису правила виявлення. -
Скрипт Тесту Регресії:
# Імітація трояну Cryxos, що отримує ім'я користувача через cmd.exe $cmd = "cmd.exe" $args = "/c echo %USERNAME%" Write-Host "Виконання: $cmd $args" Start-Process -FilePath $cmd -ArgumentList $args -NoNewWindow -Wait -
Команди Очищення:
# Ніяких постійних артефактів не залишилось; переконайтеся, що всі залишкові екземпляри cmd.exe завершені Get-Process -Name cmd -ErrorAction SilentlyContinue | Stop-Process -Force