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
moonwalk — DLL-Basisadressen ohne PEB-WALK finden | Kitploit
Tools/GitHubGitHub/teach2breach/moonwalk
Post-ExploitationBinäranalyseLernen & BildungRed TeamingPayload-Entwicklung
GitHubteach2breach/moonwalk

moonwalk

DLL-Basisadressen ohne PEB-WALK finden

Repository anzeigen
170212vor 1 JahrVon 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

moonwalk: DLL-Basisadressen-Finder

Dieses Rust-Bibliotheks- und CLI-Tool demonstriert eine alternative Methode, um die Basisadresse geladener DLLs zu finden, ohne einen Prozess-Umgebungsblock (PEB)-Walk durchzuführen. Diese Technik ist besonders nützlich in Szenarien, in denen PEB-Walking erkannt oder blockiert werden könnte.

Unterschiede zwischen den Branches

Dieses Repository enthält zwei Branches mit unterschiedlichen Ansätzen:

Hauptbranch

  • Verwendet die winapi-Crate und VirtualQuery zur Speichervalidierung
  • Bibliotheksfunktionen (lib.rs) enthalten keine Print-Anweisungen für eine saubere Integration
  • CLI-Tool (main.rs) enthält Debug-Ausgaben als Proof of Concept
  • Gut zum Lernen und Verstehen der Technik

OPSEC-Branch

  • Keine externen Abhängigkeiten – vollständig eigenständig
  • Keine Windows-API-Aufrufe – nutzt direkten Speicherzugriff mit Ausnahmebehandlung anstelle von VirtualQuery
  • in Bibliotheksfunktionen
Tool herunterladen
Keine Print-Anweisungen
  • Verbesserte Tarnung – macht keine API-Aufrufe
  • Besser für Implantate/Tools – hinterlässt weniger Spuren und ist schwerer zu erkennen
  • Beide Branches sind sicher verwendbar, aber der OPSEC-Branch bietet zusätzliche operative Sicherheitsvorteile für Szenarien, in denen API-Aufrufe überwacht oder blockiert werden könnten.

    Wie es funktioniert

    Das Programm verwendet einen Stack-Walking-Ansatz, um DLLs zu lokalisieren:

    1. Zugriff auf den Thread-Umgebungsblock (TEB):

      • Verwendet Inline-Assembly, um den TEB-Zeiger aus dem GS-Segmentregister (GS:[0x30]) zu lesen
      • Ruft die Stack-Basis (GS:[0x08]) und das Stack-Limit (GS:[0x10]) aus dem TEB ab
    2. Stack-Walking:

      • Startet am aktuellen Stack-Zeiger (RSP)
      • Geht den Stack hinauf und sucht nach Rücksprungadressen
      • Prüft jede Adresse auf ausführbaren Speicher
      • Hauptbranch: Verwendet VirtualQuery, um Speicherregionen zu validieren
      • OPSEC-Branch: Verwendet direkten Speicherzugriff mit Ausnahmebehandlung
    3. Modulidentifikation:

      • Prüft für jede potenzielle Rücksprungadresse, ob sie auf ausführbaren Speicher zeigt
      • Wenn ausführbarer Speicher gefunden wird, geht es rückwärts, um den PE-Header zu finden
      • Validiert das Modul durch Prüfung von:
        • MZ-Signatur (DOS-Header)
        • PE-Signatur
        • DLL-Eigenschaften
        • 64-Bit-Architektur
        • Modulname aus dem Exportverzeichnis
    4. Validierung:

      • Verifiziert, dass das Modul die Ziel-DLL ist, indem der Name im Exportverzeichnis geprüft wird
      • Bestätigt, dass alle PE-Header-Strukturen gültig sind

    Warum dieser Ansatz?

    Traditionelle Methoden zum Auffinden von DLLs beinhalten oft das Durchlaufen der Modulliste des PEB. Obwohl effektiv, kann dieser Ansatz:

    • Von Sicherheitssoftware erkannt werden
    • In bestimmten Umgebungen blockiert werden

    Diese Stack-Walking-Methode bietet eine Alternative, die:

    • Nicht auf den PEB angewiesen ist
    • In Umgebungen funktioniert, in denen PEB-Walking blockiert ist
    • OPSEC-Branch: Macht keine API-Aufrufe

    Anforderungen

    • Rust (Nightly-Toolchain)
    • Windows x64
    • Hauptbranch: winapi-Crate
    • OPSEC-Branch: Keine externen Abhängigkeiten

    Verwendung

    Als Bibliothek

    Fügen Sie zu Ihrer Cargo.toml hinzu:

    Hauptbranch:

    root@kitploit:~
    [dependencies]
    moonwalk = { git = "https://github.com/Teach2Breach/moonwalk.git" }
    

    OPSEC-Branch:

    root@kitploit:~
    [dependencies]
    moonwalk = { git = "https://github.com/Teach2Breach/moonwalk.git", branch = "opsec" }
    

    Beispielverwendung in Ihrem Code:

    root@kitploit:~
    use moonwalk::find_dll_base;
    
    fn main() {
        // Find ntdll.dll
        if let Some(ntdll_base) = find_dll_base("ntdll.dll") {
            println!("ntdll.dll base: 0x{:X}", ntdll_base);
        }
    
        // Case-insensitive, .dll extension optional
        if let Some(kernel32_base) = find_dll_base("KeRNEl32") {
            println!("kernel32.dll base: 0x{:X}", kernel32_base);
        }
    }
    

    Als CLI-Tool

    Build:

    root@kitploit:~
    cargo build --release
    

    Ausführen:

    root@kitploit:~
    # Find ntdll.dll (default)
    cargo run --release
    
    # Find specific DLL (case insensitive, .dll extension optional)
    cargo run --release kernel32.dll
    cargo run --release KeRNEl32
    cargo run --release USER32
    

    Beispiel

    Print-Anweisungen sind nicht mehr enthalten. Dieses Bild ist zu Bildungszwecken enthalten.

    Moonwalk DLL-Basisadressen-Finder Demo

    Hinweise

    • DLL-Namen sind case-insensitiv und die .dll-Erweiterung ist optional
    • Funktioniert nur mit DLLs, die sich im Aufrufstack befinden
    • Hauptbranch: Verwendet VirtualQuery zur sicheren Speicherzugriffsvalidierung
    • OPSEC-Branch: Verwendet direkten Speicherzugriff mit Ausnahmebehandlung für maximale Tarnung
    • Beide Branches haben saubere Bibliotheksschnittstellen ohne Debug-Ausgabe