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
LazyHook — Umgehen Sie die Verhaltensanalyse, indem Sie bösartigen Code in vertrauenswürdigen Microsoft-Aufrufstapeln ausführen, Patchless Hooking Bibliothek IAT/EAT. | Kitploit
Tools/GitHubGitHub/hwbp/lazyhook
ExploitationIDS/IPS-UmgehungMalware-AnalyseLernen & BildungRed TeamingAnti-Bot
GitHubhwbp/lazyhook

LazyHook

Umgehen Sie die Verhaltensanalyse, indem Sie bösartigen Code in vertrauenswürdigen Microsoft-Aufrufstapeln ausführen, Patchless Hooking Bibliothek IAT/EAT.

Repository anzeigen
14825vor 8 MonatenVon 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

Übersicht

LazyHook ist ein heimliches API-Hooking-Framework, das Host Intrusion Prevention Systems (HIPS) durch Call-Stack-Spoofing umgeht. Durch die Nutzung von CPU-Level-Hardware-Breakpoints und Vectored Exception Handling wird beliebiger Code so ausgeführt, als stamme er von vertrauenswürdigen, Microsoft-signierten Modulen – und täuscht damit Verhaltensanalyse-Engines, die auf Call-Stack-Inspektion und Modulherkunftsprüfung angewiesen sind, vollständig.

Umgehen Sie Verhaltensanalysen, indem Sie schädlichen Code innerhalb vertrauenswürdiger Microsoft-Call-Stacks ausführen
Nutzt Hardware-Breakpoints + VEH, um legitime Funktionen zu kapern und Modulherkünfte zu fälschen

Das Problem: Moderne Sicherheitssoftware

Host Intrusion Prevention Systems (HIPS) und Verhaltensanalyse-Engines überwachen Anwendungen durch:

  • Call-Stack-Analyse: Verfolgung der Herkunft und des Ablaufs von API-Aufrufen
  • Modulherkunftsprüfung: Überprüfung, ob verdächtiges Verhalten von vertrauenswürdigen Modulen ausgeht
  • API-Mustererkennung: Erkennung bösartiger Sequenzen (z. B. VirtualAlloc → WriteProcessMemory → CreateRemoteThread)
  • Rückkehradressenvalidierung: Sicherstellung, dass Rücksprungadressen auf legitime Codeabschnitte zeigen

Systeme wie Kaspersky System Watcher, Windows Defender, Cylance und CrowdStrike verwenden alle Variationen dieser Techniken.

Die Lösung: Spoofing vertrauenswürdiger Call-Stacks

Durch das Kapern einer Funktion in einer Microsoft-signierten Assembly (z. B. System.Windows.Forms.dll, user32.dll) können wir beliebige Logik innerhalb eines Call-Stacks ausführen, der vollständig legitim erscheint.

Hinweis: Es ist möglich, einen JmpHook durchzuführen, der MsgBox hookt – und danach direkt zu Ihrem benutzerdefinierten Code springt. LazyHook macht das nicht.

Warum das funktioniert:

  1. Die gehookedte Funktion befindet sich in einer vertrauenswürdigen, digital signierten Microsoft-DLL
  2. Wenn Ihre Payload ausgeführt wird, zeigt der Call-Stack das vertrauenswürdige Modul als Aufrufer an
  3. Der Hardware-Breakpoint hinterlässt keine Speichermodifikationen, daher bestehen Integritätsprüfungen

Die Sicherheitssoftware sieht das zweite Szenario und denkt: "MessageBoxA aus user32.dll ruft Windows-APIs auf? Das ist normales Verhalten."

So funktioniert es

root@kitploit:~
┌─────────────────────────────────────────────────────────┐
│  1. Ziel-Funktionsaufruf                                │
│     ↓                                                    │
│  2. CPU-Debug-Register werden ausgelöst (DR0-DR3)       │
│     ↓                                                    │
│  3. EXCEPTION_SINGLE_STEP wird ausgelöst                │
│     ↓                                                    │
│  4. VEH-Handler fängt die Ausnahme ab                   │
│     ↓                                                    │
│  5. Ausführung wird zur Hook-Funktion umgeleitet        │
│     ↓                                                    │
│  6. CallOriginal() deaktiviert vorübergehend den BP     │
│     ↓                                                    │
│  7. Ursprüngliche Funktion wird ausgeführt              │
│     ↓                                                    │
│  8. Breakpoint wird wieder aktiviert                    │
└─────────────────────────────────────────────────────────┘

Hook-Typen

IAT (Import Address Table) Hooking

