Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
FalconEye — Kernel-mode Windows-Treiber zur Echtzeiterkennung von Prozessinjektionstechniken, einschließlich Shellcode-, DLL- und reflektiver Injektion, mit Syscall-Hooking und Anomalieerkennung. | Kitploit
Tools/GitHubGitHub/rajiv2790/falconeye
DefensivwerkzeugeMalware-AnalyseBinäranalyseEinbruchserkennung
GitHubrajiv2790/falconeye

FalconEye

Kernel-mode Windows-Treiber zur Echtzeiterkennung von Prozessinjektionstechniken, einschließlich Shellcode-, DLL- und reflektiver Injektion, mit Syscall-Hooking und Anomalieerkennung.

Repository anzeigen
31067vor 5 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

FalconEye: Echtzeit-Erkennungssoftware für Windows-Prozess-Injektionen

FalconEye ist eine Windows-Endpunkt-Erkennungssoftware für Echtzeit-Prozess-Injektionen. Es ist ein Kernel-Mode-Treiber, der darauf abzielt, Prozessinjektionen im Moment ihres Auftretens (Echtzeit) zu erkennen. Da FalconEye im Kernel-Modus läuft, bietet es eine stärkere und zuverlässigere Verteidigung gegen Prozessinjektionstechniken, die versuchen, verschiedene User-Mode-Hooks zu umgehen.

Sie können unsere Präsentation auf dem 2021 Blackhat ASIA Arsenal und die Folien einsehen.

Projektübersicht

Erkennungsabdeckung

Die folgende Tabelle zeigt den Implementierungsstatus und die Erkennungslogik für die verschiedenen Prozessinjektionstechniken. WPM steht für WriteProcessMemory. Zum Testen der Erkennung kann auf den Abschnitt 'Referenzen' verwiesen werden.

TechnikStatusErkennungVerwendeter POC
Atombombing✓Hook QueueUserAPC und suche nach Funktionen der GlobalGetAtom-FamiliePinjectra
Instrumentation callback injection✓Erkennen, ob ein neuer Thread aus fließendem Code erstellt wirdhttps://github.com/antonioCoco/Mapping-Injection
Reflective DLL Injection✓Erkennen, ob ein neuer Thread aus fließendem Code erstellt wird und ob ein PE-Header in das Opfer geschrieben wirdMInjector
PROPagate✓Hook SetProp, um die Adresse der geschriebenen Eigenschaft zu erhalten, und korreliere mit vorherigen WPM-Aufrufen, um die Adresse von fließendem Code zu erhaltenPinjectra
Process Hollowing✓Erkannt durch in den Zielprozessspeicher geschriebenen PE-HeaderMInjector
CreateRemoteThread with LoadLibrary✓Neuer Thread mit Startadresse, die auf LoadLibrary zeigt. Die MInjector-Version schreibt auch den DLL-Pfad mittels WPM, was ebenfalls erkannt wirdMInjector, Pinjectra
CreateRemoteThread with MapViewOfFile✓Erkennen, ob ein neuer Thread aus fließendem Code erstellt wirdPinjectra
Suspend-Inject-Resume✓Erkennen, ob ein neuer Thread aus fließendem Code erstellt wird (MInjector). DLL-Pfad wird via WPM geschrieben (MInjector). Erkennen, ob ein Kontext auf einen zuvor ausgesetzten Thread gesetzt wird (Pinjectra)MInjector, Pinjectra
QueueUserAPC✓DLL-Pfad wird via WPM geschriebenMInjector
QueueUserAPC with memset (Stackbombing)✓Hook QueueUserAPC und suche nach memsetPinjectra
SetWindowLong (Extra window memory injection)✓Hook SetWindowLong, um die Adresse des geschriebenen Funktionszeigers zu erhalten, und korreliere mit vorherigen WPM-Aufrufen, um die Adresse von fließendem Code zu erhaltenPinjectra
Unmap + Overwrite✓Warnen, wenn der Angreiferprozess ntdll aus dem Opfer entferntPinjectra
Kernel Ctrl Table✓Erkennen, ob WPM das KernelCallbackTable-Feld im PEB des Opfers überschreibthttps://github.com/odzhan/injection/blob/master/kct

Architekturübersicht

