NoMoreStealer: настраиваем собственный мини-фильтр Windows для защиты профилей и чувствительных данных

NoMoreStealer: настраиваем собственный мини-фильтр Windows для защиты профилей и чувствительных данных

NoMoreStealer — это демонстрационный проект, собранный в виде минифильтра ядра Windows и сопутствующего пользовательского приложения на Wails. Идея проста: перехватывать операцию создания файла (IRP_MJ_CREATE) и препятствовать доступу к заранее определённым путям, где обычно хранятся браузерные профили, криптокошельки и данные мессенджеров. Проект предназначен в первую очередь для обучения и тестирования — он показывает, как можно интегрироваться с Filter Manager, обмениваться событиями с пользовательским пространством и отображать инциденты в простом UI. При этом в текущем виде решение далеко от боевого продукта — у него есть очевидные уязвимости и архитектурные ограничения, о которых ниже.

Как это устроено

Архитектура состоит из двух частей: драйвер минифильтра в ядре и десктопное приложение на базе Wails для мониторинга в режиме реального времени. В ядре фильтр подписывается на IRP_MJ_CREATE, сопоставляет путь запроса с «жёстко зашитым» списком защищённых директорий и принимает решение, разрешить доступ или заблокировать вызов. Для определения доверия процесса используется комбинация простых приёмов: сравнение с allow-листом по имени, распознавание защищённых системных процессов и проверка PsIsProtectedProcessLight() на поддерживаемых версиях Windows. Для коммуникации с пользовательским пространством драйвер создаёт общую секцию памяти; логи во время разработки выводятся через DbgPrint, а фронтенд получает события через WebSocket и показывает список попыток доступа, процесс и результат решения. Дополнительно в пользовательском модуле реализована простая «антишпионская» фича — прозрачный оверлей, препятствующий захвату экрана.

Реализация демонстрирует ключевые приёмы интеграции с подсистемой файловой системы и работу с безопасностью на уровне ядра: подключение к Filter Manager, парсинг путей, синхронизация с пользовательской частью и проверка цифровых подписей с помощью WinVerifyTrust в режимах, где это возможно. Однако многие элементы упрощены — это видно по жёстко закомпилированному списку путей и по простому алгоритму доверия к процессам.

Ограничения, риски и защита от обхода

Проект помечен как Proof-of-Concept, и у него есть ряд очевидных ограничений, которые серьёзно снижают эффективность против целевых, продвинутых угроз. Во-первых, мониторится только IRP_MJ_CREATE: операции записи, переименования, изменения атрибутов и другие важные IRP-типов не отслеживаются. Во-вторых, список защищённых путей хранится в коде драйвера, что исключает гибкость — любое обновление путей требует перекомпиляции. Модель доверия основана на сопоставлении имён процессов и на PsIsProtectedProcessLight(), что легко обходится при переименовании вредоносного бинаря или при запуске его из под чужого контекста. Логи выводятся через DbgPrint, а не через надёжный канал уведомлений, поэтому в рабочих условиях важные события могут остаться незамеченными.

С точки зрения безопасности ядра есть дополнительные проблемы: отсутствие проверки цепочки подписи исполняемого файла в драйвере (требуется корректная интеграция WinVerifyTrust в контексте ядра), отсутствие верификации родительского процесса и отсутствие поведенческого анализа, который помог бы отличать легитимные процессы с непривычным именем от поддельных. Для повышения стойкости потребуется расширить набор наблюдаемых IRP, вывести список защищённых директорий в конфиг и реализовать более надёжные критерии доверия — проверку цифровой подписи, контроль родительских PID/цепочек, использование HVCI/Code Integrity там, где возможно, и, при необходимости, эскалацию проверки в пользовательское пространство для глубокой валидации.

Cборка и установка

Проект рассчитан на Windows 10/11 x64 и требует прав администратора. Для сборки нужен Visual Studio с установленным WDK, а фронтенд на Wails — Go 1.19+. Типичный порядок действий: включить тестовую подпись командой bcdedit /set testsigning on, перезагрузить систему, собрать драйвер в конфигурации Release x64, скопировать полученный NoMoreStealer.sys в C:WindowsSystem32drivers, выполнить настройки реестра согласно гайду проекта и загрузить модуль через fltmc load NoMoreStealer. Важное замечание: в текущем виде это демонстрация — не рекомендуется применять на продуктивных машинах без полной ревизии и доработки механизмов защиты и логирования.

Чтобы превратить идею в реальный защитный модуль, проекту нужны несколько ключевых улучшений: расширенная обработка IRP (WRITE, SET_INFORMATION и др.), динамическая конфигурация защищённых путей, надёжные каналы связи с пользовательским пространством вместо DbgPrint, проверка цифровых подписей исполняемых модулей и анализ цепочки родительских процессов. Кроме того, полезно добавить механизмы обнаружения попыток обхода — контроль гашения событий, целостности allow-листов и метрики поведения процессов, чтобы в реальном времени отличать правомерное обновление браузера от целенаправленного доступа стилера.

NoMoreStealer хорошо иллюстрирует фундаментальные приёмы работы с минифильтрами и может служить отправной точкой для исследований и обучения. При использовании в тестовой среде он покажет, как события в ядре транслируются в UI и как базовые правила блокировки действуют на практике. Для продакшена же потребуется переработка модели доверия, расширение покрытия операций и надежный механизм управления конфигурацией.

NoMoreStealer защита информации Windows криптовалюта блокировка безопасность фильтр драйвер файлы
Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.

А что, если ваш периметр уже пробит?

Консультация с пентестером от SecurityLab: быстрый разбор уязвимостей, реальные сценарии атак, приоритизация рисков и понятный план укрепления. Конфиденциально и по делу.


Комнатный Блогер

Объясняю новую цифровую реальность