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
SysWhispers — Evasão de AV/EDR via chamadas diretas ao sistema. | Kitploit
Ferramentas/GitHubGitHub/jthuraisamy/syswhispers
ExploraçãoEvasão de IDS/IPSShellcodeTestes de PenetraçãoRed TeamingDesenvolvimento de Payloads
GitHubjthuraisamy/syswhispers

SysWhispers

Evasão de AV/EDR via chamadas diretas ao sistema.

Ver Repositório
2.0k277há 5 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

SysWhispers

O SysWhispers ajuda na evasão gerando arquivos de cabeçalho/ASM que implantes podem usar para fazer chamadas diretas ao sistema.

Todas as chamadas de sistema principais são suportadas do Windows XP ao Windows 10 19042 (20H2). Exemplos de arquivos gerados estão disponíveis na pasta example-output/.

Introdução

Vários produtos de segurança colocam hooks em APIs do modo usuário que permitem redirecionar o fluxo de execução para seus mecanismos e detectar comportamentos suspeitos. As funções em ntdll.dll que fazem as chamadas de sistema consistem em apenas algumas instruções de assembly, então reimplementá-las em seu próprio implante pode contornar a ativação desses hooks de produtos de segurança. Esta técnica foi popularizada por @Cn33liz e seu artigo no blog possui mais detalhes técnicos que valem a leitura.

O SysWhispers oferece aos operadores de red team a capacidade de gerar pares de cabeçalho/ASM para qualquer chamada de sistema na imagem do kernel principal (ntoskrnl.exe) em qualquer versão do Windows a partir do XP. Os cabeçalhos também incluirão as definições de tipo necessárias.

A principal diferença de implementação entre este e o POC do Dumpert é que este não chama RtlGetVersion para consultar a versão do SO, mas faz isso no assembly consultando o PEB diretamente. O benefício é poder chamar uma função que suporta várias versões do Windows em vez de chamar várias funções, cada uma suportando uma versão.

Instalação

root@kitploit:~
> git clone https://github.com/jthuraisamy/SysWhispers.git
> cd SysWhispers
> pip3 install -r .\requirements.txt
> py .\syswhispers.py --help

Uso e Exemplos

Linhas de Comando

root@kitploit:~
# Exportar todas as funções com compatibilidade para todas as versões suportadas do Windows (veja example-output/).
py .\syswhispers.py --preset all -o syscalls_all

# Exportar apenas as funções comuns com compatibilidade para Windows 7, 8 e 10.
py .\syswhispers.py --preset common -o syscalls_common

# Exportar NtProtectVirtualMemory e NtWriteVirtualMemory com compatibilidade para todas as versões.
py .\syswhispers.py --functions NtProtectVirtualMemory,NtWriteVirtualMemory -o syscalls_mem

# Exportar todas as funções com compatibilidade para Windows 7, 8 e 10.
py .\syswhispers.py --versions 7,8,10 -o syscalls_78X

Saída do Script

root@kitploit:~
PS C:\Projects\SysWhispers> py .\syswhispers.py --preset common --out-file syscom

  ,         ,       ,_ /_   .  ,   ,_    _   ,_   ,
