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

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

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

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

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

Категории

Все категории
Loading categories
LazyHook — Обход поведенческого анализа за счёт выполнения вредоносного кода в доверенных стеках вызовов Microsoft и беспатчевый перехват IAT/EAT библиотек. | Kitploit
Инструменты/GitHubGitHub/hwbp/lazyhook
ЭксплуатацияОбход IDS/IPSАнализ вредоносных программОбучение и ОбразованиеRed TeamingАнти-Бот
GitHubhwbp/lazyhook

LazyHook

Обход поведенческого анализа за счёт выполнения вредоносного кода в доверенных стеках вызовов Microsoft и беспатчевый перехват IAT/EAT библиотек.

Репозиторий
14825169 месяцев назадПроверено Kitploit

Популярное

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

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

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

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

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

Обзор

LazyHook — это скрытный фреймворк для перехвата API, который обходит системы предотвращения вторжений на хост (HIPS) с помощью спуфинга стека вызовов. Используя аппаратные точки останова на уровне CPU и векторизованную обработку исключений, он выполняет произвольный код так, будто тот исходит из доверенных модулей, подписанных Microsoft, — полностью обманывая механизмы поведенческого анализа, которые полагаются на проверку стека вызовов и проверку происхождения модулей.

Обходите поведенческий анализ, выполняя вредоносный код в доверенных стеках вызовов Microsoft
Использует аппаратные точки останова + VEH для перехвата легитимных функций и подмены происхождения модулей

Проблема: современное защитное ПО

Системы предотвращения вторжений на хост (HIPS) и механизмы поведенческого анализа отслеживают приложения с помощью:

  • Анализа стека вызовов: отслеживание происхождения и потока API-вызовов
  • Проверки происхождения модулей: проверка того, исходит ли подозрительное поведение из доверенных модулей
  • Распознавания API-паттернов: обнаружение вредоносных последовательностей (например, VirtualAlloc → WriteProcessMemory → CreateRemoteThread)
  • Проверки адресов возврата: обеспечение того, чтобы адреса возврата указывали на легитимные участки кода

Такие системы, как Kaspersky System Watcher, Windows Defender, Cylance и CrowdStrike, используют различные вариации этих методов.

Решение: спуфинг доверенного стека вызовов

Перехватывая функцию в сборке, подписанной Microsoft (например, System.Windows.Forms.dll, user32.dll), мы можем выполнять произвольную логику в стеке вызовов, который выглядит полностью легитимным.

Примечание: можно сделать JmpHook, который перехватит MsgBox -> и сразу после вызова направит в ваш собственный код. LazyHook этого не делает

Почему это работает:

  1. Перехватываемая функция находится в доверенной DLL Microsoft с цифровой подписью
  2. Когда ваша нагрузка (payload) выполняется, стек вызовов показывает доверенный модуль как вызывающего
  3. Аппаратная точка останова не оставляет изменений в памяти, поэтому проверки целостности проходят успешно

Защитное ПО видит второй сценарий и думает: «MessageBoxA из user32.dll вызывает Windows API? Это нормальное поведение.»

Как это работает

┌─────────────────────────────────────────────────────────┐
│  1. Target Function Call                                │
│     ↓                                                    │
│  2. CPU Debug Register Triggers (DR0-DR3)               │
│     ↓                                                    │
│  3. EXCEPTION_SINGLE_STEP Raised                        │
│     ↓                                                    │
│  4. VEH Handler Intercepts Exception                    │
│     ↓                                                    │
│  5. Execution Redirected to Hook Function               │
│     ↓                                                    │
│  6. CallOriginal() Temporarily Disables Breakpoint      │
│     ↓                                                    │
│  7. Original Function Executes                          │
│     ↓                                                    │
│  8. Breakpoint Re-enabled                               │
└─────────────────────────────────────────────────────────┘

Типы перехвата

Перехват IAT (таблица импортируемых адресов)

Перехватывает импортируемые функции, определяя их адрес в IAT и устанавливая аппаратную точку останова. Это перехватывает конкретный импорт в вашем процессе.

HookIAT("user32.dll", "MessageBoxA", HookFunction, &OriginalFunction);

Перехват EAT (таблица экспортируемых адресов)

Глобально перехватывает экспортируемые функции DLL, определяя их адрес через таблицу экспорта. Это затрагивает все вызовы данного экспорта.

HookEAT("amsi.dll", "AmsiScanBuffer", HookFunction, &OriginalFunction);

