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
donut — Generiert positionsunabhängigen Shellcode für x86, x64 oder AMD64+x86, der .NET-Assemblies, PE-Dateien und andere Windows-Payloads aus dem Speicher lädt und mit Parametern ausführt | Kitploit
Tools/GitHubGitHub/thewover/donut
SpeicherforensikPayload-GenerierungExploitationIDS/IPS-UmgehungShellcodePost-ExploitationPenetrationstestsRed TeamingShellcode-GenerierungPayload-EntwicklungTop in IDS/IPS-Umgehung Nr.7
4.7k75342vor 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
Top in Payload-Entwicklung Nr.1
Top in Payload-Generierung Nr.2
Top in Shellcode Nr.1
Top in Shellcode-Generierung Nr.2
GitHubthewover/donut

donut

Generiert positionsunabhängigen Shellcode für x86, x64 oder AMD64+x86, der .NET-Assemblies, PE-Dateien und andere Windows-Payloads aus dem Speicher lädt und mit Parametern ausführt

Repository anzeigen

Issues Contributors Stars Forks License Chat Github All Releases Twitter URL

Donut-Logo

Aktuelle Version: v1.1

Inhaltsverzeichnis

  1. Einführung
  2. Funktionsweise
  3. Erstellung
  4. Verwendung
  5. Unterprojekte
  6. Entwicklung mit Donut
  7. Fragen und Diskussionen
  8. Haftungsausschluss

1. Einführung

Donut ist ein positionsunabhängiger Code, der die In-Memory-Ausführung von VBScript-, JScript-, EXE-, DLL-Dateien und .NET-Assemblys ermöglicht. Ein mit Donut erstelltes Modul kann entweder von einem HTTP-Server bereitgestellt oder direkt in den Loader selbst eingebettet werden. Das Modul wird optional mit der Chaskey-Blockchiffre und einem 128-Bit-zufällig generierten Schlüssel verschlüsselt. Nachdem die Datei geladen und im Speicher ausgeführt wurde, wird die ursprüngliche Referenz gelöscht, um Speicherscanner abzuschrecken. Der Generator und Loader unterstützen die folgenden Funktionen:

  • Komprimierung von Eingabedateien mit aPLib und LZNT1, Xpress, Xpress Huffman über RtlCompressBuffer.
  • Verwendung von Entropie für API-Hashes und Generierung von Zeichenfolgen.
  • 128-Bit-symmetrische Verschlüsselung von Dateien.
  • Überschreiben nativer PE-Header.
  • Speichern nativer PE-Dateien im MEM_IMAGE-Speicher.
  • Patchen der Antimalware Scan Interface (AMSI) und der Windows Lockdown Policy (WLDP).
  • Patchen der Ereignisablaufverfolgung für Windows (ETW).
  • Patchen der Befehlszeile für EXE-Dateien.
  • Patchen der exit-bezogenen API, um die Beendigung des Hostprozesses zu vermeiden.
  • Mehrere Ausgabeformate: C, Ruby, Python, PowerShell, Base64, C#, Hexadezimal und UUID-String.

Es gibt dynamische und statische Bibliotheken für Linux und Windows, die in Ihre eigenen Projekte integriert werden können. Es gibt auch ein Python-Modul, über das Sie in Building and using the Python extension mehr erfahren können.

2. Funktionsweise

Donut enthält individuelle Loader für jeden unterstützten Dateityp. Für .NET EXE/DLL-Assemblys verwendet Donut die Unmanaged CLR Hosting API, um die Common Language Runtime zu laden. Sobald die CLR in den Hostprozess geladen ist, wird eine neue Anwendungsdomäne erstellt, um die Ausführung von Assemblys in entsorgbaren AppDomains zu ermöglichen. Wenn die AppDomain bereit ist, wird die .NET-Assembly über die Methode AppDomain.Load_3 geladen. Schließlich wird der Einstiegspunkt für EXEs oder die vom Benutzer festgelegte öffentliche Methode für DLLs mit allen zusätzlichen Parametern aufgerufen. Siehe MSDN für die Dokumentation zur Unmanaged CLR Hosting API. Für ein eigenständiges Beispiel eines CLR-Hosts siehe Code hier.

VBScript- und JScript-Dateien werden über die IActiveScript-Schnittstelle ausgeführt. Es gibt auch minimale Unterstützung für einige der Methoden des Windows Script Host (wscript/cscript). Für ein eigenständiges Beispiel siehe Code hier. Für eine detailliertere Beschreibung lesen Sie: In-Memory Execution of JavaScript, VBScript, JScript and XSL

Nicht verwaltete oder native EXE/DLL-Dateien werden mit einem benutzerdefinierten PE-Loader ausgeführt, der Verzögerte Importe, TLS und das Patchen der Befehlszeile unterstützt. Es werden nur Dateien mit Verschiebeinformationen unterstützt. Lesen Sie In-Memory Execution of DLL für weitere Informationen.

Der Loader kann AMSI und WLDP deaktivieren, um die Erkennung von bösartigen Dateien, die im Speicher ausgeführt werden, zu erschweren. Weitere Informationen finden Sie unter: How Red Teams Bypass AMSI and WLDP for .NET Dynamic Code. Er unterstützt auch die Dekomprimierung von Dateien im Speicher mittels aPLib oder der RtlDecompressBuffer-API. Lesen Sie Data Compression für weitere Informationen.

Seit v1.0 wird auch ETW umgangen. Wie bei AMSI/WLDP handelt es sich um ein modulares System, das es Ihnen ermöglicht, die Standardumgehung durch Ihre eigene zu ersetzen. Die Standardumgehung basiert auf Forschungsergebnissen von XPN. Lesen Sie Hiding your .NET - ETW für weitere Informationen.

Standardmäßig überschreibt der Loader die PE-Header von nicht verwalteten PEs (von der Basisadresse bis zu `IMAGE_OPTIONAL_HEADER.SizeOfHeaders`). Wenn kein Täuschungsmodul verwendet wird (Modulüberlagerung), werden die PE-Header auf Null gesetzt. Wenn ein Täuschungsmodul verwendet wird, werden die PE-Header des Täuschungsmoduls verwendet, um die des Nutzlastmoduls zu überschreiben. Dies dient dazu, eine Erkennung durch Vergleich der PE-Header von Modulen im Speicher mit der Datei auf der Festplatte zu erschweren. Der Benutzer kann verlangen, dass alle PE-Header in ihrem ursprünglichen Zustand erhalten bleiben. Dies ist hilfreich für Szenarien, in denen das Nutzlastmodul auf seine PE-Header zugreifen muss, z. B. beim Nachschlagen eingebetteter PE-Ressourcen.

Für einen detaillierten Leitfaden zur Verwendung des Generators und wie Donut die Arbeitsweise beeinflusst, lesen Sie Donut - Injecting .NET Assemblies as Shellcode. Weitere Informationen zum Loader finden Sie unter Loading .NET Assemblies From Memory.

Diejenigen, die mehr über die Interna erfahren möchten, sollten die Entwicklernotizen lesen.

3. Erstellung

Tool herunterladen