Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
HWSyscalls — HWSyscalls é um novo método para executar syscalls indiretas usando HWBP, HalosGate e um trampolim sintético no kernel32 com HWBP. | Kitploit
Ferramentas/GitHubGitHub/dec0ne/hwsyscalls
Evasão de IDS/IPSPós-ExploraçãoTestes de PenetraçãoRed TeamingDesenvolvimento de Payloads
GitHubdec0ne/hwsyscalls

HWSyscalls

HWSyscalls é um novo método para executar syscalls indiretas usando HWBP, HalosGate e um trampolim sintético no kernel32 com HWBP.

Ver Repositório
7351073há 3 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

HWSyscalls

image image

Principais Contribuidores

Dec0ne idov31

Descrição

HWSyscalls é um novo método para executar syscalls indiretos usando 3 componentes principais:

  • Breakpoints de hardware e o Vectored Exception Handler para controlar o fluxo de execução.

  • HalosGate é usado para encontrar números e endereços de syscalls.

  • Criação de um trampolim sintético em kernel32 com breakpoints de hardware.

HWSyscalls é fornecido como uma biblioteca de fácil inclusão que pode ser adicionada a qualquer projeto que queira usar syscalls indiretos sem acionar as detecções de EDRs ou AVs baseadas na detecção atual de syscalls indiretos.

Syscalls indiretos é um método popular usado em diferentes variações para chamar chamadas de sistema a partir de ntdll; no entanto, o principal problema de chamar syscalls a partir de ntdll está em seu núcleo: um acesso estranho de um programa diretamente a ntdll, sem passar por qualquer dll anterior. HWSyscalls é construído sobre a ideia central de syscalls indiretos, mas com uma solução para esse problema ao combinar a funcionalidade de breakpoints de hardware para criar o trampolim sintético em kernel32 e o HalosGate para obter os SSNs.

Para facilitar, um fluxo normal de syscalls indiretos se parece com isto:

indirect_syscalls

Enquanto o nosso se parece com isto:

hwsyscalls_flow

Atualização

Atualizamos a lógica da função HWSyscallExceptionHandler com um pouco de mágica de manipulação de pilha para tornar a pilha desenrolável. Fizemos isso chamando a função NTAPI diretamente (seu endereço agora é retornado na função PrepareSyscall), atingindo o HWBP na função NTAPI, criando um novo stack frame e definindo o endereço de retorno do novo stack frame para um gadget "ADD RSP, 68; RET" encontrado em kernel32 (ou kernelbase), além de copiar também os argumentos da pilha.

A pilha agora é completamente desenrolável e, na verdade, retorna através de kernel32 no caminho de volta de ntdll sem qualquer necessidade de breakpoints e manipulação do fluxo de execução por nossa parte:

hwsyscalls_stack

Para mais informações, confira o nosso post no blog (EM BREVE).

Uso

Para usar o projeto, você precisará incluir o HWSyscalls.h e chamar InitHWSyscalls para encontrar os gadgets necessários e inicializar o handler de exceções. Ao final da execução do seu programa, chame DeinitHWSyscalls para remover o handler de exceções.

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

}

A verbosidade de depuração pode ser ativada ou desativada alterando a definição HWSYSCALLS_DEBUG em 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
//...

Configuração

Para compilar este projeto, você precisará do Visual Studio 2019 ou posterior. É importante notar que este projeto foi feito apenas para ambientes x64 e precisa ser compilado sem otimização. Você pode desativá-la em Project Settings -> C/C++ -> Optimization -> Optimization (Disabled /Od).

Exemplo

example

Agradecimentos

  • Sektor7 pelo Halosgate e pela implementação de HWBP que é ensinada em seu incrível Malware Development Advanced Vol 1.

  • @Am0nsec e @RtlMateusz pela implementação original do Hellsgate.

  • Rad9800 pela inspiração que obtivemos do TamperingSyscalls.

  • Yxel pelo código de correspondência de padrões binários que usamos do Cronos.

Baixar ferramenta