_/_)__(_/__/_)__/_/_/ / (__/__/_)__/_)__(/__/ (__/_)__
      _/_                         /
     (/                          /   @Jackson_T, 2019

SysWhispers: Por que chamar o kernel quando você pode sussurrar?

Funções comuns selecionadas.

Completo! Arquivos gravados em:
        syscom.asm
        syscom.h

Exemplo Antes-e-Depois da Injeção Clássica de DLL com CreateRemoteThread

root@kitploit:~
py .\syswhispers.py -f NtAllocateVirtualMemory,NtWriteVirtualMemory,NtCreateThreadEx -o syscalls
root@kitploit:~
#include <Windows.h>

void InjectDll(const HANDLE hProcess, const char* dllPath)
{
    LPVOID lpBaseAddress = VirtualAllocEx(hProcess, NULL, strlen(dllPath), MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
    LPVOID lpStartAddress = GetProcAddress(GetModuleHandle(L"kernel32.dll"), "LoadLibraryA");
	
    WriteProcessMemory(hProcess, lpBaseAddress, dllPath, strlen(dllPath), nullptr);
    CreateRemoteThread(hProcess, nullptr, 0, (LPTHREAD_START_ROUTINE)lpStartAddress, lpBaseAddress, 0, nullptr);
}
root@kitploit:~
#include <Windows.h>
#include "syscalls.h" // Importe o cabeçalho gerado.

void InjectDll(const HANDLE hProcess, const char* dllPath)
{
    HANDLE hThread = NULL;
    LPVOID lpAllocationStart = nullptr;
    SIZE_T szAllocationSize = strlen(dllPath);
    LPVOID lpStartAddress = GetProcAddress(GetModuleHandle(L"kernel32.dll"), "LoadLibraryA");
	
    NtAllocateVirtualMemory(hProcess, &lpAllocationStart, 0, (PULONG)&szAllocationSize, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
    NtWriteVirtualMemory(hProcess, lpAllocationStart, (PVOID)dllPath, strlen(dllPath), nullptr);
    NtCreateThreadEx(&hThread, GENERIC_EXECUTE, NULL, hProcess, lpStartAddress, lpAllocationStart, FALSE, 0, 0, 0, nullptr);
}

Funções Comuns

Usar a chave --preset common criará um par de cabeçalho/ASM com as seguintes funções:

Clique para expandir a lista de funções.
  • NtCreateProcess (CreateProcess)
  • NtCreateThreadEx (CreateRemoteThread)
  • NtOpenProcess (OpenProcess)
  • NtOpenThread (OpenThread)
  • NtSuspendProcess
  • NtSuspendThread (SuspendThread)
  • NtResumeProcess
  • NtResumeThread (ResumeThread)
  • NtGetContextThread (GetThreadContext)
  • NtSetContextThread (SetThreadContext)
  • NtClose (CloseHandle)
  • NtReadVirtualMemory (ReadProcessMemory)
  • NtWriteVirtualMemory (WriteProcessMemory)
  • NtAllocateVirtualMemory (VirtualAllocEx)
  • NtProtectVirtualMemory (VirtualProtectEx)
  • NtFreeVirtualMemory (VirtualFreeEx)
  • NtQuerySystemInformation (GetSystemInfo)
  • NtQueryDirectoryFile
  • NtQueryInformationFile
  • NtQueryInformationProcess
  • NtQueryInformationThread
  • NtCreateSection (CreateFileMapping)
  • NtOpenSection
  • NtMapViewOfSection
  • NtUnmapViewOfSection
  • NtAdjustPrivilegesToken (AdjustTokenPrivileges)
  • NtDeviceIoControlFile (DeviceIoControl)
  • NtQueueApcThread (QueueUserAPC)
  • NtWaitForMultipleObjects (WaitForMultipleObjectsEx)

Importando para o Visual Studio

  1. Copie os arquivos H/ASM gerados para a pasta do projeto.
  2. No Visual Studio, vá em Project → Build Customizations... e habilite MASM.
  3. No Solution Explorer, adicione os arquivos .h e .asm ao projeto como arquivos de cabeçalho e fonte, respectivamente.
  4. Vá para as propriedades do arquivo ASM e defina o Item Type como Microsoft Macro Assembler.
  5. Certifique-se de que a plataforma do projeto está configurada para x64. Projetos de 32 bits não são suportados no momento.

Riscos e Limitações

  • Apenas Windows 64 bits é suportado no momento.
  • Chamadas de sistema do subsistema gráfico (win32k.sys) não são suportadas.
  • Testado no Visual Studio 2019 (v142) com Windows 10 SDK.

Solução de Problemas

  • ModuleNotFoundError no script Python.
    • Certifique-se de que os módulos necessários estão instalados com pip3 install -r requirements.txt.
  • Erros de redefinição de tipo: um projeto pode não compilar se typedefs em syscalls.h já tiverem sido definidos.
    • Certifique-se de incluir apenas as funções necessárias (ou seja, --preset all raramente é necessário).
    • Se um typedef já estiver definido em outro cabeçalho usado, ele pode ser removido de syscalls.h.

Créditos

Este script foi desenvolvido por @Jackson_T, mas baseia-se no trabalho de muitos outros:

  • @j00ru por manter os números de chamada de sistema em formatos legíveis por máquina.
  • @FoxHex0ne por catalogar muitos protótipos de funções e typedefs em formato legível por máquina.
  • @PetrBenes, equipe NTInternals.net e MSDN por protótipos e typedefs adicionais.
  • @Cn33liz pela implementação inicial do POC Dumpert.

Agradecimento especial a @Dcept905 pelos testes e sugestões.

Artigos e Projetos Relacionados

  • @0x00dtm: Userland API Monitoring and Code Injection Detection
  • @0x00dtm: Defeating Userland Hooks (ft. Bitdefender) (Código)
  • @Cn33liz: Combining Direct System Calls and sRDI to bypass AV/EDR (Código)
  • @mrgretzky: Defeating Antivirus Real-time Protection From The Inside
  • @SpecialHoang: Bypass EDR’s memory protection, introduction to hooking (Código)
  • @xpn e @domchell: Silencing Cylance: A Case Study in Modern EDRs
  • @mrjefftang: Universal Unhooking: Blinding Security Software (Código)
  • @spotheplanet: Full DLL Unhooking with C++
  • @hasherezade:

Licença

Este projeto está licenciado sob a Licença Apache 2.0.

Baixar ferramenta
Floki Bot and the stealthy dropper
  • @hodg87: Latest Trickbot Variant has New Tricks Up Its Sleeve
  • @hodg87: Malware Mitigation when Direct System Calls are Used