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
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
31067il 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

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

root@kitploit:~
.
├── 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)

Installation

Compilation

  1. Ouvrez la solution avec Visual Studio 2019
  2. Sélectionnez x64 comme plateforme de compilation
  3. Compilez la solution. Cela devrait générer le binaire FalconEye.sys dans src\kernel\FalconEye\x64\Debug ou src\kernel\FalconEye\x64\Release

Configuration de la machine de test

  1. Installez Windows 10 Build 1903/1909 dans une VM
  2. Configurez la VM pour tester un pilote non signé
  • Using bcdedit, disable integrity checks : BCDEDIT /set nointegritychecks ON
  1. Lancez DbgView de sysinternals dans la VM ou démarrez une connexion de débogage avec WinDbg.

Utilisation

  1. Copiez FalconEye.sys sur la machine de test (VM Windows 10)
  2. Chargez FalconEye.sys en tant que pilote chargé 'à la demande' à l'aide d'OSR Loader ou d'outils similaires
  3. Exécutez des outils de test d'injection tels que pinjectra, minjector ou d'autres échantillons
  4. Surveillez les journaux de débogage soit via WinDbg, soit via DbgView

Références

InfinityHook, 2019

Itzik Kotler and Amit Klein. Process Injection Techniques - Gotta Catch Them All, Blackhat USA Briengs, 2019

Pinjectra, 2019

Mapping-Injection, 2020

Atombombing: Brand new code injection for windows, 2016

Propagate - a new code injection trick, 2017

Windows process injection: Extra window bytes, 2018

Pavel Asinovsky. Diving into zberp's unconventional process injection technique, 2016

Rotem Kerner. Ctrl-inject, 2018

Windows process injection: Consolewindowclass, 2018

Windows process injection: Windows notication facility, 2018

A paradox: Writing to another process without openning it nor actually writing to it, 2007

Windows process injection: Service control handler, 2018

Marcos Oviedo. Memhunter - Automated hunting of memory resident malware at scale. Defcon Demo Labs, 2019

Conditions de licence

FalconEye vous est concédé sous la licence open source Apache 2.0.

Télécharger l’outil
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