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
EXCELntDonut — Excel 4.0 (XLM) Makro-Generator zum Injizieren von DLLs und EXEs in den Speicher. | Kitploit
Tools/GitHubGitHub/redsiege/excelntdonut
Phishing-ToolsPayload-GenerierungExploitationShellcodePhishingRed TeamingShellcode-Generierung
GitHubredsiege/excelntdonut

EXCELntDonut

Excel 4.0 (XLM) Makro-Generator zum Injizieren von DLLs und EXEs in den Speicher.

Repository anzeigen
5178970vor 6 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

| \ / / | | | _ __ | || _ \ ___ _ __ _ | | | | \ / | | | | | | ' | | | | |/ _ | ' | | | | | | | / \ || || |__| | | | || || | () | | | | || | | |_____//__|||| ||_|____/ _/|| ||_,|__| by @JoeLeonJr (@FortyNorthSec)

EXCELntDonut ist ein Generator für XLM-Makros (Excel 4.0). Starte mit C#-Quellcode (EXE) und erhalte ein XLM-Makro (Excel 4.0), das deinen Code im Arbeitsspeicher ausführt. XLM-Makros (Excel 4.0) können in .XLS-Dateien gespeichert werden.

Installation

chmod +x install.sh
./install.sh

Was wird installiert?

  • pip3
  • mono-complete (sowohl mcs als auch alle möglichen Bibliotheken, die du in deinen Quelldateien referenzieren könntest)
  • EXCELntDonut als CLI

Wenn du EXCELntDonut nur als Python-Skript ausführen möchtest, musst du eine virtuelle Umgebung mit den beiden Paketen "pandas" und "donut-shellcode" einrichten. Außerdem musst du apt-get install mono-complete ausführen und das Skript drive.py mit python3 aufrufen. Wir empfehlen, einfach das Bash-Skript ./install.sh zu verwenden, aber die Entscheidung liegt bei dir.

Verwendung

Usage:
	$ EXCELntDonut -f exe_source.cs -r System.Windows.Forms.dll --sandbox --obfuscate

Flags:
	(required)
	-f Pfad zur Datei mit deinem C#-Quellcode (nur EXE)

	-r Referenzen, die zur Kompilierung deines C#-Codes benötigt werden (dieselben, die du bei der Verwendung von mcs unter Linux angeben würdest)
	(z. B. -r 'System.Management')

	(optional)
	-o Ausgabedateiname
	--sandbox 
		Führe grundlegende Sandbox-Prüfungen durch. Diese werden aktualisiert, sobald neue Ansätze entdeckt werden.
	--obfuscate 
		Führe eine grundlegende Makro-Verschleierung durch. 

Funktionsweise

Du stellst eine C#-Datei mit deiner Payload bereit (z. B. eine EXE mit einer main-Methode, die eine Cobalt-Strike-Beacon-Payload ausführt). Diese C#-Datei wird mit MCS in zwei .NET-Assemblys kompiliert: x86 und x64. Nach der Kompilierung wandeln die großartigen Tools Donut (für x86) und CLRvoyance (für x64) jede Assembly in positionsunabhängigen Shellcode um. Anschließend werden alle Nullbytes entfernt, da XLM-Makros (Excel 4.0) nicht gut mit Nullbytes umgehen, und die Payload wird in Zeilen mit maximal 255 Zeichen (für x86) bzw. 10 Zeichen (für x64) aufgeteilt.

Sobald der Shellcode vorbereitet ist, wird er mit grundlegenden Prozessinjektionsfunktionen (VirtualAlloc, WriteProcessMemory und CreateThread) sowie einer Architekturprüfungsfunktion kombiniert, um zu bestimmen, welche Payload (x86 oder x64) auf dem Zielsystem ausgeführt werden soll. Wenn du Sandbox-Prüfungen oder eine grundlegende Verschleierung aktivierst, werden diese Funktionen dein Makro entsprechend aktualisieren. Schließlich wird die Ausgabe in einer CSV-Datei (gespeichert als .txt) abgelegt.

So erstellst du ein XLM-Makro (Excel 4.0)

Sobald du die Ausgabedatei von EXCELntDonut hast, öffne die Ausgabedatei in einem Texteditor und kopiere den gesamten Inhalt (Strg-A, Strg-C). Öffne Excel auf einer Windows-VM, klicke mit der rechten Maustaste auf "Tabelle 1" und wähle "Einfügen". Wähle "MS Excel 4.0-Makro". Gehe zu Zelle A1 und füge die Ausgabe von EXCELntDonut ein. Die Daten werden wahrscheinlich alle in einer Spalte eingefügt. Die Daten sind durch Semikolon getrennt ";". Gehe zur Registerkarte "Daten" und klicke dann auf "Text in Spalten". Wähle "Getrennt" und aktiviere auf dem nächsten Bildschirm "Semikolon" und klicke dann auf "Fertigstellen". Das Makro wird auf die entsprechenden Spalten und Zeilen verteilt.

