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. Відновіть будь-які змінені файли з довірених джерел або резервних копій, потім видаліть зловмисний сервіс і будь-які пов’язані артефакти. Виконайте судово-медичний огляд для виявлення додаткової стійкості, підвищення привілеїв або подальших дій, пов’язаних з обхідним захистом під час запуску.
“graph TB %% Class Definitions classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef operator fill:#ff9900 %% Nodes step_create_service[“<b>Дія</b> – <b>T1542 Перазавантаження ОС</b><br/>Створення зловмисного Windows сервісу (EDRStartupHinder), який налаштований на запуск перед цільовим EDR сервісом.”] class step_create_service action step_modify_registry[“<b>Дія</b> – <b>T1484 Зміна політики домену або орендаря</b><br/>Зміна порядку групи сервісів і конфігурації Bindlink в реєстрі для надання пріоритету зловмисному сервісу та можливості перенаправлення DLL.”] class step_modify_registry action step_hijack_dll[“<b>Дія</b> – <b>T1574.001 Отвлечення порядку пошуку DLL</b> & <b>T1055.001 Ін’єкція динамічних бібліотек</b><br/>Перенаправлення основної DLL (наприклад, msvcp_win.dll) через Bindlink, щоб процес EDR завантажував зловмисну копію.”] class step_hijack_dll action step_corrupt_dll[“<b>Дія</b> – <b>T1574.001 Перенаправлення DLL – Пошкодження заголовка PE</b><br/>Зміна заголовка PE скопійованого DLL для анулювання його підпису, щоб захищений процес EDR відхилив бібліотеку.”] class step_corrupt_dll action step_dos[“<b>Дія</b> – <b>T1499.004 Відмова в обслуговуванні на кінцевій точці</b><br/>Сервіс EDR не вдалося завантажити необхідний DLL і завершує роботу, досягаючи відмови в обслуговуванні на компоненті безпеки.”] class step_dos action %% Edges step_create_service u002du002d>|призводить до| step_modify_registry step_modify_registry u002du002d>|дозволяє| step_hijack_dll step_hijack_dll u002du002d>|викликає| step_corrupt_dll step_corrupt_dll u002du002d>|призводить до| step_dos “
Потік атаки
Виявлення
Можливе перерахування / маніпуляція 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.”
}
Кінець звіту