EDRStartupHinder: Блокувальник запуску процесу EDR
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
Стаття описує дослідницький інструмент під назвою EDRStartupHinder, який зловживає механізмом Windows Bindlink для перенаправлення критичного завантаження DLL файлу System32, викликаючи збій захищеного процесу EDR під час запуску. Встановлюючи сервіс з високим пріоритетом і надаючи незарегистровану заміну DLL, метод запобігає ініціалізації компонента EDR, ефективно позбавляючи хоста захисту кінцевої точки при завантаженні.
Розслідування
Автор визначив, що Microsoft Defender завантажує msvcp_win.dll під час запуску, а сервіс, пов’язаний з TDI-групою, запускається раніше за Defender. Інструмент копіює легітивний DLL, змінює заголовок PE для створення фальсифікованого варіанта, реєструє сервіс під назвою DusmSVC-01 і відстежує процес Defender (MsMpEng.exe). Потім він використовує Bindlink, щоб перенаправити вирішення DLL так, що Defender намагається завантажити незареєстрований DLL. Оскільки процес працює під захистом PPL, завантаження незареєстрованого модуля викликає завершення процесу Defender.
Мітигація
Моніторте підозрілі або несподівані події створення сервісу та дані телеметрії, що вказують на використання bindlink.dll. Забезпечте перевірку цілісності DLL файлів System32 і попередження про несподівані дублі, мутації або перенаправлення шляхів завантаження. Знизьте можливість атак шляхом обмеження прав на запис, які можуть сприяти перенаправленню DLL, посилення контролю над KnownDLLs і забезпечення політик підпису коду, там де це операційно можливо.
Реакція
Якщо виявлено новий сервіс під назвою DusmSVC-01 або аномальна поведінка Bindlink, потрібно ізолювати кінцеву точку та перевірити цілісність ключових DLL файлів System32. Відновіть будь-які змінені файли з довірених джерел або резервних копій, потім видаліть зловмисний сервіс і будь-які пов’язані артефакти. Виконайте судово-медичний огляд для виявлення додаткової стійкості, підвищення привілеїв або подальших дій, пов’язаних з обхідним захистом під час запуску.
Потік атаки
Виявлення
Можливе перерахування / маніпуляція AV процесом (через командний рядок)
Перегляд
Підозрілий командний рядок в шляхах сервісу (через систему)
Перегляд
Підозрілий командний рядок в шляхах сервісу (через аудит)
Перегляд
Інвалідація підпису DLL EDRStartupHinder [Подія файлу Windows]
Перегляд
Виконання симуляції
Передумова: Перевірка телеметрії та базових налаштувань повинна пройти успішно.
Наратив атаки та команди
Зловмисник прагне вивести з ладу платформу виявлення кінцевих точок, доставивши підроблену копію msvcp_win.dll. Кроки такі:
- Знайти довірений DLL in
C:WindowsSystem32. - Скопіювати його в приховану директорію, контрольовану зловмисником, ім’я якої містить “FakeLib” (наприклад,
C:ProgramDataFakeLib). - Пошкодити підпис додавши довільні байти до кінця файлу, забезпечивши зміну гешу бінарного файлу і анулювання підпису Authenticode.
- Запустити EDR’s шлях завантаження (не симулюється тут) – присутність пошкодженого DLL викличе збій EDR під час ініціалізації.
Сценарій регресійних тестів
# ---------------------------------------------------------------
# Симуляція EDRStartupHinder – копіює та пошкоджує msvcp_win.dll
# ---------------------------------------------------------------
# 1. Визначте джерело та зловмисне призначення
$src = "$env:SystemRootSystem32msvcp_win.dll"
$dstDir = "C:ProgramDataFakeLib"
$dst = Join-Path $dstDir "msvcp_win.dll"
# 2. Створити папку призначення (приховану)
if (-not (Test-Path $dstDir)) {
New-Item -Path $dstDir -ItemType Directory | Out-Null
# Приховуйте папку для імітації маскування
(Get-Item $dstDir).Attributes += 'Hidden'
}
# 3. Скопіювати легітимний DLL
Copy-Item -Path $src -Destination $dst -Force
# 4. Пошкодьте DLL – додайте 4 випадкових байт
$rand = -join ((65..90) + (97..122) | Get-Random -Count 4 | % {[char]$_})
[IO.File]::OpenWrite($dst).Seek(0, [IO.SeekOrigin]::End) | Out-Null
[IO.File]::WriteAllBytes($dst, [byte[]]($rand.ToCharArray() | ForEach-Object {[byte][char]$_}))
Write-Host "Симуляція EDRStartupHinder завершена. DLL скопійовано до $dst і пошкоджено."
Команди очищення
# Видаліть зловмисну копію і, можливо, приховану папку
$dstDir = "C:ProgramDataFakeLib"
if (Test-Path $dstDir) {
Remove-Item -Path $dstDir -Recurse -Force
Write-Host "Прибирано директорію FakeLib.”
}
Кінець звіту