
Ein plattformübergreifender Assistent zum Erstellen von schädlichen MS Office-Dokumenten. Kann VBA-Makros verstecken, VBA-Code (via P-Code) überschreiben und Makro-Analysewerkzeuge verwirren. Läuft unter Linux, OSX und Windows.
Dieses Tool wurde während unseres BlackHat Asia Vortrags (28. März 2019) veröffentlicht. Eine Videoaufzeichnung dieses Vortrags ist verfügbar unter https://www.youtube.com/watch?v=9ULzZA70Dzg.
Ein plattformübergreifender Assistent zum Erstellen bösartiger MS Office-Dokumente. Kann VBA-Makros verstecken, VBA-Code überschreiben (via P-Code) und Makro-Analyse-Tools verwirren. Läuft auf Linux, OSX und Windows.
Wenn Sie neu in diesem Tool sind, möchten Sie vielleicht mit dem Lesen unseres Blogbeitrags über Evil Clippy beginnen: https://outflank.nl/blog/2019/05/05/evil-clippy-ms-office-maldoc-assistant/
Dieses Projekt sollte nur für autorisierte Tests oder Bildungszwecke verwendet werden.
Wenn Sie keine Ahnung haben, worum es hier geht, schauen Sie sich zuerst die folgenden Ressourcen an:
Zum Zeitpunkt des Schreibens ist dieses Tool in der Lage, ein Standard-Cobalt-Strike-Makro an den meisten großen Antivirenprodukten und verschiedenen Maldoc-Analysetools vorbeizuschleusen (durch die Verwendung von VBA-Stomping in Kombination mit zufälligen Modulnamen).
Evil Clippy verwendet die OpenMCDF-Bibliothek, um MS Office Compound File Binary Format (CFBF)-Dateien zu manipulieren, und missbraucht dabei MS-OVBA-Spezifikationen und -Funktionen. Es verwendet Code von Kavod.VBA.Compression wieder, um den Komprimierungsalgorithmus zu implementieren, der in dir- und Modul-Streams verwendet wird (siehe MS-OVBA für relevante Spezifikationen).
Evil Clippy lässt sich problemlos mit dem Mono C#-Compiler kompilieren und wurde auf Linux, OSX und Windows getestet.
Wir stellen keine binäre Version für EvilClippy bereit. Bitte kompilieren Sie die ausführbaren Dateien selbst:
OSX und Linux
Stellen Sie sicher, dass Mono installiert ist. Führen Sie dann den folgenden Befehl in der Befehlszeile aus:
mcs /reference:OpenMcdf.dll,System.IO.Compression.FileSystem.dll /out:EvilClippy.exe *.cs
Führen Sie nun Evil Clippy über die Befehlszeile aus:
mono EvilClippy.exe -h
Windows
Stellen Sie sicher, dass Visual Studio installiert ist. Führen Sie dann den folgenden Befehl in einer Visual Studio-Entwickler-Eingabeaufforderung aus:
csc /reference:OpenMcdf.dll,System.IO.Compression.FileSystem.dll /out:EvilClippy.exe *.cs
Führen Sie nun Evil Clippy über die Befehlszeile aus:
EvilClippy.exe -h
Hilfe anzeigen
EvilClippy.exe -h
Makros im GUI verstecken/wieder einblenden
Versteckt alle Makromodule (außer dem Standardmodul "ThisDocument") vor dem VBA-GUI-Editor. Dies wird erreicht, indem Modulzeilen aus dem Projektstream entfernt werden [MS-OVBA 2.3.1].
EvilClippy.exe -g macrofile.doc
Macht die Änderungen der Versteck-Option (-g) rückgängig, sodass das Makro in der VBA-IDE debuggt werden kann.
EvilClippy.exe -gg macrofile.doc
VBA stompen (P-Code missbrauchen)
Fügt gefälschten VBA-Code aus der Textdatei fakecode.vba in alle Module ein, während der P-Code intakt bleibt. Dies missbraucht eine undokumentierte Funktion von Modul-Streams [MS-OVBA 2.3.4.3]. Beachten Sie, dass die VBA-Projektversion mit dem Hostprogramm übereinstimmen muss, damit der P-Code ausgeführt wird (siehe nächstes Beispiel zur Versionsanpassung).
EvilClippy.exe -s fakecode.vba macrofile.doc
Hinweis: VBA-Stomping funktioniert nicht für Dateien, die im Excel 97-2003-Arbeitsmappenformat (.xls) gespeichert sind.
Ziel-Office-Version für VBA-Stomping festlegen
Gleiches wie oben, aber jetzt explizit für Word 2016 auf x86. Das bedeutet, dass Word 2016 auf x86 den P-Code ausführt, während andere Word-Versionen stattdessen den Code aus fakecode.vba ausführen. Erreicht durch Setzen der entsprechenden Versionsbytes im _VBA_PROJECT-Stream [MS-OVBA 2.3.4.1].
EvilClippy.exe -s fakecode.vba -t 2016x86 macrofile.doc
Zufällige Modulnamen setzen/zurücksetzen (Analysten-Tools täuschen)
Setzt zufällige ASCII-Modulnamen im dir-Stream [MS-OVBA 2.3.4.2]. Dies missbraucht Mehrdeutigkeiten in den MODULESTREAMNAME-Datensätzen [MS-OVBA 2.3.4.2.3.2.3] - die meisten Analysten-Tools verwenden die hier angegebenen ASCII-Modulnamen, während MS Office die Unicode-Variante verwendet. Durch das Setzen eines zufälligen ASCII-Modulnamens stürzen die meisten P-Code- und VBA-Analysetools ab, während der eigentliche P-Code und VBA in Word und Excel weiterhin einwandfrei funktionieren.
EvilClippy.exe -r macrofile.doc
Hinweis: Dies ist bekanntermaßen wirksam, um pcodedmp und VirusTotal auszutricksen.
Setzt ASCII-Modulnamen im dir-Stream auf ihre Unicode-Entsprechungen. Dies macht die mit der Option (-r) von EvilClippy vorgenommenen Änderungen rückgängig.
EvilClippy.exe -rr macrofile.doc
Eine VBA-gestompte Vorlage via HTTP bereitstellen
Dient macrofile.dot via HTTP-Port 8080 nach Durchführung von VBA-Stomping. Wenn diese Datei abgerufen wird, passt sie automatisch die Office-Version des Ziels an (unter Verwendung seiner HTTP-Header und Setzen der _VBA_PROJECT-Bytes entsprechend).
EvilClippy.exe -s fakecode.vba -w 8080 macrofile.dot
Hinweis: Die bereitgestellte Datei muss eine Vorlage sein (.dot statt .doc). Sie können eine Vorlage über eine URL (.dot-Erweiterung ist nicht erforderlich!) in der Entwickler-Symbolleiste von Word festlegen. Außerdem muss fakecode.vba ein VB_Base-Attribut für ein Makro aus einer Vorlage haben (das bedeutet, dass Ihre fakecode.vba mit einer Zeile wie Attribute VB_Base = "0{00020906-0000-0000-C000-000000000046}" beginnen muss).
VBA-Projekt-Schutz (Gesperrt/Nicht einsehbar) setzen/entfernen
Um die Attribute Gesperrt/Nicht einsehbar zu setzen, verwenden Sie die Option '-u':
EvilClippy.exe -u macrofile.doc
Um die Attribute Gesperrt/Nicht einsehbar zu entfernen, verwenden Sie die Option '-uu':
EvilClippy.exe -uu macrofile.doc
Hinweis: Sie können die Attribute Gesperrt/Nicht einsehbar auch bei Dateien entfernen, die nicht mit EvilClippy gesperrt wurden.
Entwickelt für die Manipulation von Microsoft Word- und Excel-Dokumenten.
Wie bereits erwähnt, ist VBA-Stomping nicht wirksam gegen das Excel 97-2003-Arbeitsmappenformat (.xls).
Stan Hegt (@StanHacked) / Outflank
Mit bedeutenden Beiträgen von Carrie Roberts (@OrOneEqualsOne / Walmart).
Besonderer Dank an Nick Landers (@monoxgas / Silent Break Security) für den Hinweis auf OpenMCDF.