Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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
1702112vor 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
  • Keine Print-Anweisungen in Bibliotheksfunktionen
  • 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:

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

OPSEC-Branch:

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

Beispielverwendung in Ihrem Code:

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:

cargo build --release

Ausführen:

# 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
Tool herunterladen