Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
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
Ivy — Ivy ist ein Payload-Erstellungs-Framework für die Ausführung von beliebigem VBA-(Makro-)Quellcode direkt im Speicher. Der Loader von Ivy erreicht dies durch die Nutzung programmatischen Zugriffs in der VBA-Objektumgebung, um Shellcode zu laden, zu entschlüsseln und auszuführen. | Kitploit
Tools/GitHubGitHub/optiv/ivy
Payload-GenerierungExploitationShellcodePost-ExploitationPenetrationstestsRed TeamingPayload-EntwicklungArchived
GitHuboptiv/ivy

Ivy

Ivy ist ein Payload-Erstellungs-Framework für die Ausführung von beliebigem VBA-(Makro-)Quellcode direkt im Speicher. Der Loader von Ivy erreicht dies durch die Nutzung programmatischen Zugriffs in der VBA-Objektumgebung, um Shellcode zu laden, zu entschlüsseln und auszuführen.

Repository anzeigen
74312927vor 3 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

DIESES REPOSITORY WURDE ARCHIVIERT

Um die neueste Version von Ivy anzuzeigen oder ein Problem zu melden, besuchen Sie https://github.com/Tylous/Ivy.



Weitere Informationen

Wenn Sie mehr über die in diesem Framework verwendeten Techniken sowie die Abwehrmaßnahmen erfahren möchten, werfen Sie bitte einen Blick auf den Artikel.

Beschreibung

Ivy ist ein Framework zur Erstellung von Payloads für die Ausführung von beliebigem VBA (Makro)-Quellcode im Arbeitsspeicher. Ivy's Loader erreicht dies durch den Missbrauch des programmatischen Zugriffs in der VBA-Objektumgebung, um Shellcode zu laden, zu entschlüsseln und auszuführen. Diese Technik kommt einer wirklich dateilosen Methode so nahe wie möglich, da die meisten dateilosen Angriffe heutzutage das Ablegen von Dateien auf der Festplatte erfordern, wodurch standardmäßige signaturbasierte Regeln zur Erkennung von VBA-Code umgangen werden. Typische VBA-Payloads haben die folgenden Eigenschaften:

  • Sie existieren in makroaktivierten Office-Dokumenten
  • Diese Makro-Dokumente existieren auf der Festplatte

Durch die reine Ausführung im Arbeitsspeicher wird es für EDRs schwieriger, diese Verhaltensmerkmale zu erkennen.

Ivys Loader werden mit RC4-Verschlüsselung verschlüsselt (AES-Verschlüsselung verursacht viel Bloat und dauert ewig, bis VBA sie entschlüsselt) und dann in separate Strings aufgeteilt, um zu verhindern, dass Sandboxing diese Strings als verschlüsselte Strings erkennt, die untersucht werden sollten. Dies verhindert auch, dass ein Dekodierungsmechanismus diese Payloads als etwas anderes als Müllzeichen erkennt.

Ivys Loader führt zunächst eine Registrierungsabfrage durch, um den "Zugriff auf das VBA-Projektobjektmodell vertrauen" zu aktivieren. Dieser Registrierungsschlüsselwert wird im Benutzermodus gespeichert, sodass der Benutzer den Wert ohne erhöhte Berechtigungen ändern kann. Der Registrierungswert wird von Null auf Eins gesetzt; wenn der Registrierungsschlüssel nicht existiert, erstellt Ivy ihn mit dem Wert "1". Mit diesem aktivierten Wert ist der programmatische Zugriff auf die VBA-Objektumgebung von einem anderen Prozess aus erlaubt.

Sobald dies erledigt ist, startet der Loader einen versteckten Excel-Prozess und lädt die verschlüsselten Strings in eine VBA-Funktion. Dies geschieht durch die Verwendung von ActiveX, um die GUI-Aktionen derselben Aufgabe zu simulieren. Dies hilft, viele traditionelle Kontrollen zu umgehen, die die Ausführung überwachen. Infolgedessen werden die Entschlüsselungsfunktion und der Shellcode von einem Speicherpuffer in einen anderen verschoben, ohne jemals die Festplatte zu berühren. Schließlich verwendet der Loader Befehls-GUI-Aufrufe und führt die Run-Funktion aus, die das Klicken auf den Makro-Ausführungsbutton im GUI-Panel von VBA simuliert, beginnend mit der Entschlüsselungsfunktion, gefolgt von der eigentlichen Ausführung des Shellcodes.

WICHTIG

Das Zielsystem muss Microsoft Office installiert und aktiviert haben, um ausgeführt werden zu können, da Ivy auf den Missbrauch des programmatischen Zugriffs auf die VBA-Umgebung von Microsoft Office angewiesen ist.

EDR Unhook-Modus

