Willkommen zum Teil 3 – Meterpreter einsetzten.
Beschäftigen wir uns einmal ein wenig mit den sogenannten payload, der Teil eines Pentests, welcher eine Aktion ausführt im normalen Fall wird ein Payload nur eine einzelne Aktion durchführen wie z.B. einen Benutzer dem System hinzufügen, Bind Shell bindet sich auf einen Port. Im Normalfall sind die payloads der exploits remote shells, also Konsolen auf die sich der Pentester oder IT-Security spezialist verbindet. Meistens werden dabei neue Prozesse erzeugt, welche einen Arlam bei einem Instrusion Detection System (IDS) auslöst. Größere Firmen, welche wichtige Daten besitzen sollten IDS Systeme einsetzten und auch gleich Honeypot-Systeme!
ACHTUNG: Die Tools sind nicht im Sinne von §202 c StGB zu benutzen, sondern dienen lediglich Bildungszwecken für IT-Security interessierte!
ein gewöhnlicher payload erreicht nicht immer sein Ziel, wenn der Prozess z.B. Isoliert ausgeführt wurde, moderne Betriebsysteme unterstützen ASLR und DEP um den payload zu verhindern oder besser gesagt ins leere laufen zu lassen! Unser Testsystem Windows XP SP2 unterstützt bereits DEP.
Im Idealfall wird bei einem Payload kein neuer Prozess erzeugt und sollte im Kontext des angegriffenen Prozesses laufen. Es sollte desweiteren keine Datei angelegt werden, welche eine Firewall mit Verhaltenserkennung oder IDS oder gar Antivirusprogramme auf den Plan rufen. Ein perfekter payload ermöglicht es eine „Plattform“ zu erzeugen welche sich aus der Ferne erweitern lässt, desweiteren sollte Scripting möglich sein, um diese remote Plattform erweitern zu können, am besten zur Laufzeit.
Genau diese Aufgaben erfüllt der Meterpreter vom Metasploit Framework, es wird durch eine Arbeitsspeicher DLL Injection ermöglicht. Es werden keine Dateien auf der Festplatte erzeugt. Zusätzlich ist die Kommunikation verschlüsselt, um Signaturen von Firewalls, IDS Systemen zu verhindern. Der Meterpreter überträgt als erstes die DLL Datei zum Angegriffenen System und ermöglicht es Befehle auszuführen, den kompletten Arbeitsspeicher / payload Plattform in einen anderen Prozess zu integrieren, Registry lesen und schreiben, Festplattenzugriff, einen Bericht über das angegriffene System erstellen und vieles mehr. Da diese Plattform erweiterbar ist durch Scripts ergeben sich endlose Möglichkeiten! Deshalb wird Metasploit auch von vielen IT-Security Analysten in der Welt eingesetzt – auch in Deutschland!
Auf zum meterpreter
Wir setzen den browser_autopwn Exploit auf, welcher aus 20 Modulen besteht und verschiedene Browser testet, Internet Explorer, Firefox, Safari, Opera, aber auch generelle Sicherheitslücken wie Java, Flash etc. Dieser Test kann sehr hilfreich sein, um bestehende Systeme mit Ihrer Konfiguration auf Sicherheitslücken zu prüfen!
Dieses Modul startet einen eigenen Webserver und testet beim aufrufen der URL des Webservers mittels Javascript um welchen Browser es sich handelt und leitet zu den entsprechenden Sicherheitslücken um.
Der Vorteil bei dem auxilary ist das sich die session automatisch an in einem neuen Prozess versteckt in diesem Fall in dem harmlosen Prozess notepad.exe, der Internet Explorer in diesem Fall schließt sich danach und man sieht keine Fehlermeldung.
Nachdem die Session offen ist, wie man im Prompt erkennen kann gibt man einfach den Befehl sessions -i 2 an.
Mit getuid sehen wir als welcher Benutzer wir unterwegs sind in unserer VM Maschine. In unserem Fall auf der Maschine 4Pentest-xxxx als Administrator. Weil uns diese Rechte nicht ausreichen erweitern wir diese nicht über getprivs damit können wir unsere Rechte erweitern falls, getsystem nicht funktioniert.
Jetzt wollen wir allerdings uns verstecken im System von Windows, dazu migrieren wir uns von dem ursprünglichen notepad.exe Prozess welcher unter Administratoren Rechte läuft unter einen svhost.exe Prozess welcher im Ring-0 also mit für normal sterbliche nicht erreichbaren Benutzerrechten liegt. In diesem Modus arbeiten die Treiber von Firewalls, Antivirusprogrammen, IDS. Über getpid (prozessid) wissen wir das wir noch in 508 sind, nun tippen wir ps ein und sehen alle Prozesse suchen uns einen Systemprozess PID 856 aus und (grüner Rahmen). Tippen den simplen Befehl migrate 856 ein und haben es geschafft und laufen nun physisch im Arbeitsspeicher vom Ring0 Prozess svhost.exe
To be continued….