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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/dec0ne/hwsyscalls
Обход IDS/IPSПост-эксплуатацияТестирование на ПроникновениеRed TeamingРазработка Полезной Нагрузки
GitHubdec0ne/hwsyscalls

HWSyscalls

HWSyscalls — это новый метод выполнения косвенных системных вызовов с использованием HWBP, HalosGate и синтетического трамплина на kernel32 с HWBP.

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

Популярное

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

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

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

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

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

HWSyscalls

image image

Основные участники

Dec0ne Idov31

Описание

HWSyscalls — это новый метод выполнения косвенных системных вызовов, использующий 3 основных компонента:

  • Аппаратные точки останова и векторизованный обработчик исключений для управления потоком выполнения.

  • HalosGate используется для поиска номеров и адресов системных вызовов.

  • Создание синтетического трамплина в kernel32 с помощью аппаратных точек останова.

HWSyscalls поставляется в виде простой в подключении библиотеки, которую можно добавить в любой проект, желающий использовать косвенные системные вызовы без срабатывания детектирования EDR или AV, основанного на современных методах обнаружения косвенных системных вызовов.

Косвенные системные вызовы — это популярный метод, который используется в различных вариациях для выполнения системных вызовов из ntdll. Однако основная проблема системных вызовов из ntdll кроется в их сути: аномальный доступ программы напрямую к ntdll, минуя любые предыдущие DLL. HWSyscalls построен на основной идее косвенных системных вызовов, но решает эту проблему, объединяя функциональность аппаратных точек останова для создания синтетического трамплина в kernel32 и HalosGate для получения SSN.

Для простоты понимания, обычный поток косвенных системных вызовов выглядит так:

indirect_syscalls

А наш — так:

hwsyscalls_flow

Обновление

Мы обновили логику функции HWSyscallExceptionHandler, добавив немного магии с манипуляцией стеком, чтобы сделать стек разматываемым. Мы сделали это, напрямую вызвав функцию NTAPI (её адрес теперь возвращается в функции PrepareSyscall), вызвав срабатывание аппаратной точки останова внутри функции NTAPI, создав новый стековый кадр и установив адрес возврата нового стекового кадра на гаджет ADD RSP, 68; RET, найденный в kernel32 (или kernelbase), а также скопировав аргументы стека.

Теперь стек полностью разматывается и фактически возвращается через kernel32 на пути обратно из ntdll, без необходимости в точках останова и манипуляции потоком выполнения с нашей стороны:

hwsyscalls_stack

Для получения дополнительной информации смотрите наш пост в блоге (СКОРО).

Использование

Чтобы использовать проект, вам нужно подключить HWSyscalls.h и вызвать InitHWSyscalls для поиска необходимых гаджетов и инициализации обработчика исключений. В конце выполнения вашей программы вызовите DeinitHWSyscalls, чтобы удалить обработчик исключений.

root@kitploit:~
#include "HWSyscalls.h"

typedef NTSTATUS(WINAPI* NtOpenProcess_t)(
	OUT          PHANDLE            ProcessHandle,
	IN           ACCESS_MASK        DesiredAccess,
	IN           POBJECT_ATTRIBUTES ObjectAttributes,
	IN OPTIONAL  PCLIENT_ID         ClientId);

void main() {

    // Initialize the exception handler and find the required gadgets.
    if (!InitHWSyscalls())
        return;
    
    // ...

    // Execute your function!
    NtOpenProcess_t pNtOpenProcess = (NtOpenProcess_t)PrepareSyscall((char*)("NtOpenProcess"));
    NTSTATUS status = pNtOpenProcess(&targetHandle, PROCESS_ALL_ACCESS, &object, &clientID);

    // ...

    // Removing the exception handler.
    DeinitHWSyscalls();

}

Уровень подробности отладки можно включить или выключить, изменив определение HWSYSCALLS_DEBUG в HWSyscalls.h:

root@kitploit:~
#pragma once
#include <windows.h>
#include <inttypes.h>
#include <stdio.h>

#pragma region Defines

#define HWSYSCALLS_DEBUG 0 // 0 disable, 1 enable
#define UP -32
//...

Установка

Для компиляции этого проекта вам понадобится Visual Studio 2019 или новее. Важно отметить, что этот проект создан только для x64-сред и должен компилироваться без оптимизации. Вы можете отключить её в Project Settings -> C/C++ -> Optimization -> Optimization (Disabled /Od).

Пример

example

Благодарности

  • Sektor7 за Halosgate и за реализацию HWBP, которая преподаётся в их потрясающем курсе Malware Development Advanced Vol 1.

  • @Am0nsec и @RtlMateusz за оригинальную реализацию Hellsgate.

  • Rad9800 за вдохновение, которое мы получили от TamperingSyscalls.

  • Yxel за код сопоставления бинарных паттернов, который мы использовали из Cronos.

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