Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
HWSyscalls — HWSyscalls is a new method to execute indirect syscalls using HWBP, HalosGate and a synthetic trampoline on kernel32 with HWBP. | Kitploit
Herramientas/GitHubGitHub/dec0ne/hwsyscalls
IDS/IPS EvasionPost-ExploitationPenetration TestingRed TeamingPayload Development
GitHubdec0ne/hwsyscalls

HWSyscalls

HWSyscalls is a new method to execute indirect syscalls using HWBP, HalosGate and a synthetic trampoline on kernel32 with HWBP.

Ver Repositorio
735107hace 3 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

HWSyscalls

image image

Principales contribuyentes

Dec0ne idov31

Descripción

HWSyscalls es un nuevo método para ejecutar syscalls indirectas usando 3 componentes principales:

  • Puntos de interrupción de hardware y un Vectored Exception Handler para controlar el flujo de ejecución.

  • HalosGate se utiliza para encontrar los números y direcciones de syscalls.

  • Creación de un trampolín sintético en kernel32 con puntos de interrupción de hardware.

HWSyscalls se proporciona como una librería fácil de incluir que se puede añadir a cualquier proyecto que quiera usar syscalls indirectas sin activar las detecciones de EDRs o AVs basadas en la detección actual de syscalls indirectas.

Las syscalls indirectas son un método popular que se usa en diferentes variantes para llamar a las llamadas al sistema desde ntdll. Sin embargo, el principal problema de llamar a syscalls desde ntdll está en su núcleo: un acceso extraño desde un programa directamente a ntdll, sin pasar por ninguna dll previa. HWSyscalls se basa en la idea central de las syscalls indirectas, pero con una solución a este problema combinando la funcionalidad de los puntos de interrupción de hardware para crear el trampolín sintético en kernel32 y HalosGate para obtener los SSNs.

Para que sea más fácil, un flujo normal de syscalls indirectas se ve así:

indirect_syscalls

Mientras que el nuestro se ve así:

hwsyscalls_flow

Actualización

Hemos actualizado la lógica de la función HWSyscallExceptionHandler con algo de manipulación mágica de la pila para hacer que la pila se pueda desenrollar. Lo hemos hecho llamando directamente a la función NTAPI (su dirección ahora se devuelve en la función PrepareSyscall), alcanzando el HWBP en la función NTAPI, creando un nuevo marco de pila y estableciendo la dirección de retorno del nuevo marco de pila a un gadget "ADD RSP, 68; RET" que se encuentra en kernel32 (o kernelbase), además de copiar también los argumentos de la pila.

La pila ahora es completamente desenrollable y de hecho retorna a través de kernel32 en su camino de vuelta desde ntdll sin necesidad de puntos de interrupción ni manipulación del flujo de ejecución por nuestra parte:

hwsyscalls_stack

Para más información, consulta nuestra publicación en el blog (PRÓXIMAMENTE).

Uso

Para usar el proyecto, necesitarás incluir HWSyscalls.h y llamar a InitHWSyscalls para encontrar los gadgets necesarios e inicializar el manejador de excepciones. Al final de la ejecución de tu programa, llama a DeinitHWSyscalls para eliminar el manejador de excepciones.

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() {

    // Inicializa el manejador de excepciones y encuentra los gadgets necesarios.
    if (!InitHWSyscalls())
        return;
    
    // ...

    // ¡Ejecuta tu función!
    NtOpenProcess_t pNtOpenProcess = (NtOpenProcess_t)PrepareSyscall((char*)("NtOpenProcess"));
    NTSTATUS status = pNtOpenProcess(&targetHandle, PROCESS_ALL_ACCESS, &object, &clientID);

    // ...

    // Eliminando el manejador de excepciones.
    DeinitHWSyscalls();

}

La verbosidad de depuración se puede activar o desactivar cambiando la definición HWSYSCALLS_DEBUG en HWSyscalls.h

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

#pragma region Defines

#define HWSYSCALLS_DEBUG 0 // 0 deshabilitar, 1 habilitar
#define UP -32
//...

Configuración

Para compilar este proyecto necesitarás Visual Studio 2019 o posterior. Es importante tener en cuenta que este proyecto fue hecho solo para entornos x64 y necesita compilarse sin optimización. Puedes deshabilitarla desde Project Settings -> C/C++ -> Optimization -> Optimization (Disabled /Od).

Ejemplo

example

Agradecimientos

  • Sektor7 por Halosgate y por la implementación de HWBP que se enseña en su increíble Malware Development Advanced Vol 1.

  • @Am0nsec y @RtlMateusz por la implementación original de Hellsgate.

  • Rad9800 por la inspiración que obtuvimos de TamperingSyscalls.

  • Yxel por el código de coincidencia de patrones binarios que usamos de Cronos.

Descargar herramienta