Skip to content
KitploitKITPLOIT
ИнструментыБлог
Log in
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
FalconEye — Драйвер режима ядра Windows для обнаружения в реальном времени техник внедрения процессов, включая внедрение шелл-кода, DLL и рефлективное внедрение, с перехватом системных вызовов (syscall hooking) и обнаружением аномалий. | Kitploit
Инструменты/GitHubGitHub/rajiv2790/falconeye
Оборонительные ИнструментыАнализ вредоносных программАнализ Бинарных ФайловОбнаружение Вторжений
GitHubrajiv2790/falconeye

FalconEye

Драйвер режима ядра Windows для обнаружения в реальном времени техник внедрения процессов, включая внедрение шелл-кода, DLL и рефлективное внедрение, с перехватом системных вызовов (syscall hooking) и обнаружением аномалий.

Репозиторий
31067545 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

FalconEye: Программное обеспечение для обнаружения внедрения процессов в реальном времени в Windows

FalconEye — это программное обеспечение для обнаружения конечных точек Windows для внедрения процессов в реальном времени. Это драйвер режима ядра, предназначенный для обнаружения внедрения процессов по мере их выполнения (в реальном времени). Поскольку FalconEye работает в режиме ядра, он обеспечивает более сильную и надежную защиту от методов внедрения процессов, которые пытаются обойти различные перехватчики пользовательского режима.

Вы можете ознакомиться с нашей презентацией на 2021 Blackhat ASIA Arsenal и слайдами.

Обзор проекта

Охват обнаружения

В таблице ниже показаны статус реализации и логика обнаружения различных методов внедрения процессов. WPM означает WriteProcessMemory. Для тестирования обнаружения можно обратиться к разделу ссылок.

ТехникаСтатусДетекцияИспользуемый POC
Atombombing✓Перехват QueueUserAPC и поиск функций семейства GlobalGetAtomPinjectra
Instrumentation callback injection✓Обнаружение создания нового потока из плавающего кодаhttps://github.com/antonioCoco/Mapping-Injection
Reflective DLL Injection✓Обнаружение создания нового потока из плавающего кода и записи PE-заголовка в жертвуMInjector
PROPagate✓Перехват SetProp для получения адреса записываемого свойства и соотнесение с предыдущими вызовами WPM для получения адреса плавающего кодаPinjectra
Process Hollowing✓Обнаружено по записи PE-заголовка в память целевого процессаMInjector
CreateRemoteThread with LoadLibrary✓Новый поток с начальным адресом, указывающим на LoadLibrary. Версия MInjector также записывает путь к DLL через WPM, что также обнаруживаетсяMInjector, Pinjectra
CreateRemoteThread with MapViewOfFile✓Обнаружение создания нового потока из плавающего кодаPinjectra
Suspend-Inject-Resume✓Обнаружение создания нового потока из плавающего кода (MInjector). Запись пути к DLL через WPM (MInjector). Обнаружение установки контекста на ранее приостановленный поток (Pinjectra)MInjector, Pinjectra
QueueUserAPC✓Путь к DLL записывается через WPMMInjector
QueueUserAPC with memset (Stackbombing)✓Перехват QueueUserAPC и поиск memsetPinjectra
SetWindowLong (Extra window memory injection)✓Перехват SetWindowLong для получения адреса записываемого указателя на функцию и соотнесение с предыдущими вызовами WPM для получения адреса плавающего кодаPinjectra
Unmap + Overwrite✓Предупреждение, если процесс атакующего отображает ntdll из жертвыPinjectra
Kernel Ctrl Table✓Обнаружение перезаписи поля KernelCallbackTable в PEB жертвы через WPMhttps://github.com/odzhan/injection/blob/master/kct
USERDATA✓Проверить, находится ли целевой адрес WPM в диапазоне conhost.exe. Если да, проверить, совпадают ли соответствующие указатели функций из conhost с ранее сохраненным адресом WPMhttps://github.com/odzhan/injection/blob/master/conhost
Ctrl-inject✓Обнаружение WPM в диапазоне KernelBase.dll жертвыPinjectra
ALPC Callback✓Извлечение PID жертвы из вызовов NtConnectPort к порту ALPC. Для пары атакующий-жертва проверить предыдущие вызовы WPM и применить обнаружение плавающего кодаPinjectra
WNF Callback✓WPM с последующим вызовом UpdateWNFStateDatahttps://github.com/odzhan/injection/tree/master/wnf
SetWindowsHook✓Сохранить пути модулей, зарегистрированных в хуке NtUserSetWindowsHookEx. Позже, когда модуль, соответствующий этому пути, загружается в другом процессе, генерировать предупреждениеMInjector
GhostWriting✓Обнаружение установки контекста (вызов NtSetContextThread) на ранее приостановленный потокPinjectra
Service Control✓WPM перезаписывает Service IDE процесса (службы)https://github.com/odzhan/injection/tree/master/svcctrl
Shellcode injection✓Новый поток запущен из плавающего кода. Путь к DLL записывается через WPMMInjector
Image Mapping✓Поток запущен из плавающего кода. PE-заголовок записывается через WPM. Путь к DLL записывается через WPMMInjector
Thread Reuse✓Поток запущен из плавающего кода. Путь к DLL записывается через WPMMInjector

