Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
LazyHook — Eludi l'analisi comportamentale eseguendo codice malevolo all'interno di stack di chiamate Microsoft attendibili, hooking senza patch della libreria IAT/EAT. | Kitploit
Strumenti/GitHubGitHub/hwbp/lazyhook
ExploitEvasione IDS/IPSAnalisi MalwareApprendimento e FormazioneRed TeamingAnti-Bot
GitHubhwbp/lazyhook

LazyHook

Eludi l'analisi comportamentale eseguendo codice malevolo all'interno di stack di chiamate Microsoft attendibili, hooking senza patch della libreria IAT/EAT.

Vedi Repository
148258 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Panoramica

LazyHook è un framework di hooking API furtivo che aggira i sistemi di prevenzione delle intrusioni host (HIPS) tramite lo spoofing dello stack di chiamate. Sfruttando i breakpoint hardware a livello di CPU e la gestione vettoriale delle eccezioni (VEH), esegue codice arbitrario come se provenisse da moduli attendibili firmati Microsoft, ingannando completamente i motori di analisi comportamentale che si affidano all'ispezione dello stack di chiamate e alla verifica dell'origine dei moduli.

Eludi l'analisi comportamentale eseguendo codice malevolo all'interno di stack di chiamate Microsoft attendibili
Usa breakpoint hardware + VEH per dirottare funzioni legittime e falsificare l'origine dei moduli

Il Problema: Software di Sicurezza Moderno

I sistemi di prevenzione delle intrusioni host (HIPS) e i motori di analisi comportamentale monitorano le applicazioni tramite:

  • Analisi dello Stack di Chiamate: Tracciamento dell'origine e del flusso delle chiamate API
  • Verifica dell'Origine dei Moduli: Controllo se il comportamento sospetto proviene da moduli attendibili
  • Riconoscimento di Pattern API: Rilevamento di sequenze malevole (ad es., VirtualAlloc → WriteProcessMemory → CreateRemoteThread)
  • Validazione degli Indirizzi di Ritorno: Verifica che gli indirizzi di ritorno puntino a sezioni di codice legittime

Sistemi come Kaspersky System Watcher, Windows Defender, Cylance e CrowdStrike impiegano tutte varianti di queste tecniche.

La Soluzione: Spoofing dello Stack di Chiamate Attendibile

Dirottando una funzione in un assembly firmato Microsoft (ad es., System.Windows.Forms.dll, user32.dll), possiamo eseguire logica arbitraria all'interno di uno stack di chiamate che appare completamente legittimo.

Nota: è possibile eseguire un JmpHook, che aggancia MsgBox -> e subito dopo la chiamata passa al tuo codice personalizzato. LazyHook non fa questo

Perché Funziona:

  1. La funzione agganciata si trova in una DLL Microsoft attendibile e firmata digitalmente
  2. Quando il tuo payload viene eseguito, lo stack di chiamate mostra il modulo attendibile come chiamante
  3. Il breakpoint hardware non lascia modifiche in memoria, quindi i controlli di integrità vengono superati

Il software di sicurezza vede il secondo scenario e pensa: "MessageBoxA da user32.dll sta chiamando API Windows? Questo è un comportamento normale."

Come Funziona

root@kitploit:~
┌─────────────────────────────────────────────────────────┐
│  1. Chiamata alla Funzione Target                       │
│     ↓                                                    │
│  2. Il Registro di Debug della CPU si Attiva (DR0-DR3)  │
│     ↓                                                    │
│  3. EXCEPTION_SINGLE_STEP Sollevata                     │
│     ↓                                                    │
│  4. Il Gestore VEH Intercetta l'Eccezione               │
│     ↓                                                    │
│  5. Esecuzione Reindirizzata alla Funzione di Hook      │
│     ↓                                                    │
│  6. CallOriginal() Disabilita Temporaneamente il Breakpoint │
│     ↓                                                    │
│  7. La Funzione Originale Viene Eseguita                 │
│     ↓                                                    │
│  8. Breakpoint Riattivato                               │
└─────────────────────────────────────────────────────────┘

