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
LazyHook — Evite a análise comportamental executando código malicioso dentro de pilhas de chamadas confiáveis da Microsoft, hooking sem patches na biblioteca IAT/EAT. | Kitploit
Ferramentas/GitHubGitHub/hwbp/lazyhook
ExploraçãoEvasão de IDS/IPSAnálise de MalwareAprendizado e EducaçãoRed TeamingAnti-Bot
GitHubhwbp/lazyhook

LazyHook

Evite a análise comportamental executando código malicioso dentro de pilhas de chamadas confiáveis da Microsoft, hooking sem patches na biblioteca IAT/EAT.

Ver Repositório
148256há 9 mesesRevisado 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

Visão Geral

LazyHook é um framework de API hooking furtivo que contorna Sistemas de Prevenção contra Intrusão em Host (HIPS) através de spoofing da pilha de chamadas. Ao alavancar breakpoints de hardware em nível de CPU e o Tratamento de Exceções Vetorizado (VEH), ele executa código arbitrário como se fosse originado de módulos confiáveis assinados pela Microsoft — enganando completamente os mecanismos de análise comportamental que dependem da inspeção da pilha de chamadas e da verificação da origem do módulo.

Evasão da análise comportamental executando código malicioso dentro de pilhas de chamadas confiáveis da Microsoft
Usa breakpoints de hardware + VEH para sequestrar funções legítimas e falsificar origens de módulos

O Problema: Software de Segurança Moderno

Os Sistemas de Prevenção contra Intrusão em Host (HIPS) e os mecanismos de análise comportamental monitoram aplicativos através de:

  • Análise da Pilha de Chamadas: Rastreamento da origem e fluxo das chamadas de API
  • Verificação da Origem do Módulo: Verificação se comportamento suspeito se origina de módulos confiáveis
  • Reconhecimento de Padrões de API: Detecção de sequências maliciosas (ex.: VirtualAlloc → WriteProcessMemory → CreateRemoteThread)
  • Validação de Endereço de Retorno: Garantia de que endereços de retorno apontam para seções de código legítimas

Sistemas como o Kaspersky System Watcher, Windows Defender, Cylance e CrowdStrike empregam variações destas técnicas.

A Solução: Spoofing de Pilhas de Chamadas Confiáveis

Ao sequestrar uma função em uma assembly assinada pela Microsoft (ex.: System.Windows.Forms.dll, user32.dll), podemos executar lógica arbitrária dentro de uma pilha de chamadas que parece completamente legítima.

Nota: É possível fazer um JmpHook, que vai hookar o MsgBox -> e logo após chamá-lo para o seu código personalizado. O LazyHook não faz isso

Por que Isso Funciona:

  1. A função hookada está em uma DLL Microsoft confiável e assinada digitalmente
  2. Quando seu payload executa, a pilha de chamadas mostra o módulo confiável como o chamador
  3. O breakpoint de hardware não deixa modificações na memória, então as verificações de integridade passam

O software de segurança vê o segundo cenário e pensa: "MessageBoxA da user32.dll está chamando APIs do Windows? Esse é um comportamento normal."

Como Funciona

root@kitploit:~
┌─────────────────────────────────────────────────────────┐
│  1. Chamada da Função Alvo                              │
│     ↓                                                    │
│  2. Registrador de Depuração da CPU é Acionado (DR0-DR3)│
│     ↓                                                    │
│  3. EXCEPTION_SINGLE_STEP Levantada                     │
│     ↓                                                    │
│  4. Manipulador VEH Intercepta a Exceção                │
│     ↓                                                    │
│  5. Execução Redirecionada para a Função Hook           │
│     ↓                                                    │
│  6. CallOriginal() Desativa Temporariamente o Breakpoint│
│     ↓                                                    │
│  7. Função Original Executa                             │
│     ↓                                                    │
│  8. Breakpoint Reativado                                │
└─────────────────────────────────────────────────────────┘

Tipos de Hook

Hook IAT (Tabela de Endereços de Importação)

Intercepta funções importadas localizando seu endereço na IAT e configurando um breakpoint de hardware. Isso hooka a importação específica em seu processo.

root@kitploit:~
HookIAT("user32.dll", "MessageBoxA", HookFunction, &OriginalFunction);

Hook EAT (Tabela de Endereços de Exportação)