Обзор архитектуры

alt text

  1. Драйвер загружается по требованию.
  2. Инициализация включает настройку обратных вызовов и перехватчиков системных вызовов через libinfinityhook.
  3. Обратные вызовы поддерживают карту PID, построенную на основе межпроцессной активности, такой как OpenProcess, но не ограничиваясь OpenProcess.
  4. Последующие обратные вызовы и перехватчики системных вызовов используют эту карту PID для уменьшения шума при обработке. В рамках снижения шума перехватчики системных вызовов фильтруют активность внутри одного процесса.
  5. Логика обнаружения разделена на подкатегории: без сохранения состояния (например, Atombombing), с сохранением состояния (Unmap+Overwrite) и плавающий код (шеллкод из нескольких техник).
  6. Для обнаружений с сохранением состояния перехватчики системных вызовов записывают историю действий (ActionHistory), реализованную как кольцевой буфер. Например, записываются все вызовы NtWriteVirtualMemory, где процесс-вызывающий отличается от целевого процесса.
  7. Логика обнаружения содержит общую функциональность обнаружения аномалий, такую как обнаружение плавающего кода и обнаружение триггеров шеллкода в удаленных процессах. Как обратные вызовы, так и перехватчики системных вызовов вызывают эту общую функциональность для фактического обнаружения.

ПРИМЕЧАНИЕ: Наш фокус был на обнаружении, а не на создании производительного движка. Мы продолжим эти усилия после презентации на BlackHat.

Файлы

.
├── src 
│   ├── FalconEye ---------------------------# FalconEye пользовательское и ядерное пространство
│   └── libinfinityhook ---------------------# Реализация ядерных хуков
├── 2021BHASIA_FalconEye.pdf
└── README.md

Начало работы

Предварительные требования

  1. Windows 10 Build 1903/1909
  2. Microsoft Visual Studio 2019 и новее
  3. Программное обеспечение виртуализации, такое как VMware, Hyper-V (опционально)

Установка

Сборка

  1. Откройте решение в Visual Studio 2019.
  2. Выберите x64 в качестве платформы сборки.
  3. Соберите решение. Это должно сгенерировать бинарный файл FalconEye.sys в src\kernel\FalconEye\x64\Debug или src\kernel\FalconEye\x64\Release.

Настройка тестовой машины

  1. Установите Windows 10 Build 1903/1909 в виртуальную машину.
  2. Настройте ВМ для тестирования неподписанного драйвера:
    • С помощью bcdedit отключите проверки целостности: BCDEDIT /set nointegritychecks ON
  3. Запустите DbgView из Sysinternals на ВМ или начните отладку с помощью WinDbg.
Скачать инструмент