Дослідження ESET: пояснення EDR-кілерів – Погляд за межі драйверів
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
Стаття досліджує екосистему EDR-вбивць, які оператори програм-вимагачів використовують для нейтралізації захисту кінцевих точок перед запуском шифрувальників. Вона пояснює, як супротивники покладаються на вразливі драйвери, легітимні анти-rootkit-утиліти і навіть бездрайверні методи, щоб ухилятися від захисту та відключати програмне забезпечення безпеки. Висновки базуються на телеметрії, що охоплює майже 90 EDR-вбивць, побачених у реальних атаках. Дослідження також підкреслює роль філій програм-вимагачів, повторне повторне використання тих самих драйверів та зростаючий ринок комерціалізованих послуг EDR-вбивць.
Розслідування
Дослідники ESET проаналізували телеметрію, сховища коду та задокументовані випадки вторгнення, щоб простежити, як EDR-вбивці створюються, розповсюджуються та розгортаються. Вони класифікували кілька сімейств, включаючи драйвер-залежні, сценарний-засновані, анти-rootkit та бездрайверні варіанти, та зв’язали їх з групами програм-вимагачів, такими як Warlock, LockBit, Akira та Medusa. Дослідження додатково підкреслило озброєння громадського коду доказу концепції і зростаючий вплив розвитку за допомогою AI у цій екосистемі інструментів.
Пом’якшення
Захисники повинні блокувати відомі вразливі драйвери, стежити за ненормальним використанням привілейованих адміністративних команд, та виявляти відомі двійкові файли EDR-вбивців і патерни поведінки. Багаторівневі детектори, що визначають встановлення драйверів, примусове завершення роботи продуктів безпеки та незвичайну поведінку блокування мережі, можуть звузити часовий проміжок, що нападники мають до початку виконання програм-вимагачів.
Відповідь
Якщо виявлено EDR-вбивцю, негайно ізолюйте хост, припиніть шкідливий процес, видаліть будь-які несанкціоновані драйвери та переконайтеся, що контроль безпеки повністю відновлено. Продовжіть форензичним аналізом, щоб визначити, який навантажувач програм-вимагачів або активність філії пов’язані з вторгненням, і активуйте широку працю по у відповідь на інцидент.
Поточний потік атаки
Ми ще оновлюємо цю частину. Підпишіться, щоб отримати повідомлення
Повідомити менеСпрацьовування
Можлива атака BYOVD – Використання вразливих драйверів (через file_event)
Переглянути
Підозріле виконання Taskkill (через cmdline)
Переглянути
Підозріле встановлення драйвера TrueSight (через систему)
Переглянути
Підозріле втручання програм-вимагачем у зупинку сервісу (через cmdline)
Переглянути
Можлива атака BYOVD – Використання вразливих драйверів (через audit)
Переглянути
IOC (HashSha1) для виявлення: Дослідження ESET EDR-вбивць пояснено: За межами драйверів Частина 1
Переглянути
IOC (HashSha1) для виявлення: Дослідження ESET EDR-вбивць пояснено: За межами драйверів Частина 2
Переглянути
Виявлення підписаних сценарієм спроб зміни безпекових процесів [створення процесу Windows]
Переглянути
EDR-вбивці, що використовують DeviceIoControl для завершення процесів [Windows Sysmon]
Переглянути
Виконання симуляції
Передумова: перевірка телеметрії та бази передпольотного польоту повинна бути пройдена.
Історія атаки та команди
-
Етап 1 – Розміщення шкідливого драйвера
Зловмисник записує двійковий файл драйвера (EdrKiller.sys) вC:WindowsTempта реєструє його як службу під назвоюEdrKillerSvc. -
Етап 2 – Запуск служби драйвера
Запуск служби завантажує драйвер в простір ядра, де він реєструє IOCTL-обробник, здатний завершувати процеси. -
Етап 3 – Випуск шкідливого
DeviceIoControlвиклик
Використовуючи PowerShell, зловмисник відкриває маніпулятор до.EdrKillerта надсилає код IOCTL0x9C040001(гіпотетичний код “TerminateProcess”). Драйвер ітерує список процесів, вбиваючи будь-який процес, чиє ім’я виконуваного файлу відповідає відомому компоненту EDR. -
Етап 4 – Перевірка завершення
Зловмисник перевіряє, чи цільові процеси EDR більше не працюють.
Сценарій регресійного тестування
# --------------------------------------------------------------
# Симуляція EDR-вбивці – PowerShell (вимагає адміністратора)
# --------------------------------------------------------------
# 1. Шляхи та змінні
$driverPath = "$env:ProgramDataEdrKiller.sys"
$serviceName = "EdrKillerSvc"
$deviceName = ".EdrKiller"
$ioctlCode = 0x9C040001 # Приклад керуючого коду для "TerminateProcesses"
# 2. Розгортання шкідливого драйвера (імітація – замініть на реальний .sys для реального тесту)
# Для демонстраційних цілей ми копіюємо легітимний драйвер (наприклад, null.sys), щоб виступити в ролі заповнювача.
Copy-Item "$env:SystemRootSystem32driversnull.sys" -Destination $driverPath -Force
# 3. Створити та запустити службу, що завантажує драйвер
sc.exe create $serviceName binPath= "$driverPath" type= kernel start= demand
sc.exe start $serviceName
Start-Sleep -Seconds 2 # дайте драйверу час для ініціалізації
# 4. Визначте DeviceIoControl P/Invoke
$signature = @"
using System;
using System.Runtime.InteropServices;
public class NativeMethods {
[DllImport("kernel32.dll", SetLastError=true)]
public static extern IntPtr CreateFile(
string lpFileName,
uint dwDesiredAccess,
uint dwShareMode,
IntPtr lpSecurityAttributes,
uint dwCreationDisposition,
uint dwFlagsAndAttributes,
IntPtr hTemplateFile);
[DllImport("kernel32.dll", SetLastError=true)]
public static extern bool DeviceIoControl(
IntPtr hDevice,
uint dwIoControlCode,
IntPtr lpInBuffer,
uint nInBufferSize,
IntPtr lpOutBuffer,
uint nOutBufferSize,
out uint lpBytesReturned,
IntPtr lpOverlapped);
}
"@
Add-Type $signature
# 5. Відкрити маніпулятор до драйвера
$GENERIC_READ = 0x80000000
$GENERIC_WRITE = 0x40000000
$OPEN_EXISTING = 3
$hDevice = [NativeMethods]::CreateFile(
$deviceName,
$GENERIC_READ -bor $GENERIC_WRITE,
0,
[IntPtr]::Zero,
$OPEN_EXISTING,
0,
[IntPtr]::Zero)
if ($hDevice -eq [IntPtr]::MinusOne) {
Write-Error "Не вдалося відкрити маніпулятор до $deviceName"
exit 1
}
# 6. Випуск шкідливого IOCTL
$bytesReturned = 0
$success = [NativeMethods]::DeviceIoControl(
$hDevice,
$ioctlCode,
[IntPtr]::Zero,
0,
[IntPtr]::Zero,
0,
[ref]$bytesReturned,
[IntPtr]::Zero)
if ($success) {
Write-Host "Шкідливий DeviceIoControl успішно відправлено."
} else {
$err = [Runtime.InteropServices.Marshal]::GetLastWin32Error()
Write-Error "DeviceIoControl не вдалося з помилкою $err"
}
# 7. Закрити маніпулятор
[System.Runtime.InteropServices.Marshal]::Release($hDevice) | Out-Null
# 8. Перевірте, чи типові процеси EDR зникли (приклади назв)
$edrProcs = @("MsMpEng.exe","windefend.exe","MsSense.exe")
foreach ($proc in $edrProcs) {
if (Get-Process -Name $proc -ErrorAction SilentlyContinue) {
Write-Warning "$proc досі працює."
} else {
Write-Host "$proc успішно завершено."
}
}
Команди очищення
# Зупиніть і видаліть службу шкідливого драйвера
sc.exe stop $serviceName
sc.exe delete $serviceName
# Видалити фальшивий файл драйвера
Remove-Item -Path $driverPath -Force
Write-Host "Очищення завершено."