alt text

  1. Der Treiber ist ein On-Demand-Ladetreiber
  2. Die Initialisierung umfasst das Einrichten von Callbacks und Syscall-Hooks über libinfinityhook
  3. Die Callbacks verwalten eine Karte von PIDs, die aus prozessübergreifenden Aktivitäten wie OpenProcess aufgebaut wird, aber nicht auf OpenProcess beschränkt ist
  4. Nachfolgende Callbacks und Syscall-Hooks verwenden diese PID-Karte, um das Rauschen bei der Verarbeitung zu reduzieren. Als Teil der Rauschunterdrückung filtern Syscall-Hooks Aktivitäten im selben Prozess heraus.
  5. Die Erkennungslogik ist in Unterkategorien unterteilt: zustandslos (Beispiel: Atombombing), zustandsbehaftet (Unmap+Overwrite) und Floating Code (Shellcode aus mehreren Techniken)
  6. Für zustandsbehaftete Erkennungen zeichnen Syscall-Hooks eine ActionHistory auf, die als Ringpuffer implementiert ist. Z.B. zeichnet sie alle NtWriteVirtualMemory-Aufrufe auf, bei denen der aufrufende Prozess vom Zielprozess verschieden ist.
  7. Die Erkennungslogik verfügt über gemeinsame Anomalieerkennungsfunktionen wie die Erkennung von fließendem Code und die Erkennung von Shellcode-Triggern in entfernten Prozessen. Sowohl Callbacks als auch Syscall-Hooks rufen diese gemeinsame Funktionalität für die eigentliche Erkennung auf.

HINWEIS: Unser Fokus lag auf der Erkennung und nicht auf der Erstellung einer leistungsfähigen Erkennungsengine. Wir werden diese Bemühungen auch nach der BlackHat-Präsentation fortsetzen.

Dateien

root@kitploit:~
.
├── src 
│   ├── FalconEye ---------------------------# FalconEye Benutzer- und Kernelraum
│   └── libinfinityhook ---------------------# Kernel-Hook-Implementierung
├── 2021BHASIA_FalconEye.pdf
└── README.md

Erste Schritte

Voraussetzungen

  1. Windows 10 Build 1903/1909
  2. Microsoft Visual Studio 2019 und höher
  3. Virtualisierungssoftware wie VmWare, Hyper-V (Optional)

Installation

Erstellen

  1. Öffnen Sie die Projektmappe mit Visual Studio 2019
  2. Wählen Sie x64 als Build-Plattform
  3. Erstellen Sie die Projektmappe. Dies sollte die Binärdatei FalconEye.sys unter src\kernel\FalconEye\x64\Debug oder src\kernel\FalconEye\x64\Release erzeugen

Testmaschineneinrichtung

  1. Installieren Sie Windows 10 Build 1903/1909 in einer VM
  2. Konfigurieren Sie die VM zum Testen von nicht signierten Treibern
  • Verwenden Sie bcdedit, um Integritätsprüfungen zu deaktivieren: BCDEDIT /set nointegritychecks ON
  1. Führen Sie DbgView von Sysinternals in der VM aus oder starten Sie eine Debugging-Verbindung mit WinDbg.

Verwendung

  1. Kopieren Sie FalconEye.sys auf die Testmaschine (Windows 10 VM)
  2. Laden Sie FalconEye.sys als On-Demand-Ladetreiber mit OSR Loader oder ähnlichen Werkzeugen
  3. Führen Sie Injektionstestwerkzeuge wie pinjectra, minjector oder andere Beispiele aus
  4. Überwachen Sie Debug-Protokolle entweder über WinDbg oder DbgView

Referenzen

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

Lizenzbedingungen

FalconEye ist unter der Open-Source-Lizenz Apache 2.0 lizenziert.

Tool herunterladen
USERDATA✓Prüfen, ob die WPM-Zieladresse im Bereich von conhost.exe liegt. Wenn ja, prüfen, ob relevante Funktionszeiger von conhost mit zuvor gespeicherter WPM-Adresse übereinstimmenhttps://github.com/odzhan/injection/blob/master/conhost
Ctrl-inject✓Erkennen, ob der Angreifer WPM im Bereich der KernelBase.dll des Opfers durchführtPinjectra
ALPC Callback✓Extrahiere die Opfer-PID in NtConnectPort-Aufrufen an den ALPC-Port. Für das Angreifer-Opfer-PID-Tupel überprüfe vorherige WPM-Aufrufe und wende Floating-Code-Erkennung anPinjectra
WNF Callback✓WPM gefolgt von UpdateWNFStateData-Aufrufhttps://github.com/odzhan/injection/tree/master/wnf
SetWindowsHook✓Speichere Modulpfade, die im NtUserSetWindowsHookEx-Hook registriert sind. Später, wenn ein Modul, das diesem Pfad entspricht, in einem anderen Prozess geladen wird, generiere eine WarnungMInjector
GhostWriting✓Erkennen, ob ein Kontext (NtSetContextThread wird aufgerufen) auf einen zuvor ausgesetzten Thread gesetzt wirdPinjectra
Service Control✓WPM überschreibt die Service-ID eines Prozesses (Dienstes)https://github.com/odzhan/injection/tree/master/svcctrl
Shellcode injection✓Neuer Thread, gestartet aus fließendem Code. DLL-Pfad wird von WPM geschriebenMInjector
Image Mapping✓Thread gestartet aus fließendem Code. PE-Header wird von WPM geschrieben. DLL-Pfad wird von WPM geschriebenMInjector
Thread Reuse✓Thread gestartet aus fließendem Code. DLL-Pfad wird von WPM geschriebenMInjector