Hooka funções exportadas globalmente de uma DLL resolvendo seu endereço através da tabela de exportação. Isso afeta todas as chamadas para aquela exportação.

root@kitploit:~
HookEAT("amsi.dll", "AmsiScanBuffer", HookFunction, &OriginalFunction);

Demonstração Entry.cpp

A demonstração incluída exibe três cenários práticos:

1. Hook IAT do MessageBoxA

Demonstra o hook IAT interceptando chamadas de MessageBoxA e modificando a mensagem exibida:

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

2. Hook EAT do CreateFileA (Exemplo Comentado)

Mostra como monitorar operações de arquivo registrando chamadas de CreateFileA:

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

3. Bypass de AMSI via Hook do AmsiScanBuffer

Demonstra a evasão de software de segurança forçando todas as varreduras de AMSI a retornarem resultados limpos:

root@kitploit:~
HRESULT WINAPI HookAmsiScanBuffer(...)
{
    printf("[*] AmsiScanBuffer hookado! Ignorando...\n");
    HRESULT OrgResult = LazyHook::CallOriginal<HRESULT>(...);
    (*Result) = AMSI_RESULT_CLEAN;  // Força limpo independentemente do conteúdo
    return OrgResult;
}

A demonstração testa o bypass de AMSI varrendo "Invoke-Mimikatz" (uma string maliciosa conhecida) e mostra ela sendo classificada como limpa.

Detalhes de Implementação

Configuração do Registrador de Depuração

root@kitploit:~
Layout do DR7 (Simplificado):
- Bits 0,2,4,6: Flags de habilitação para DR0-DR3 (Habilitação Local)
- Bits 16-31: Condições do breakpoint (Executar, Escrever, E/S, R/W)

O framework configura o DR7 para:

  • Ativar breakpoints de execução (00b para condição de execução)
  • Definir comprimento de 1 byte para precisão do breakpoint

Tratamento de Exceções Vetorizado (VEH)

O manipulador VEH:

  1. Verifica se a exceção é EXCEPTION_SINGLE_STEP
  2. Compara o ponteiro de instrução (RIP/EIP) com os hooks registrados
  3. Redireciona a execução para a função hook se houver correspondência
  4. Retorna EXCEPTION_CONTINUE_EXECUTION para retomar no hook

Padrão CallOriginal

root@kitploit:~
template<typename Ret, typename... Args>
Ret CallOriginal(VehHookState* State, Args... args)
{
    RemoveHardwareBreakpoint(State->DrIndex);  // Desativa temporariamente
    Ret Result = ((FuncType)State->OriginalFunction)(args...);
    SetHardwareBreakpoint(State->OriginalFunction, State->DrIndex);  // Reativa
    return Result;
}

Exemplos de Casos de Uso

1. Bypass de AMSI

A demonstração mostra hookando AmsiScanBuffer para forçar resultados de varredura limpos:

root@kitploit:~
HRESULT WINAPI HookAmsiScanBuffer(...)
{
    HRESULT Result = LazyHook::CallOriginal<HRESULT>(...);
    (*Result) = AMSI_RESULT_CLEAN;  // Força resultado limpo
    return Result;
}

Isso demonstra como o comportamento do software de segurança pode ser modificado em tempo de execução ao interceptar chamadas críticas de API.

2. Monitoramento de Chamadas de Função

Hooke CreateFileA para registrar acesso a arquivos sem modificar o comportamento do aplicativo:

root@kitploit:~
HANDLE WINAPI HookCreateFileA(LPCSTR Filename, ...)
{
    printf("Arquivo acessado: %s\n", Filename);
    return LazyHook::CallOriginal<HANDLE>(...);
}

Uso Responsável e Aviso Legal

Este código demonstra técnicas avançadas de evasão para:

  • Pesquisa e educação em segurança
  • Operações de red team em ambientes autorizados
  • Análise de malware e pesquisa defensiva

⚠️ Aviso: O uso não autorizado para contornar controles de segurança, modificar o comportamento de software ou burlar proteções pode violar leis de crimes de informática (CFAA, GDPR, legislação equivalente). Este framework é fornecido apenas para fins educacionais e de pesquisa de segurança autorizada.


Entender técnicas ofensivas constrói melhores defesas.

Baixar ferramenta