Демонстрация Entry.cpp

Включённая демонстрация показывает три практических сценария:

1. Перехват IAT для MessageBoxA

Демонстрирует IAT-перехват, перехватывая вызовы MessageBoxA и изменяя отображаемое сообщение:

int WINAPI HookMessageBoxA(HWND H, LPCSTR T, LPCSTR C, UINT U)
{
    printf("[*] MessageBoxA hooked!\n");
    return LazyHook::CallOriginal<int>(LazyHook::GetIatState(), H, "Hooked!", ">:)", U);
}

2. Перехват EAT для CreateFileA (закомментированный пример)

Показывает, как отслеживать файловые операции, логируя вызовы CreateFileA:

HANDLE WINAPI HookCreateFileA(LPCSTR Filename, ...)
{
    printf("[*] CreateFileA hooked: %s\n", Filename);
    return LazyHook::CallOriginal<HANDLE>(...);
}

3. Обход AMSI через перехват AmsiScanBuffer

Демонстрирует обход защитного ПО, принудительно заставляя все проверки AMSI возвращать чистые результаты:

HRESULT WINAPI HookAmsiScanBuffer(...)
{
    printf("[*] AmsiScanBuffer hooked! Bypassing...\n");
    HRESULT OrgResult = LazyHook::CallOriginal<HRESULT>(...);
    (*Result) = AMSI_RESULT_CLEAN;  // Force clean regardless of content
    return OrgResult;
}

Демонстрация проверяет обход AMSI, сканируя "Invoke-Mimikatz" (известную вредоносную строку), и показывает, что она классифицируется как чистая.

Детали реализации

Конфигурация отладочных регистров

DR7 Layout (Simplified):
- Bits 0,2,4,6: Enable flags for DR0-DR3 (Local Enable)
- Bits 16-31: Breakpoint conditions (Execute, Write, IO, R/W)

Фреймворк настраивает DR7, чтобы:

  • Включить точки останова на выполнение (00b — условие выполнения)
  • Установить длину 1 байт для точности точек останова

Векторизованная обработка исключений

Обработчик VEH:

  1. Проверяет, является ли исключение EXCEPTION_SINGLE_STEP
  2. Сравнивает указатель инструкций (RIP/EIP) с зарегистрированными хуками
  3. Перенаправляет выполнение в функцию-хук при совпадении
  4. Возвращает EXCEPTION_CONTINUE_EXECUTION для возобновления выполнения с хука

Паттерн CallOriginal

template<typename Ret, typename... Args>
Ret CallOriginal(VehHookState* State, Args... args)
{
    RemoveHardwareBreakpoint(State->DrIndex);  // Disable temporarily
    Ret Result = ((FuncType)State->OriginalFunction)(args...);
    SetHardwareBreakpoint(State->OriginalFunction, State->DrIndex);  // Re-enable
    return Result;
}

Примеры использования

1. Обход AMSI

Демонстрация показывает перехват AmsiScanBuffer для принудительного получения чистых результатов сканирования:

HRESULT WINAPI HookAmsiScanBuffer(...)
{
    HRESULT Result = LazyHook::CallOriginal<HRESULT>(...);
    (*Result) = AMSI_RESULT_CLEAN;  // Force clean result
    return Result;
}

Это демонстрирует, как поведение защитного ПО можно изменять во время выполнения, перехватывая критически важные API-вызовы.

2. Мониторинг вызовов функций

Перехватите CreateFileA, чтобы логировать доступ к файлам, не изменяя поведение приложения:

HANDLE WINAPI HookCreateFileA(LPCSTR Filename, ...)
{
    printf("File accessed: %s\n", Filename);
    return LazyHook::CallOriginal<HANDLE>(...);
}

Ответственное использование и правовое уведомление

Этот код демонстрирует продвинутые техники обхода для:

  • Исследований в области безопасности и обучения
  • Операций red team в авторизованных средах
  • Анализа вредоносного ПО и оборонительных исследований

⚠️ Предупреждение: Несанкционированное использование для обхода средств контроля безопасности, изменения поведения ПО или обхода защитных механизмов может нарушать законы о компьютерных преступлениях (CFAA, GDPR, эквивалентное законодательство). Этот фреймворк предоставляется только для образовательных и авторизованных исследований в области безопасности.


Понимание атакующих техник создаёт лучшую защиту.

Скачать инструмент