Einleitung
Wenn Sie mit dem Metasploit Framework arbeiten, müssen Sie oft verschiedene Optionen für unterschiedliche Module festlegen, wie z. B. LHOST (der lokale Host, auf dem gelauscht werden soll) und LPORT (der lokale Port). Das wiederholte Festlegen dieser Optionen für jedes Modul kann zeitaufwendig sein. Metasploit bietet hierfür eine Funktion namens globale Variablen. Durch das globale Festlegen einer Variable wird diese automatisch auf jedes Modul angewendet, das diese Option verwendet, was Ihre Workflow-Effizienz erheblich verbessert.
In diesem Lab lernen Sie, wie Sie globale Variablen in der Metasploit-Konsole festlegen, verwenden und aufheben.
Verwenden Sie den Befehl setg, um einen globalen LHOST festzulegen
In diesem Schritt starten Sie die Metasploit-Konsole und legen eine globale Variable für LHOST fest. Der Befehl setg wird verwendet, um eine Variable festzulegen, die über verschiedene Module innerhalb derselben msfconsole-Sitzung hinweg bestehen bleibt.
Zuerst ermitteln wir die IP-Adresse Ihrer Laborumgebung. Diese IP wird als Wert für LHOST verwendet.
hostname -I | awk '{print $1}'
Sie sehen eine Ausgabe, die dieser ähnelt (Ihre IP-Adresse wird anders sein):
192.168.3.123
Merken Sie sich diese IP-Adresse. Starten Sie nun die Konsole des Metasploit Frameworks. Das Flag -q steht für den "quiet"-Modus, der das Startbanner unterdrückt.
msfconsole -q
Ihr Prompt ändert sich zu msf6 >. Nun legen wir die Variable LHOST global fest. Verwenden Sie den Befehl setg, gefolgt vom Variablennamen und der gerade ermittelten IP-Adresse.
Hinweis: Bitte ersetzen Sie
YOUR_IP_ADDRESSdurch die tatsächliche IP-Adresse aus dem Befehlhostname -I.
setg LHOST YOUR_IP_ADDRESS
Sie sollten eine Bestätigungsmeldung sehen:
LHOST => YOUR_IP_ADDRESS
Dieser Befehl hat nun Ihre IP-Adresse als globalen LHOST-Wert für diese Sitzung gespeichert. Um dies zu überprüfen, können Sie den Befehl show mit dem Flag -g verwenden, der alle global festgelegten Variablen anzeigt.
show -g
Die Ausgabe listet alle globalen Variablen auf:
Global
=======
Name Value
---- -----
LHOST YOUR_IP_ADDRESS
Ein neues Exploit-Modul auswählen
In diesem Schritt wählen Sie ein Exploit-Modul aus, um zu sehen, wie die globale Variable automatisch angewendet wird. Wir verwenden den generischen Payload-Handler exploit/multi/handler als erstes Beispiel. Dieses Modul wird häufig verwendet, um auf eingehende Verbindungen zu warten.
Verwenden Sie im msfconsole-Prompt den Befehl use, um das Modul auszuwählen:
use exploit/multi/handler
Nachdem Sie den Befehl ausgeführt haben, ändert sich Ihr Prompt, um das aktuell ausgewählte Modul widerzuspiegeln:
msf6 exploit(multi/handler) >
Dies zeigt an, dass Sie sich nun im Kontext des Moduls exploit/multi/handler befinden. Alle Optionen, die Sie festlegen oder anzeigen, sind spezifisch für dieses Modul, aber es erbt auch alle relevanten globalen Variablen.
Beobachten Sie, dass der LHOST-Wert bereits ausgefüllt ist
Nachdem Sie nun ein Modul geladen haben, überprüfen wir dessen Optionen, um zu sehen, ob unsere globale LHOST-Variable angewendet wurde.
In diesem Schritt verwenden Sie den Befehl show options, um die Konfiguration für das aktuelle Modul anzuzeigen.
Führen Sie vom msf6 exploit(multi/handler) >-Prompt aus den folgenden Befehl aus:
show options
Sie sehen eine Tabelle mit Optionen für dieses Modul. Suchen Sie nach der Variable LHOST. Sie werden feststellen, dass ihr Wert bereits auf die IP-Adresse gesetzt ist, die Sie im ersten Schritt global konfiguriert haben.
Module options (exploit/multi/handler):
Name Current Setting Required Description
---- --------------- -------- -----------
Payload options (generic/shell_reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST YOUR_IP_ADDRESS yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Wildcard Target
Wie Sie sehen können, mussten Sie den Befehl set LHOST für dieses Modul nicht verwenden, da der globale Wert automatisch übernommen wurde. Das ist die Stärke der Verwendung globaler Variablen.
Verwenden Sie den unsetg-Befehl, um eine globale Variable zu entfernen
In diesem Schritt lernen Sie, wie Sie eine globale Variable entfernen. Wenn Sie nicht mehr möchten, dass eine Variable global angewendet wird, können Sie den Befehl unsetg verwenden. Dies ist nützlich, wenn Sie zur Einstellung von Optionen pro Modul zurückkehren oder die Konfiguration Ihrer Sitzung bereinigen möchten.
Führen Sie von der Metasploit-Eingabeaufforderung aus den Befehl unsetg gefolgt vom Namen der zu entfernenden Variable aus.
unsetg LHOST
Dieser Befehl entfernt die Variable LHOST aus dem globalen Geltungsbereich. Sie erhalten eine Bestätigungsnachricht:
Unsetting LHOST...
Wenn Sie nun erneut show options für dasselbe Modul ausführen, sehen Sie, dass der Wert für LHOST nun leer ist.
show options
Die Ausgabe zeigt nun an, dass LHOST keinen gesetzten Wert hat.
Module options (exploit/multi/handler):
Name Current Setting Required Description
---- --------------- -------- -----------
Payload options (generic/shell_reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Wildcard Target
Sie müssten nun LHOST lokal für dieses Modul mit dem Befehl set festlegen, wenn Sie es verwenden möchten.
Erläuterung, wann globale und lokale Optionen verwendet werden sollten
In diesem letzten Schritt werden wir die praktischen Unterschiede zwischen der Einstellung lokaler und globaler Variablen und die jeweiligen Anwendungsfälle besprechen. Das Verständnis hierfür wird Ihnen helfen, effektiver in Metasploit zu arbeiten.
Lokale Variablen (mit set)
- Geltungsbereich (Scope): Eine Variable, die mit dem Befehl
setgesetzt wird (z. B.set RHOSTS 10.10.10.1), ist lokal für das aktuell geladene Modul. - Verhalten: Wenn Sie mit dem Befehl
usezu einem neuen Modul wechseln, wird diese lokale Variable verworfen. Das neue Modul hat für diese Option seinen eigenen Standard- oder leeren Wert. - Wann verwenden: Verwenden Sie
setfür Optionen, die für ein einzelnes Ziel oder Modul spezifisch sind. Das häufigste Beispiel istRHOSTS(die IP-Adresse des entfernten Hosts/Ziels), die sich fast immer für jeden verwendeten Exploit ändert. Andere Beispiele sindTARGETURIoder ein bestimmterUSERNAME.
Globale Variablen (mit setg)
- Geltungsbereich (Scope): Eine Variable, die mit dem Befehl
setggesetzt wird (z. B.setg LHOST 192.168.3.123), ist global für die gesamtemsfconsole-Sitzung. - Verhalten: Die Variable und ihr Wert werden automatisch von jedem Modul übernommen, das diesen Optionsnamen verwendet. Sie bleibt auch beim Wechseln von Modulen bestehen.
- Wann verwenden: Verwenden Sie
setgfür Optionen, die während Ihrer Sitzung wahrscheinlich gleich bleiben.LHOSTist das perfekte Beispiel, da sich die IP-Adresse Ihres Angreifer-Rechners normalerweise nicht ändert.LPORTkann ebenfalls ein guter Kandidat für eine globale Variable sein, wenn Sie durchgängig denselben Listening-Port verwenden.
Zusammenfassung der Befehle:
set <VARIABLE> <VALUE>: Setzt eine Variable nur für das aktuelle Modul.setg <VARIABLE> <VALUE>: Setzt eine Variable global für alle Module in der Sitzung.unset <VARIABLE>: Löscht eine lokale Variable im aktuellen Modul.unsetg <VARIABLE>: Löscht eine globale Variable.
Durch die strategische Verwendung von set für zielspezifische Optionen und setg für sitzungsumfassende Optionen können Sie wiederholte Konfigurationen minimieren und sich stärker auf den Exploit-Prozess konzentrieren.
Sie können die Metasploit-Konsole nun verlassen.
exit
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie globale Variablen im Metasploit Framework effektiv nutzen, um Ihren Workflow zu optimieren. Sie haben die Verwendung des Befehls setg zum Definieren eines globalen LHOST geübt, beobachtet, wie dieser automatisch in verschiedenen Modulen übernommen wurde, und den Befehl unsetg zum Entfernen verwendet. Sie haben auch die wichtigsten Unterschiede zwischen lokalen (set) und globalen (setg) Variablen kennengelernt, was Ihnen ermöglicht, effizientere Konfigurationsentscheidungen während eines Penetrationstests zu treffen. Die Beherrschung dieses einfachen Konzepts kann in komplexen Szenarien erheblich Zeit sparen und Fehler reduzieren.


