
LittleCorporal: Ein automatischer Maldoc-Generator in C#
LittleCorporal: Ein automatisierter Maldoc-Generator in C#
C:\LittleCorporal\bin\Release>LittleCorporal.exe C:\beacon.bin explorer.exe
.____ .__ __ __ .__ _________ .__
| | |__|/ |__/ |_| | ____ \_ ___ \ _________________ ________________ | |
| | | \ __\ __\ | _/ __ \/ \ \/ / _ \_ __ \____ \ / _ \_ __ \__ \ | |
| |___| || | | | | |_\ ___/\ \___( <_> ) | \/ |_> > <_> ) | \// __ \| |__
| _______ \__||__| |__| |____/\___ >\______ /\____/|__| | __/ \____/|__| (____ /____/
\/ \/ \/ |__| \/
________
/ \
__ / (o)\__
/ ______\ \ I am the strongest debater in the whole Conseil.
| ____/__ __\____| I let myself be attacked, because I know how to defend myself.
[ --~~-- ] - Napoleon Bonaparte
| ( L )|
___----\ __ /----___
/ | < \____/ > | \
/ | < \--/ > | \
|||||| \ \/ / ||||||
| \ / o |
| | \/ === | |
| | |o ||| | |
| \______| +#* | |
| |o | |
\ | / /
|\__________|o / /
| | / /
[+] Parsed Arguments:
[>] Shellcode Path: C:\beacon.bin
[>] Target Process: explorer.exe
[+] Embedded shellcode in Loader.cs!
[+] Generated C# Loader artifact!
[+] Ran the .NET assembly through Donut!
[+] Donut artifact is located at: C:\LittleCorporal\Artifacts\payload.bin
[+] Path to Word document: C:\LittleCorporal\Artifacts\Form.doc
BITTE LIES DIE GESAMTE README VOR DER VERWENDUNG!
LittleCorporal akzeptiert ein vom Benutzer bereitgestelltes Argument für einen Prozess, in den auf einer entfernten Maschine injiziert werden soll, auf der das bösartige Word-Dokument ausgeführt werden soll, sowie einen Pfad zu einer lokalen Shellcode-Datei im .bin-Format – wie z. B. ein Beacon Stageless Shellcode-Blob auf der Maschine, von der aus LittleCorporal ausgeführt wird. Wenn Sie also den mit diesem Projekt generierten Maldoc verwenden möchten, müssen Sie einen bereits laufenden Prozess auf der Maschine angeben, auf der Sie den Maldoc ausführen möchten (sei es die lokale Maschine oder eine andere Maschine). explorer.exe hat immer eine Instanz, verwenden Sie diesen, falls Ihnen der Zielprozess egal ist.
LittleCorporal bettet den Shellcode und den Zielprozessnamen in Loader.cs ein, kompiliert Loader.cs on the Fly in ein .NET .exe-Artefakt und verwendet dann Thread-Hijacking, um eine Remote-Prozessinjektion durchzuführen. Das .NET .exe-Artefakt, der Thread-Hijacking-Loader, wird durch Donut geschickt, um positionsunabhängigen Shellcode zu generieren, der das .exe ausführt. Der von Donut generierte Shellcode wird dann base64-kodiert, ein Word-Dokument wird erstellt und der endgültige Donut-Blob wird in einer InlineShape.AlternativeText-Word-Eigenschaft gespeichert, die die gesamte Nutzlast aufnehmen kann. Dies geschieht durch Einfügen einer Bildeigenschaft (derzeit ein leeres Bild, das dem Dokument ein „leeres“ Aussehen verleiht) in das Word-Dokument als alternativer Text des Bildes, der die Nutzlast enthält. LittleCorporal nutzt dann eine VBA-„Vorlage“, die in diesem Projekt als Textdatei enthalten ist, und injiziert dieses Makro in das neu erstellte Word-Dokument. Das Makro heißt autoopen, öffnet sich also beim Öffnen des Dokuments und ist so konfiguriert, dass es den Wert des alternativen Texts des zuvor erstellten Bildes extrahiert, der die endgültige Nutzlast enthält, base64-dekodiert und schließlich Windows-API-Aufrufe in VBA verwendet, um eine lokale Injektion in Word durchzuführen. Im Wesentlichen verwendet dieses Projekt einen einfachen „Loader“ in VBA, um eine lokale Injektion in Word durchzuführen, die etwas weniger überprüft wird als eine Remote-Prozessinjektion, und verwendet dann die Ausführung der einfachen lokalen Injektion, um den Donut-Shellcode auszuführen, ein weiterer Loader, der Thread-Hijacking für die endgültige Remote-Prozessinjektion des vom Benutzer bereitgestellten Shellcodes in den vom Benutzer angegebenen Prozess durchführt. Dies erfolgt automatisiert, einschließlich der Generierung des Word-Dokuments.
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\ existiert) und auf der Zielmaschine, auf der Sie das Dokument ausführen möchten.LittleCorporal.exe ausführen möchten. Dies liegt daran, dass LittleCorporal über COM mit Word interagieren muss. Bitte beachten Sie auch, dass das generierte Word-Dokument ein leeres Bild aus dem Internet herunterlädt – das bedeutet, dass Sie auf dem Computer, auf dem Sie LittleCorporal ausführen, und auf der entfernten Maschine, auf der Sie das Word-Dokument zünden möchten, Internetzugang benötigen.CONTEXT-Struktur, die 64-Bit-spezifische Datentypen enthält. Dies liegt daran, dass Thread-Hijacking derzeit nur auf 64-Bit-Systemen unterstützt wird, da es einen benutzerdefinierten Shellcode erfordert, der sich speziell an die Aufrufkonvention __fastcall hält. Ich habe nicht vor, eine 32-Bit-Version der Thread-Hijacking-Funktion zu implementieren, aber falls es irgendwann einen Pull-Request für 32-Bit-Unterstützung gibt – da viele Installationen von Microsoft Word 32-Bit sind – würde ich dies nicht völlig ausschließen. Derzeit sollte dies aus logischer Sicht keine große Korrektur sein; das Problem wird zur Belastung und zum Aufwand, den Stack beim Wechsel von __fastcall zu __stdcall zu verfolgen und neue Offsets zu berechnen. Technisch ist dies nicht komplex, aber etwas mühsam.Wenn Sie dieses Projekt für aktive Red-Team-Operationen verwenden möchten, sollten Sie die „Exit“-Funktion Ihres Shellcodes so einstellen, dass ein „sauberer“ Exit mit einem Thread-Exit durchgeführt wird, anstatt den Prozess, in dem sich der Shellcode befindet, vollständig zu beenden. Dies kann mit msfvenom über EXITFUNC=thread konfiguriert werden und in Cobalt Strike über Aggressor.
bin\Release (cd C:\Pfad\zu\LittleCorporal\bin\Release). Es wird empfohlen, bei einer Neukompilierung dieses Projekts einen Release-Build anstelle eines Debug-Builds zu verwenden.LittleCorporal.exe ausführen, und den bereits laufenden Prozess auf der Maschine, auf der Sie das Word-Dokument ausführen möchten. (LittleCorporal.exe C:\Pfad\zu\Shellcode.bin explorer.exe)LittleCorporal.exe cleanbool FUNC1 = true;LittleCorporal.exe