Tipi di Hook

Hooking IAT (Import Address Table)

Intercetta le funzioni importate individuando il loro indirizzo nella IAT e impostando un breakpoint hardware. Questo aggancia l'import specifico nel tuo processo.

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

Hooking EAT (Export Address Table)

Aggancia globalmente le funzioni esportate da una DLL risolvendo il loro indirizzo tramite la tabella di esportazione. Questo influisce su tutte le chiamate a quell'export.

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

Dimostrazione Entry.cpp

La demo inclusa mostra tre scenari pratici:

1. Hook IAT su MessageBoxA

Dimostra l'hooking IAT intercettando le chiamate a MessageBoxA e modificando il messaggio visualizzato:

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

2. Hook EAT su CreateFileA (Esempio Commentato)

Mostra come monitorare le operazioni sui file registrando le chiamate a CreateFileA:

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

3. Bypass AMSI tramite Hook su AmsiScanBuffer

Dimostra il bypass del software di sicurezza forzando tutte le scansioni AMSI a restituire risultati puliti:

root@kitploit:~
HRESULT WINAPI HookAmsiScanBuffer(...)
{
    printf("[*] AmsiScanBuffer hooked! Bypassing...\n");
    HRESULT OrgResult = LazyHook::CallOriginal<HRESULT>(...);
    (*Result) = AMSI_RESULT_CLEAN;  // Forza pulito indipendentemente dal contenuto
    return OrgResult;
}

La demo testa il bypass AMSI scansionando "Invoke-Mimikatz" (una stringa nota come malevola) e mostra che viene classificata come pulita.

Dettagli Implementativi

Configurazione dei Registri di Debug

root@kitploit:~
Layout DR7 (Semplificato):
- Bit 0,2,4,6: Flag di abilitazione per DR0-DR3 (Abilitazione Locale)
- Bit 16-31: Condizioni del breakpoint (Esecuzione, Scrittura, IO, R/W)

Il framework configura DR7 per:

  • Abilitare breakpoint di esecuzione (00b per la condizione di esecuzione)
  • Impostare una lunghezza di 1 byte per la precisione del breakpoint

Gestione Vettoriale delle Eccezioni

Il gestore VEH:

  1. Verifica se l'eccezione è EXCEPTION_SINGLE_STEP
  2. Confronta il puntatore all'istruzione (RIP/EIP) con gli hook registrati
  3. Reindirizza l'esecuzione alla funzione di hook se trova una corrispondenza
  4. Restituisce EXCEPTION_CONTINUE_EXECUTION per riprendere dall'hook

Pattern CallOriginal

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

Esempi di Casi d'Uso

1. Bypass AMSI

La demo mostra l'aggancio di AmsiScanBuffer per forzare risultati di scansione puliti:

root@kitploit:~
HRESULT WINAPI HookAmsiScanBuffer(...)
{
    HRESULT Result = LazyHook::CallOriginal<HRESULT>(...);
    (*Result) = AMSI_RESULT_CLEAN;  // Forza risultato pulito
    return Result;
}

Questo dimostra come il comportamento del software di sicurezza può essere modificato a runtime intercettando chiamate API critiche.

2. Monitoraggio delle Chiamate di Funzione

Aggancia CreateFileA per registrare l'accesso ai file senza modificare il comportamento dell'applicazione:

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

Uso Responsabile e Nota Legale

Questo codice dimostra tecniche avanzate di evasione per:

  • Ricerca e istruzione sulla sicurezza
  • Operazioni di red team in ambienti autorizzati
  • Analisi malware e ricerca difensiva

⚠️ Avvertenza: L'uso non autorizzato per aggirare controlli di sicurezza, modificare il comportamento del software o eludere protezioni può violare le leggi contro i crimini informatici (CFAA, GDPR, legislazione equivalente). Questo framework è fornito solo per ricerca sulla sicurezza educativa e autorizzata.


Comprendere le tecniche offensive costruisce difese migliori.

Scarica lo strumento