Im ersten Artikel unserer Artikelserie »IT-Security« haben wir die IT-Sicherheitsaudits des Fraunhofer IESE vorgestellt und dabei die einzelnen zugehörigen Phasen eines IT-Sicherheitsaudits beschrieben. Im Rahmen der ersten Phase sind die Penetrationstests ein essenzieller Bestandteil. Mit diesem zweiten Artikel liefern wir hilfreiche Definitionen zu gängigen Begrifflichkeiten im Kontext der IT-Sicherheitspraxis und gewähren einen Einblick in diesen Bereich unter Verwendung des Tools Nmap.
Was sind Penetrationstests?
Dan Farmer und Wietse Venema veröffentlichten 1993 den Artikel »Improving the Security of Your Site by Breaking Into It«. In diesem Artikel betrachten sie verschiedene Wege zur Beurteilung der Sicherheit eines Systems von außen, aus der Perspektive eines potenziellen Angreifers. Der Begriff »Penetrationstest« etablierte sich dann im Jahr 1995 mit der Veröffentlichung des ersten Unix-basierten Verwundbarkeitsscanners »SATAN« (Security Administrator Tool for Analyzing Networks) von Dan Farmer und Wietse Venema. Mit diesem Tool ließen sich Rechner erstmals automatisiert auf Schwachstellen untersuchen. Heutzutage sind viele freie und kommerzielle Tools verfügbar, die das Suchen nach Schwachstellen relativ komfortabel gestalten.
Es ist heutzutage für größere Unternehmen üblich, zur Abwehr von Angriffen gegen ihre IT-Systeme und Netze präventive Sicherheitskonzepte zu erstellen und diese mithilfe verschiedener Maßnahmen umzusetzen. Penetrationstests werden dann genutzt, um die Wirksamkeit dieser umgesetzten IT-Sicherheitsmaßnahmen zu überprüfen, indem sie mögliche Wege von Angreifern gehen, um vorhandene Schwächen aufzuspüren. Es ist davon auszugehen, dass Angreifer die üblichen Sicherheitsmaßnahmen und Defizite gut kennen und gezielt danach suchen. Dabei suchen sie nicht nur nach dem Unternehmen unbekannten Lücken in der Absicherung, sondern auch nach bereits bekannten Verwundbarkeiten. Letzteres werden wir in diesem Artikel betrachten.
Ziele eines Penetrationstests
Die Zielsetzung eines Penetrationstests kann die Erhöhung der Sicherheit eines technischen Systems oder der organisatorischen oder personellen Infrastruktur, die Bestätigung der IT-Sicherheit durch externe Dritte oder die Identifikation von Schwachstellen sein.
Vorgehen bei Penetrationstests
Das grundsätzliche Vorgehen bei der Durchführung von Penetrationstests sieht im ersten Schritt die Recherche nach Informationen über das Zielsystem bzw. die Zielsysteme vor. Im Anschluss werden die Systeme untersucht und festgestellt, welche Dienste sie anbieten. Typische Ansatzpunkte sind Firewalls, Webserver, Fernwartungszugänge oder typische Dienste wie E-Mail, FTP oder DNS. Die angebotenen Dienste werden im dritten Schritt weiter untersucht, um die eingesetzten Systeme und Anwendungen genau zu erkennen. Auf Basis dieser Ergebnisse (Anwendungstyp, -hersteller, -version) lässt sich zu diesem Zeitpunkt schon nach (bereits bekannten) Schwachstellen recherchieren. Im letzten Schritt können die Schwachstellen dann ausgenutzt werden. Die Ausgestaltung der Penetrationstests ist individuell und hängt von vielen Faktoren ab, u.a. von den Anforderungen und von der Situation des Auftraggebers.
Grundsätzlich unterscheidet man mehrere Wege, um IT-Systeme anzugreifen, zu manipulieren oder um generell Angriffe vorzubereiten: Umgehung physischer Sicherheitsmaßnahmen, Social Engineering und Angriffe über das Netzwerk. Dieser Artikel befasst sich ausschließlich mit Angriffen über das Netzwerk.
Klassifikationen von Penetrationstests
Penetrationstests lassen sich auf Basis mehrerer Kriterien klassifizieren (Quelle: Durchführungskonzept für Penetrationstests – BSI) und damit unterscheiden:
- Informationsbasis: Black-Box- und White-Box-Penetrationstests
Bei Black-Box-Tests hat der Pentester keine Informationen über das Netzwerk und muss notwendige (öffentliche) Informationen recherchieren oder als Fremder beim Unternehmen erfragen. Bei einem White-Box-Test hat der Pentester im Gegensatz dazu detailliertere Kenntnisse. Der Umfang der Kenntnisse kann aber stark variieren (von Detailkenntnissen bis hin zu eher oberflächlichen Kenntnissen). - Aggressivität des Penetrationstests
Der Unterschied reicht hier von einem passiven Scan und viel Vorsicht (sodass Systeme möglichst nicht negativ beeinflusst werden) bis hin zu abwägend oder aggressiv (kann Systeme negativ beeinflussen und auch Schäden verursachen). Welche Vorgehensweise genutzt wird, wird im Rahmen der Vorbereitungen besprochen. - Umfang des Penetrationstests
Er kann detailliert auf eine Komponente (beispielsweise einen Webserver) oder auf einen Bereich (beispielsweise die gesamte DMZ) begrenzt sein oder vollständig sein (kompletter IP-Adressbereich eines Unternehmens). - Vorgehensweise: Verdeckt oder offensichtliche Durchführung
Penetrationstests können darüber hinaus verdeckt oder offensichtlich durchgeführt werden, ggf. auch zusammen mit Mitarbeitern des Auftraggebers. - Technik: Unterschiedliche Vorgehensweisen
Wie bereits beschrieben, lässt sich, was die Technik eines Penetrationstests angeht, zwischen Netzwerk, Social Engineering, physischem Zugang und sonstiger Kommunikation unterscheiden. - Ausgangspunkt
Ein Pentester kann von »außen« (aus dem Internet kommend) testen oder von »innen« (aus einem internen Netz).
Ein einzelner Test reicht nicht
Penetrationstests sollte man nicht als einzelnes Projekt sehen, das nach der Durchführung abgeschlossen ist. Vielmehr sollte man sie als einen Prozess sehen, der kontinuierliche Penetrationstests mit unterschiedlicher Klassifikation vorsieht. Die Durchführung wird dadurch effizienter und liefert aufgrund der schrittweisen Verfeinerung bessere Ergebnisse. Die Ergebnisse müssen bei ihrer Bewertung außerdem immer in Relation zur aktuellen Umgebung betrachtet werden. Nach Behebung gefundener Verwundbarkeiten ist eine erneute Überprüfung der Wirksamkeit der durchgeführten Maßnahmen empfehlenswert.
Was ist Nmap?
Die in diesem Artikel verwendete freie Software Nmap (Kurzform von »Network Mapper«) ist ein Open-Source-Portscanner, der zur Überwachung und Sicherheitsüberprüfung von Netzwerken eingesetzt werden kann. Das ursprünglich für Linux entwickelte Tool ist mittlerweile auch für Windows und macOS (und andere weniger verbreitete Systeme) verfügbar. Mit Zenmap gibt es auch eine grafische Oberfläche für das ansonsten konsolenbasierte Programm. Es zeichnet sich besonders durch seine Flexibilität aus. Neben vielen Techniken zum Scannen von Netzwerken bietet es (auch erweiterbar durch Skripte) viele Mechanismen wie z.B. Betriebssystemerkennung und Versionserkennung. Es kann außerdem auch für sehr große Netzwerke eingesetzt werden. Es ist gut dokumentiert und wird täglich von vielen Pentestern benutzt. Von vielen Zeitschriften und Plattformen (Linux Journal, Info World, LinuxQuestions.org und Codetalker Digest) wurde es mit dem Titel »Security Product of the Year« ausgezeichnet.
Nmap ist üblicherweise in den Repositories der Linux-Distributionen enthalten oder kann von der Homepage https://nmap.org – auch für andere Betriebssysteme – bezogen werden.
Alternative Werkzeuge sind beispielsweise OpenVAS oder Tenable Nessus.
Das Testnetzwerk für diesen Artikel
Zur Demonstration der Funktionsweise von Nmap verwenden wir ein kleines typisches Netzwerk, das wie im folgenden Schaubild aufgebaut ist:
Das Schaubild zeigt einen Webserver, der in einer demilitarisierten Zone (DMZ) steht. Diese Zone ist typischerweise für aus dem Internet erreichbare Server gedacht. Der Zugang zum Unternehmensnetzwerk und anderen Zonen (im Schaubild nicht dargestellt) wird von einer Firewall geschützt. In der Firewall sind hierzu explizit Regeln zur Steuerung des Datenverkehrs definiert. Vor der Firewall ist in unserem Testnetzwerk ein Perimeterrouter installiert, der die Anbindung an das Internet sicherstellt. Zusätzlich übernimmt der Router weitere Basisfilteraufgaben.
Als Pentester führen wir in diesem Artikel einen Black-Box-Penetrationstest gegen die öffentliche IP-Adresse des Testnetzwerks durch.
Hinweis: Die IP-Adresse wurde für diese Demo zufällig gewählt.
Auf dem Webserver wird eine Webseite auf den dafür standardisierten Ports angeboten. Die Erwartungshaltung ist, dass bei einem Portscan nur die Ports 80 (http) und 443 (https) geöffnet sind. Sind mehr als nur diese Ports erreichbar, liegt wahrscheinlich ein Konfigurationsfehler in der Firewall vor.
Durchführung des Scans
Nmap bietet dem Nutzer viele Optionen zur Konfiguration eines Scans an. Um den Umfang dieses Artikels nicht zu sprengen, wird dieser Artikel nur auf die Optionen eingehen, die für die Demonstration benötigt werden. Alle verfügbaren Optionen lassen sich in der Kommandozeile mit dem Befehl nmap -h auflisten.
In diesem Artikel werden wir Nmap mit den Optionen -A und -oX verwenden.
Die Option -oX weist Nmap an, seine Ergebnisse im XML-Format auszugeben. Der dahinterstehende Dateiname spezifiziert die Zieldatei. Mit dem Programm xsltproc können wir diese XML-Datei nach dem Scan in ein HTML-Dokument umwandeln. Dadurch lassen sich die Ergebnisse gut leserlich als Webseite darstellen.
Mit der Option -A lassen sich eine Reihe von Optionen anschalten: Nmap wird versuchen, das Zielbetriebssystem zu erkennen. Darüber hinaus wird es bei gefundenen Diensten versuchen, die Version zu ermitteln. Beide Ergebnisse liefern einem Angreifer wertvolle Hinweise und erleichtern die Auswahl von möglichen Exploits für Verwundbarkeiten. Außerdem lässt sich mit dieser Option Nmap traceroute durchführen und die Script-Engine von Nmap wird angeschaltet, die parallel zum Scan Default-Skripte ausführt (z.B. Prüfen des Headers, angebotene http-Methoden etc.).
Die Befehlszeile lautet insgesamt: nmap -A –oX result.xml 192.102.162.236
Um anschließend aus der XML-Datei eine HTML-Datei zu generieren, lautet der Befehl: xsltproc result.xml -o result.html
Die Ergebnisse
Die Ergebnisse des Scans (siehe Abbildung) lieferten grundsätzlich die erwarteten Ergebnisse: Port 80 und 443 sind geöffnet. Ungewöhnlich: Darüber hinaus wird auch Port 445 als offen angezeigt. Dieser Port ist ein Beispiel für einen Service, der gewöhnlich nicht von außen zugänglich sein sollte.
Bekannte Verwundbarkeiten für die Befunde anzeigen
Nmap lässt sich, wie bereits beschrieben, durch Skripte erweitern. Mit dem Schalter -A wurden bereits Standardskripte wie beispielsweise „http-server-header“ und „http-methods“ ausgeführt. Die Skriptergebnisse werden im Ergebnisbericht separat dargestellt. Es gibt von der Community noch viele weitere Skripte, die Penetrationstester bei der Suche nach Verwundbarkeiten unterstützen. In diesem Artikel wird das Skript vulscan.nse von Marc Ruef vorgestellt. Er stellt das Script u.a. über GitHub allen Interessierten zur Verfügung. Das Script durchsucht insgesamt acht Verwundbarkeitsdatenbanken nach passenden Verwundbarkeiten für die gefundene Produktversion. Zur Installation muss das Git-Repository auf den lokalen Rechner gespeichert und das Zielverzeichnis dem Nmap Script-Verzeichnis hinzugefügt werden. In diesem Beispiel erfolgt dies über einen symbolischen Link. Die dazu notwendigen Befehle lauten:
git clone https://github.com/scipag/vulscan scipag_vulscan
ln -s `pwd`/scipag_vulscan /usr/share/nmap/scripts/vulscan
Anschließend wird ein weiterer Scan der IP-Adresse gestartet. In der Befehlszeile für Nmap muss nun aber auch das entsprechende vulscan-Script vermerkt werden (Option –script). Damit auch die Standardskripte weiter ausgeführt werden, ergänzen wir das Wort default. Wir verwenden deshalb diesen Befehl zum Starten des Scans:
nmap –A –script=default,vulscan/vulscan.nse –oX result.xml 192.102.162.236
Das Ergebnis des Scanvorgangs wird in der folgenden Grafik angezeigt. Die Liste der Befunde war aufgrund des Alters der gescannten Software sehr lang und wurde aus Gründen der Darstellung stark verkürzt. Es soll lediglich die Funktionsweise vermittelt werden. Die gefundenen Verwundbarkeiten müssen anschließend ausgewertet und evaluiert werden. Nicht alle gefundenen Verwundbarkeiten müssen für die entsprechende Konfiguration des Zielsystems zutreffen.
Ausblick
In unserem nächsten Artikel erfolgt eine genauere Analyse der Ergebnisse, welche uns bei der Entscheidungsfindung bezüglich weiterer Schritte zur Absicherung des Systems unterstützt.
Weitere Infos zu unserer Artikelserie zum Thema »IT-Security«
Dieser Artikel ist der zweite unserer mehrteiligen Artikelserie, die einen Einblick in unsere Arbeit im Bereich »IT-Security« gewährt. In unserem ersten Artikel haben wir bereits unsere IT-Sicherheitsaudits vorgestellt.
In unserem nächsten Artikel zeigen wir, wie aufgespürte Verwundbarkeiten behoben werden können und geben generelle Tipps zur Absicherung.