Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
LazyHook — Contournez l'analyse comportementale en exécutant du code malveillant au sein de piles d'appels Microsoft de confiance, bibliothèque de hooking sans patch IAT/EAT. | Kitploit
Outils/GitHubGitHub/hwbp/lazyhook
ExploitationÉvasion IDS/IPSAnalyse de MalwareApprentissage et ÉducationRed TeamingAnti-Bot
GitHubhwbp/lazyhook

LazyHook

Contournez l'analyse comportementale en exécutant du code malveillant au sein de piles d'appels Microsoft de confiance, bibliothèque de hooking sans patch IAT/EAT.

Voir le dépôt
14825il y a 8 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Aperçu

LazyHook est un framework de hooking d'API furtif qui contourne les systèmes de prévention d'intrusion hôte (HIPS) grâce à la falsification de la pile d'appels. En exploitant les points d'arrêt matériels au niveau du processeur et la gestion vectorisée des exceptions (VEH), il exécute du code arbitraire comme s'il provenait de modules approuvés et signés par Microsoft — trompant complètement les moteurs d'analyse comportementale qui s'appuient sur l'inspection de la pile d'appels et la vérification de l'origine des modules.

Échappez à l'analyse comportementale en exécutant du code malveillant dans des piles d'appels Microsoft de confiance
Utilise des points d'arrêt matériels + VEH pour détourner des fonctions légitimes et falsifier l'origine des modules

Le problème : les logiciels de sécurité modernes

Les systèmes de prévention d'intrusion hôte (HIPS) et les moteurs d'analyse comportementale surveillent les applications en :

  • Analyse de la pile d'appels : suivi de l'origine et du flux des appels API
  • Vérification de l'origine des modules : vérification que le comportement suspect provient de modules de confiance
  • Reconnaissance de schémas API : détection de séquences malveillantes (par ex., VirtualAlloc → WriteProcessMemory → CreateRemoteThread)
  • Validation des adresses de retour : garantie que les adresses de retour pointent vers des sections de code légitimes

Des systèmes comme Kaspersky System Watcher, Windows Defender, Cylance et CrowdStrike utilisent tous des variantes de ces techniques.

La solution : falsification de la pile d'appels de confiance

En détournant une fonction dans un assembly signé Microsoft (par ex., System.Windows.Forms.dll, user32.dll), nous pouvons exécuter une logique arbitraire dans une pile d'appels qui semble parfaitement légitime.

Remarque : il est possible de faire un JmpHook, qui accrochera MsgBox -> et juste après l'appel, exécutera votre code personnalisé. LazyHook ne fait pas cela.

Pourquoi cela fonctionne :

  1. La fonction hookée se trouve dans une DLL Microsoft de confiance, signée numériquement
  2. Lorsque votre payload s'exécute, la pile d'appels montre le module de confiance comme appelant
  3. Le point d'arrêt matériel ne laisse aucune modification en mémoire, donc les contrôles d'intégrité réussissent

Le logiciel de sécurité voit le second scénario et pense : « MessageBoxA de user32.dll appelle des API Windows ? C'est un comportement normal. »

Comment cela fonctionne

root@kitploit:~
┌─────────────────────────────────────────────────────────┐
│  1. Appel de la fonction cible                          │
│     ↓                                                    │
│  2. Le registre de débogage CPU se déclenche (DR0-DR3)  │
│     ↓                                                    │
│  3. EXCEPTION_SINGLE_STEP est levée                     │
│     ↓                                                    │
│  4. Le gestionnaire VEH intercepte l'exception          │
│     ↓                                                    │
│  5. L'exécution est redirigée vers la fonction de hook  │
│     ↓                                                    │
│  6. CallOriginal() désactive temporairement le point    │
│     d'arrêt                                               │
│     ↓                                                    │
│  7. La fonction d'origine s'exécute                     │
│     ↓                                                    │
│  8. Le point d'arrêt est réactivé                       │
└─────────────────────────────────────────────────────────┘

Types de hooks

Hook IAT (table d'adresses d'importation)

Intercepte les fonctions importées en localisant leur adresse dans l'IAT et en définissant un point d'arrêt matériel. Cela hooke l'importation spécifique dans votre processus.

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

Hook EAT (table d'adresses d'exportation)

Hooke globalement les fonctions exportées d'une DLL en résolvant leur adresse via la table d'exportation. Cela affecte tous les appels à cette exportation.

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

Démonstration Entry.cpp

La démo incluse présente trois scénarios pratiques :

1. Hook IAT sur MessageBoxA

Démontre le hooking IAT en interceptant les appels MessageBoxA et en modifiant le message affiché :

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 sur CreateFileA (exemple commenté)

Montre comment surveiller les opérations sur les fichiers en journalisant les appels CreateFileA :

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

3. Bypass AMSI via le hook sur AmsiScanBuffer

Démontre le contournement de logiciels de sécurité en forçant toutes les analyses AMSI à renvoyer des résultats propres :

root@kitploit:~
HRESULT WINAPI HookAmsiScanBuffer(...)
{
    printf("[*] AmsiScanBuffer hooked! Bypassing...\n");
    HRESULT OrgResult = LazyHook::CallOriginal<HRESULT>(...);
    (*Result) = AMSI_RESULT_CLEAN;  // Force clean regardless of content
    return OrgResult;
}

La démo teste le bypass AMSI en analysant "Invoke-Mimikatz" (une chaîne malveillante connue) et montre qu'elle est classée comme propre.

Détails d'implémentation

Configuration des registres de débogage

root@kitploit:~
Disposition de DR7 (simplifiée) :
- Bits 0,2,4,6 : indicateurs d'activation pour DR0-DR3 (activation locale)
- Bits 16-31 : conditions de point d'arrêt (exécution, écriture, E/S, lecture/écriture)

Le framework configure DR7 pour :

  • Activer les points d'arrêt d'exécution (00b pour la condition d'exécution)
  • Définir une longueur de 1 octet pour la précision du point d'arrêt

Gestion vectorisée des exceptions (VEH)

Le gestionnaire VEH :

  1. Vérifie si l'exception est EXCEPTION_SINGLE_STEP
  2. Compare le pointeur d'instruction (RIP/EIP) avec les hooks enregistrés
  3. Redirige l'exécution vers la fonction de hook en cas de correspondance
  4. Renvoie EXCEPTION_CONTINUE_EXECUTION pour reprendre au niveau du hook

Modèle CallOriginal

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

Exemples de cas d'utilisation

1. Bypass AMSI

La démo montre le hooking de AmsiScanBuffer pour forcer des résultats d'analyse propres :

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

Cela démontre comment le comportement d'un logiciel de sécurité peut être modifié à l'exécution en interceptant des appels API critiques.

2. Surveillance des appels de fonction

Hookez CreateFileA pour journaliser les accès aux fichiers sans modifier le comportement de l'application :

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

Utilisation responsable et avis légal

Ce code démontre des techniques d'évasion avancées pour :

  • La recherche et l'éducation en sécurité
  • Les opérations Red Team dans des environnements autorisés
  • L'analyse de logiciels malveillants et la recherche défensive

⚠️ Avertissement : toute utilisation non autorisée visant à contourner des contrôles de sécurité, modifier le comportement d'un logiciel ou contourner des protections peut violer les lois sur la fraude informatique (CFAA, RGPD, législation équivalente). Ce framework est fourni à des fins éducatives et de recherche en sécurité autorisée uniquement.


Comprendre les techniques offensives permet de construire de meilleures défenses.

Télécharger l’outil