(Hinweis: Wenn du das Flag "--obfuscate" verwendet hast, musst du horizontal etwas scrollen, um deinen eigentlichen Code zu finden, da ein Teil der Verschleierungslogik das Makro in einen zufälligen Abschnitt des Arbeitsblatts verschiebt.)

Wir empfehlen an dieser Stelle zwei Dinge:

  1. Finde die Startzelle (das wird die oberste linke Zelle deines Makrocodes sein, wahrscheinlich A1). Klicke mit der rechten Maustaste und wähle "Ausführen". Teste dein Makro, um sicherzustellen, dass es funktioniert.
  2. Sobald du bestätigt hast, dass das Makro funktioniert, wähle erneut dieselbe oberste linke Zelle aus. Auf der linken Seite des Bildschirms sollte ein Dropdown-Menü sein, das die Zelle anzeigt, in der du dich befindest (wahrscheinlich "A1"). Klicke in das Dropdown-Menü und ändere den Textwert in "Auto_open". Dadurch wird dieselbe automatische Ausführungsfunktionalität erzeugt, die du von VBA-Makros kennst.

Speichere die Datei (.xls) und versuche, sie zu öffnen. Sie sollte deine Payload automatisch ausführen.

Sandbox-Prüfungen

Diese Prüfungen basieren auf dem, was echte Bedrohungsakteure in ihrer Malware verwenden.

  1. Ist eine Maus aktiv?
  2. Ist die Bildschirmgröße größer als 770 Pixel Breite und 381 Pixel Höhe?
  3. Kann der Host Töne abspielen?
  4. Ist dies ein Windows-Rechner?

Verschleierung

  1. Für die Prozessinjektionsanweisungen (VirtualAlloc, WriteProcessMemory, CreateThread) und Sandbox-Prüfungen werden alle Makrofunktionen in die folgende Struktur umgewandelt:
=FORMULA(D3&D23&D54&D23&D44,E45)

Die FORMULA-Funktion ermöglicht es uns, eine Formel zu platzieren, die später ausgeführt werden kann, in eine andere Zelle. In diesem Fall setzen wir also die Prozessinjektionsanweisungen und verwenden dann die FORMULA-Funktion, um die eigentliche Funktion in eine andere Zelle zu platzieren, die ausgeführt wird. Dies verhindert, dass Verteidiger bei der statischen Analyse Begriffe wie "VirtualAlloc" sehen.

  1. Das gesamte Makro wird um einen bestimmten Wert nach rechts verschoben, sodass das Blatt mit den Makros beim ersten Öffnen leer erscheint.

Wissenswertes

  • Weniger ausgefeilte Payloads verwenden einfach den Befehl =EXEC(), um Befehle auszuführen. Einige verwenden auch URLMON, um Dateien herunterzuladen. Andere Dateien enthalten sogar das Wort "SHELL". Das alles schien uns eine schlechte Idee zu sein. Dieses Tool enthält nichts davon. Stattdessen injiziert es deinen C#-Quellcode in den Excel-Prozess (entweder 32-Bit oder 64-Bit) und führt ihn dann aus. Danach liegt es an deiner Payload, was als Nächstes passiert.

Tipps

  • Dein C#-Quellcode kann alles tun, was du möchtest. Wir empfehlen, dass dein Quellcode die Parent-Child-Beziehung zwischen Excel und dem, was du startest, unterbricht.
  • Es gibt viele gute Blogbeiträge über "sehr verborgene" Excel-Blätter. Ziehe in Betracht, dies zu nutzen.
  • Vergiss nicht, deine Excel-Datei realistisch aussehen zu lassen.

Fehlerbehebung

"Der Typ oder Namespace ... ist nicht vorhanden ..."
root@excelntdonut-test:/opt# EXCELntDonut -f test.cs
 _______  ______ _____ _           _   ____                    _   
| ____\ \/ / ___| ____| |    _ __ | |_|  _ \  ___  _ __  _   _| |_ 
|  _|  \  / |   |  _| | |   | '_ \| __| | | |/ _ \| '_ \| | | | __|
| |___ /  \ |___| |___| |___| | | | |_| |_| | (_) | | | | |_| | |_ 
|_____/_/\_\____|_____|_____|_| |_|\__|____/ \___/|_| |_|\__,_|\__|
                    by @JoeLeonJr (@FortyNorthSec)                
[i] Generating your x86 .NET assembly.
warning CS8001: SDK path could not be resolved
test.cs(2,14): error CS0234: The type or namespace name `Management' does not exist in the namespace `System'. Are you missing an assembly reference?

Dieser Fehler bedeutet höchstwahrscheinlich, dass dir bei der Kompilierung mit Mono eine Referenz-Assembly fehlt. Um dies zu beheben, übergib einfach den erwähnten Namespace mit dem Flag -r. In diesem Fall würden wir -r 'System.Management' zur Befehlszeile hinzufügen. Der neue Befehl wäre:

root@excelntdonut-test:/opt# EXCELntDonut -f test.cs -r 'System.Management'

"Metadatendatei ... konnte nicht gefunden werden"
Tool herunterladen