Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
FalconEye — Pilote Windows en mode noyau pour la détection en temps réel des techniques d'injection de processus, y compris l'injection de shellcode, de DLL et l'injection réflexive, avec hooking d'appels système et détection d'anomalies. | Kitploit
Outils/GitHubGitHub/rajiv2790/falconeye
Outils DéfensifsAnalyse de MalwareAnalyse de BinairesDétection d'Intrusion
GitHubrajiv2790/falconeye

FalconEye

Pilote Windows en mode noyau pour la détection en temps réel des techniques d'injection de processus, y compris l'injection de shellcode, de DLL et l'injection réflexive, avec hooking d'appels système et détection d'anomalies.

Voir le dépôt
3106754il y a 5 ansVé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

FalconEye : Logiciel de détection en temps réel des injections de processus Windows

FalconEye est un logiciel de détection pour terminaux Windows destiné aux injections de processus en temps réel. C'est un pilote en mode noyau qui vise à détecter les injections de processus au moment où elles se produisent (temps réel). Puisque FalconEye s'exécute en mode noyau, il offre une défense plus solide et fiable contre les techniques d'injection de processus qui tentent de contourner divers hooks en mode utilisateur.

Vous pouvez consulter notre présentation au 2021 Blackhat ASIA Arsenal et les diapositives.

Aperçu du projet

Couverture de détection

Le tableau ci-dessous présente l'état d'implémentation et la logique de détection pour les différentes techniques d'injection de processus. WPM signifie WriteProcessMemory. Pour tester la détection, on peut se référer à la section des références.

TechniqueStatutDétectionPOC Utilisé
Atombombing✓Hooking de QueueUserAPC et recherche de la famille de fonctions GlobalGetAtomPinjectra
Instrumentation callback injection✓Détection si un nouveau thread est créé à partir d'un code flottanthttps://github.com/antonioCoco/Mapping-Injection
Reflective DLL Injection✓Détection si un nouveau thread est créé à partir d'un code flottant et si l'en-tête PE est écrit dans la victimeMInjector
PROPagate✓Hooking de SetProp pour obtenir l'adresse de la propriété en cours d'écriture et corrélation avec les appels WPM précédents pour obtenir l'adresse du code flottantPinjectra
Process Hollowing✓Détecté via l'écriture de l'en-tête PE dans la mémoire du processus cibleMInjector
CreateRemoteThread with LoadLibrary✓Nouveau thread avec adresse de démarrage pointant vers LoadLibrary. La version MInjector écrit également le chemin de la DLL via WPM, ce qui est aussi détectéMInjector, Pinjectra
CreateRemoteThread with MapViewOfFile✓Détection si un nouveau thread est créé à partir d'un code flottantPinjectra
Suspend-Inject-Resume✓Détection si un nouveau thread est créé à partir d'un code flottant (MInjector). Chemin de la DLL écrit via WPM (MInjector). Détection si le contexte est défini sur un thread précédemment suspendu (Pinjectra)MInjector, Pinjectra
QueueUserAPC✓Chemin de la DLL écrit via WPMMInjector
QueueUserAPC with memset (Stackbombing)✓Hooking de QueueUserAPC et recherche de memsetPinjectra
SetWindowLong (Extra window memory injection)✓Hooking de SetWindowLong pour obtenir l'adresse du pointeur de fonction en cours d'écriture et corrélation avec les appels WPM précédents pour obtenir l'adresse du code flottantPinjectra
Unmap + Overwrite✓Alerte si le processus attaquant démape ntdll de la victimePinjectra
Kernel Ctrl Table✓Détection si WPM écrase le champ KernelCallbackTable dans le PEB de la victimehttps://github.com/odzhan/injection/blob/master/kct
USERDATA✓Vérification si l'adresse cible de WPM se trouve dans la plage de conhost.exe. Si c'est le cas, vérification des pointeurs de fonction pertinents de conhost correspondant à l'adresse WPM précédemment stockéehttps://github.com/odzhan/injection/blob/master/conhost
Ctrl-inject✓Détection si l'attaquant effectue un WPM dans la plage de KernelBase.dll de la victimePinjectra
ALPC Callback✓Extraction du pid de la victime dans les appels NtConnectPort vers le port ALPC. Pour le tuple pid attaquant-victime, vérification des appels WPM antérieurs et application de la détection de code flottantPinjectra
WNF Callback✓WPM suivi d'un appel UpdateWNFStateDatahttps://github.com/odzhan/injection/tree/master/wnf
SetWindowsHook✓Enregistrement des chemins de modules enregistrés dans le hook NtUserSetWindowsHookEx. Plus tard, lorsqu'un module correspondant à ce chemin se charge dans un processus différent, génération d'une alerteMInjector
GhostWriting✓Détection si le contexte est défini (NtSetContextThread est appelé) sur un thread précédemment suspenduPinjectra
Service Control✓WPM écrasant l'ID de service d'un processus (service)https://github.com/odzhan/injection/tree/master/svcctrl
Shellcode injection✓Nouveau thread démarré à partir d'un code flottant. Chemin de la DLL écrit par WPMMInjector
Image Mapping✓Thread démarré à partir d'un code flottant. En-tête PE écrit par WPM. Chemin de la DLL écrit par WPMMInjector
Thread Reuse✓Thread démarré à partir d'un code flottant. Chemin de la DLL écrit par WPMMInjector

Architecture Générale

alt text

  1. Le pilote est un pilote chargé à la demande
  2. L'initialisation inclut la mise en place de callbacks et de hooks d'appels système via libinfinityhook
  3. Les callbacks maintiennent une carte des Pids construite à partir d'activités inter-processus telles que OpenProcess, mais sans s'y limiter.
  4. Les callbacks et hooks d'appels système ultérieurs utilisent cette carte de Pids pour réduire le bruit dans le traitement. Dans le cadre de la réduction du bruit, les hooks d'appels système filtrent les activités du même processus.
  5. La logique de détection est divisée en sous-catégories : sans état (exemple : Atombombing), avec état (Unmap+Overwrite) et code flottant (shellcode de multiples techniques).
  6. Pour les détections avec état, les hooks d'appels système enregistrent un historique d'actions (ActionHistory) implémenté comme un tampon circulaire. Par exemple, il enregistre tous les appels NtWriteVirtualMemory où le processus appelant est différent du processus cible.
  7. La logique de détection dispose de fonctionnalités communes de détection d'anomalies telles que la détection de code flottant et la détection de déclencheurs de shellcode dans les processus distants. Les callbacks et les hooks d'appels système invoquent cette fonctionnalité commune pour la détection réelle.

NOTE : Notre objectif a été la détection et non la création d'un moteur de détection performant. Nous poursuivrons ces efforts après la présentation BlackHat.

Fichiers

.
├── src 
│   ├── FalconEye ---------------------------# FalconEye user and kernel space
│   └── libinfinityhook ---------------------# Kernel hook implementation
├── 2021BHASIA_FalconEye.pdf
└── README.md

Pour commencer

Prérequis

  1. Windows 10 Build 1903/1909
  2. Microsoft Visual Studio 2019 et ultérieur
  3. Logiciel de virtualisation tel que VMWare, Hyper-V (facultatif)
Télécharger l’outil