I. Зачем это нужно?

Злоумышленники часто сталкиваются с проблемой обхода антивирусных систем и Endpoint Detection and Response (EDR). Они вынуждены выбирать одну из двух тактик: обойти контроль этих систем или заставить их перестать нормально функционировать. Иногда атакующие используют уязвимые драйвера (BYOVD — Bring Your Own Vulnerable Driver).

Представьте себе ситуацию, что вам (злоумышленнику) удалось встроить собственный код прямо внутрь исполняемых файлов Windows Defender? Идеально!

Эта статья покажет вам простой метод взлома папки с исполняемыми файлами Windows Defender. Благодаря этому приёму можно перехватывать управление сервисом Defender’а, вставлять свои библиотеки, повреждать критически важные файлы и даже отключать службу. Самое главное — всё это делается с использованием стандартных инструментов самой ОС Windows, без дополнительных инструментов.

II. Подробности метода

1. Откуда служба Windows Defender берет исполняемые файлы?

Файлы Defender’а хранятся в специальной директории:

ProgramData\Microsoft\Windows Defender\Platform\[Версия]

Каждый раз при установке обновления создаётся новая подпапка с номером актуальной версии, куда помещаются свежие исполняемые файлы сервиса WinDefend.

Что же происходит, когда Windows Defender переключается с предыдущей версии на новую?

  • Выполняется перечисление всех существующих версий путём вызова функции QueryDirectory в папке Platform.

  • Выбирается папка с наивысшим номером версии, означающим самую свежую доступную версию.

  • Создается новый экземпляр службы Defender с исполняемым файлом из выбранной папки, после чего старый процесс завершается.

  • Обновляется конфигурация службы WinDefend, чтобы она указывала на новую папку; начиная с этого момента, служба будет выполняться из указанной папки до появления следующей версии.

Windows Defender всегда запрещает запись файлов в свои рабочие каталоги, и папка Platform не исключение. Но что произойдет, если я создам новую папку вместо записи файлов?

Разве вас это не удивляет? Как видно на изображении выше, я способен создавать любую папку с любым названием в папке Platform.

Используя знание о том, как Windows Defender осуществляет переход на новую версию, предположим, что я создал в папке Platform папку с самым высоким номером версии. Будет ли тогда Defender использовать мою папку в качестве рабочей?

2. Эксплуатируем механизм обновления Defender, чтобы выполнить Execution Folder Hijacking.

Сначала я копирую текущую рабочую папку Defender’а в C:\\TMP\\AV. Эта папка будет использоваться для дальнейших манипуляций: DLL hijacking, удаления важных файлов Defender’а и прочего, так как она станет новым рабочим пространством для Defender’а.

Затем я создаю символическую ссылку (SYMLINK) в папке Platform, указывающую на новый путь (C:\\TMP\\AV), название символической ссылки должно соответствовать самому высокому номеру существующей версии в папке Platform. Например, если текущая версия 4.18.25070.5-0, необходимо создать символическую ссылку с именем 5.18.25070.5-0.

mklink /D "C:\\ProgramData\\Microsoft\\Windows Defender\\Platform\\5.18.25070.5-0" "C:\\TMP\\AV"

Теперь просто перезагружаем компьютер. После перезагрузки Defender снова стартует, но уже использует файл, находящийся в контролируемой нами папке.

Видите, теперь Defender использует исполняемый файл из папки "C:\\TMP\\AV". Тут мы можем свободно добавлять, удалять или изменять любые файлы. Можно попробовать внедрить свой код в процессы Defender’а через DLL side loading или просто удалить файлы, чтобы сервис перестал работать.

3. Простой эксперимент: отключаем Windows Defender навсегда.

После перехвата папки и запуска Defender’а из подконтрольного места, проверим, получится ли его отключить. Вместо уничтожения самого исполняемого файла, я удалю символическую ссылку между папкой с версией в Platform и папкой, которой я владею. Когда Defender попытается стартовать вновь, он не сможет найти нужную папку с исполняемыми файлами, что приведёт к ошибке запуска.

rmdir "C:\\ProgramData\\Microsoft\\Windows Defender\\Platform\\5.18.25070.5-0"

Страница Windows Security стала неактивной, потому что служба больше не работает: все компоненты, относящиеся к Defender, не смогли успешно запуститься.

III. ФИНАЛ

Борьба между вредоносным ПО и защитным, а точнее говоря, между антивирусами и атакующими, представляет собой бесконечную игру в кошки-мышки. Каждая сторона непрерывно ищет новые методы и пытается эксплуатировать слабые места противника.

Для хакера важно уметь либо избегать обнаружения защитными решениями, либо вовсе выводить их из строя — оба подхода являются частью ежедневной рутины атакующего, необходимой для эффективного проведения тестирования безопасности.

Из-за большой популярности Windows Defender’а необходимо уметь с ним ладить. Ошибки в механизме обновления версий Defender’а, продемонстрированные мной ранее, позволяют нарушить целостность ключевой составляющей защиты — его исполняемой папки, с помощью символической ссылки.

Антивирусные программы и EDR всегда запускаются с повышенными правами и зачастую защищены специальными драйверами. Если подобные приложения содержат уязвимости, вредоносное ПО может воспользоваться ими, замаскировавшись под доверенную программу, такую как антивирус или EDR. Таким образом, на машине жертвы появляются неудаляемые вредоносные программы, либо антивирус и EDR теряют способность к работе.

Еще больше познавательного контента в Telegram-канале — Life-Hack - Хакер

Комментарии (1)


  1. gazkom
    28.09.2025 09:02

    Как видно на изображении выше, я способен создавать любую папку с любым названием в папке Platform.

    Нет, для этого надо иметь админские права. А раз у тебя есть админские права, снеси к чертям Windows Defender, зачем его ломать. С п. 2 дальше можно не читать.