Dies ermöglicht Ivy die Verwendung von Low-Level-Systemaufrufen, um eine eigene Version der Windows-Funktion WriteProcessMemory zu erstellen, indem die direkte Speicheradresse und Registerwerte indirekt referenziert werden. Ivy kann Speicherbereiche überschreiben, die nicht beschreibbar sind, ohne eine der API-Funktionen zur Speicheränderung aufzurufen. Dies wird durch eine Eigenschaft von WriteProcessMemory ermöglicht, die vorübergehend die Berechtigungen des Speicherbereichs auf beschreibbar ändert (wenn ausreichende Berechtigungen vorhanden sind, was der Fall ist, da wir den Prozess besitzen). Es schreibt den Wert und stellt die ursprünglichen Berechtigungen wieder her, ohne die VirtualProtect-Funktion aufzurufen, sondern ruft stattdessen automatisch den zugehörigen Syscall (NtProtectVirtualMemory) auf.

Ivy verwendet keine eigene Version von NtWriteVirtualMemory, da dieser Prozess der vorübergehenden Änderung der Speicherberechtigungen nicht stattfinden würde, was bedeutet, dass der Schutz der spezifischen Speicheradresse nicht geändert würde und die Ausführung fehlschlagen würde. Dies ist eine „Funktion“, die Microsoft veröffentlicht hat, um Debugger stabiler zu machen. Da Debugger Speicher im laufenden Betrieb ändern möchten, können sie einfach einen Abschnitt ändern, ohne mehrere Aufgaben ausführen zu müssen. (Siehe devblogs.microsoft.com für Informationen).

Werfen wir einen Blick auf die Ereigniskette, die ein EDR sehen würde:

  • Ivy erstellt eine WriteProcessMemory-Funktion, die manuell die richtigen Registerwerte einrichtet.
  • Unsere Funktion ruft die genaue Speicheradresse auf, an der WriteProcessMemory gespeichert ist. (Dies würde wie ein Aufruf des Registers RAX aussehen, anstatt kernel32.WriteProcessMemory aufzurufen.)
  • Dies bedeutet, dass wir WriteProcessMemory nicht direkt aufrufen, während wir dennoch alle Funktionen nutzen.
  • Ein EDR würde nur eine Zeichenfolge von Assembly-Code sehen, die keinen bösartigen Indikatoren für eine Speicheradresse entspricht.
  • Diese Speicheradresse wäre der Start einer Funktion, aber die Funktionsadresse ist aufgrund von ASLR einzigartig; eine Suche nach jeder Funktion müsste durchgeführt werden.
  • Vor der Schreibaktion wird der Syscall ZWQueryVirtualMemory ausgeführt, um die Schutzberechtigungen des Speicherbereichs anzuzeigen.
  • Wenn dieser Speicher nicht auf beschreibbar gesetzt ist, wird NtProtectVirtualMemory aufgerufen, um die Berechtigungen zu ändern.
  • Dann werden 8 Bytes Assembly-Code an die spezifische Speicheradresse geschrieben.
  • NtProtectVirtualMemory wird erneut aufgerufen, um den ursprünglichen Schutz wiederherzustellen.

Sobald alle EDR-Hooks entfernt wurden, führt der Loader seine normale Aktion aus, um eine entfernte Sitzung herzustellen.

Ivy adressiert dies, indem es gängige System-DLLs enthakt, die EDRs hooken, darunter:

  • Ntdll.dll
  • Kernel32.dll
  • Kernelbase.dll
  • Advapi32.dll
  • Sechost.dll
  • Ws2_32.dll
  • Winmmbase.dll

Bei Verwendung von unhook mit einem Payload-Typ Inject wird Ivys Loader zuerst den Office-Prozess enthaken, wodurch das EDR aus diesem entfernt wird, und dann die Hooks im injizierten Prozess entfernen. Dies stellt sicher, dass beide Prozesse hookfrei sind, wodurch verhindert wird, dass Telemetriedaten vom übergeordneten und untergeordneten Prozess an das EDR gesendet werden.

ETW-Patching

Mit derselben Technik wie beim Unhooking kann Ivy ETW-Funktionen patchen, wodurch verhindert wird, dass Ereignisse vom Prozess generiert werden. ETW verwendet integrierte Syscalls, um diese Telemetrie zu generieren. Da ETW eine native Windows-Funktion ist, müssen Sicherheitsprodukte die ETW-Syscalls nicht „hooken“, um die Informationen zu erhalten. Folglich patcht Ivy zahlreiche ETW-Syscalls, leert die Register aus und gibt den Ausführungsfluss an die nächste Anweisung zurück. Das Patchen von ETW ist standardmäßig in allen Loadern aktiviert. Wenn Sie ETW nicht patchen möchten, verwenden Sie die Befehlszeilenoption -noetw, um es in Ihrem Loader zu deaktivieren.

Demo

Installation

Ivy wurde mit Go entwickelt.

Der erste Schritt ist wie immer das Klonen des Repos. Bevor Sie Ivy kompilieren, müssen Sie die Abhängigkeiten installieren. Führen Sie dazu die folgenden Befehle aus:

go get github.com/fatih/color
go get github.com/KyleBanks/XOREncryption/Go

Dann bauen Sie es

go build Ivy.go

Hilfe

$ ./Ivy -h
Tool herunterladen