Fängt importierte Funktionen ab, indem deren Adresse in der IAT lokalisiert und ein Hardware-Breakpoint gesetzt wird. Dadurch wird der spezifische Import in Ihrem Prozess gehooked.

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

EAT (Export Address Table) Hooking

Hooked global exportierte Funktionen einer DLL, indem deren Adresse über die Exporttabelle aufgelöst wird. Dies betrifft alle Aufrufe dieses Exports.

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

Entry.cpp-Demonstration

Die enthaltene Demo zeigt drei praktische Szenarien:

1. MessageBoxA IAT Hook

Demonstriert IAT-Hooking durch Abfangen von MessageBoxA-Aufrufen und Ändern der angezeigten Nachricht:

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

2. CreateFileA EAT Hook (auskommentiertes Beispiel)

Zeigt, wie Dateioperationen durch Protokollieren von CreateFileA-Aufrufen überwacht werden können:

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

3. AMSI-Bypass via AmsiScanBuffer-Hook

Demonstriert die Umgehung von Sicherheitssoftware, indem alle AMSI-Scans gezwungen werden, saubere Ergebnisse zu liefern:

root@kitploit:~
HRESULT WINAPI HookAmsiScanBuffer(...)
{
    printf("[*] AmsiScanBuffer gehooked! Umgehe...\n");
    HRESULT OrgResult = LazyHook::CallOriginal<HRESULT>(...);
    (*Result) = AMSI_RESULT_CLEAN;  // Unabhängig vom Inhalt als sauber erzwingen
    return OrgResult;
}

Die Demo testet den AMSI-Bypass, indem sie "Invoke-Mimikatz" (einen bekannten bösartigen String) scannt und zeigt, dass er als sauber eingestuft wird.

Implementierungsdetails

Debug-Register-Konfiguration

root@kitploit:~
DR7-Layout (vereinfacht):
- Bits 0,2,4,6: Aktivierungsflags für DR0-DR3 (lokale Aktivierung)
- Bits 16-31: Breakpoint-Bedingungen (Ausführen, Schreiben, IO, R/W)

Das Framework konfiguriert DR7 wie folgt:

  • Aktiviert Ausführungs-Breakpoints (00b für Ausführungsbedingung)
  • Setzt 1-Byte-Länge für Breakpoint-Präzision

Vectored Exception Handling

Der VEH-Handler:

  1. Prüft, ob die Ausnahme EXCEPTION_SINGLE_STEP ist
  2. Vergleicht den Instruction-Pointer (RIP/EIP) mit registrierten Hooks
  3. Leitet die Ausführung zur Hook-Funktion um, wenn eine Übereinstimmung gefunden wird
  4. Gibt EXCEPTION_CONTINUE_EXECUTION zurück, um am Hook fortzufahren

CallOriginal-Muster

root@kitploit:~
template<typename Ret, typename... Args>
Ret CallOriginal(VehHookState* State, Args... args)
{
    RemoveHardwareBreakpoint(State->DrIndex);  // Vorübergehend deaktivieren
    Ret Result = ((FuncType)State->OriginalFunction)(args...);
    SetHardwareBreakpoint(State->OriginalFunction, State->DrIndex);  // Wieder aktivieren
    return Result;
}

Beispielhafte Anwendungsfälle

1. AMSI-Bypass

Die Demo zeigt das Hooking von AmsiScanBuffer, um saubere Scanergebnisse zu erzwingen:

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

Dies demonstriert, wie das Verhalten von Sicherheitssoftware zur Laufzeit durch Abfangen kritischer API-Aufrufe geändert werden kann.

2. Überwachung von Funktionsaufrufen

Hooked CreateFileA, um Dateizugriffe zu protokollieren, ohne das Anwendungsverhalten zu ändern:

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

Verantwortungsvolle Nutzung & rechtlicher Hinweis

Dieser Code demonstriert fortgeschrittene Umgehungstechniken für:

  • Sicherheitsforschung und -bildung
  • Red-Team-Operationen in autorisierten Umgebungen
  • Malware-Analyse und defensive Forschung

⚠️ Warnung: Die unbefugte Nutzung zur Umgehung von Sicherheitskontrollen, Änderung des Softwareverhaltens oder Umgehung von Schutzmaßnahmen kann gegen Computerbetrugsgesetze (CFAA, DSGVO, gleichwertige Gesetzgebung) verstoßen. Dieses Framework wird ausschließlich für Bildungszwecke und autorisierte Sicherheitsforschung bereitgestellt.


Das Verständnis offensiver Techniken führt zu besseren Abwehrmechanismen.

Tool herunterladen