1Eine Einführung in das Pentesting und in Exploiting-Frameworks
Bevor ich im weiteren Verlauf des Buches mit einer detaillierten Darstellung des Metasploit-Frameworks und dessen praktischer Anwendung beginne, betrachten wir im folgenden Kapitel zunächst einige grundlegende Aspekte rund um die Pentesting-Thematik.
Unter anderem werden wir die einzelnen Phasen eines Penetrationstests betrachten. Ich werde außerdem erläutern, worum es sich bei einem Exploiting-Framework handelt und was es typischerweise umfasst. Neben Metasploit gibt es noch weitere, weit verbreitete Frameworks, die in einem eigenen Abschnitt vorgestellt werden. Ebenso lernen Sie einige Dokumentationswerkzeuge kennen. Schließlich stellen wir Überlegungen zum eigenen Testlabor an und betrachten unterschiedliche Lern- und Testsysteme.
1.1Was ist Pentesting?
Prinzipiell geht es im ersten Schritt eines Pentests darum, Schwachstellen zu erkennen und sie im Anschluss zu bewerten, um darauf basierend geeignete Gegenmaßnahmen erarbeiten zu können. Während automatisierte Vulnerability-Scans im Grunde genommen dieselbe Zielsetzung haben, werden die Ergebnisse eines professionellen Penetrationstests erheblich detaillierter und durch die manuelle Arbeit umfangreicher und korrekter sein. Durch die manuellen Tätigkeiten des Pentesters werden die Ergebnisse eines Penetrationstests in der Regel keine bzw. kaum Schwachstellen der Kategorie False-Positive beinhalten.
Als False Positives werden »falsch« gemeldete Schwachstellen bezeichnet, die zwar häufig von automatisierten Tools als Schwachstellen eingestuft werden, allerdings auf dem Zielsystem entweder gar nicht vorhanden sind oder aufgrund vorhandener Gegenmaßnahmen nicht ausnutzbar sind.
Während Vulnerability-Scanner typischerweise ausschließlich Schwachstellen erkennen, wofür der Hersteller dieses Scanners entsprechende Module integriert hat, verfügt ein Pentester über weitere Möglichkeiten, potenzielle Schwachstellen auszumachen. Im einfachsten Fall reicht bereits eine einfache Suche nach einer erkannten Versionsnummer auf einem der bekannten Internetportale für Exploit-Code aus. Zudem haben Vulnerability-Scanner typischerweise das Problem, dass sie nicht imstande sind, potenzielle Schwachstellen zu verifizieren, wodurch es zur bereits erwähnten False-Positive-Problematik kommt.
Information: Es gibt auch Vulnerability-Scanner, die Exploits integriert haben und dadurch oftmals die dargestellte Problematik in Teilbereichen umgehen können.
Der Scanner glaubt bei False-Positives, eine Schwachstelle erkannt zu haben, kann sie allerdings nicht durch den Einsatz von Exploit-Code oder weiteren Tools bzw. Angriffsmethoden bestätigen. Im darauf basierenden Bericht wird dementsprechend eine kritische Schwachstelle aufgeführt, die das geprüfte System allerdings nicht aufweist. Ein Pentester wird typischerweise im Rahmen seiner Tätigkeiten einen Schritt weitergehen und die Schwachstelle durch manuelle Arbeiten wie den Einsatz weiterer Tools, Module oder eines Exploits verifizieren. Dieser zusätzliche manuelle Schritt ermöglicht in den meisten Fällen eine klare Bewertung, ob eine Schwachstelle nicht nur möglicherweise vorhanden ist und sich möglicherweise für eine Kompromittierung eines Systems eignet, sondern dass es sich um ein tatsächlich vorhandenes und kritisches Bedrohungsszenario handelt. Auf Basis solcher Ergebnisse lassen sich entsprechend klare Empfehlung aussprechen. Solche Empfehlungen mit einem tatsächlich vorhandenen Bedrohungsszenario sind ungemein wichtig, um eine korrekte Priorisierung seitens der Verantwortlichen erst möglich zu machen. Diese sollten sofort erkennen, um welche Schwachstellen sie sich unverzüglich kümmern müssen und welche eine weitere, interne Bewertung nach sich ziehen können.
Viele Systeme und Applikationen sind zudem hochkomplex. Als Beispiel sei hier eine spezielle intern programmierte Webapplikation angeführt. Auch für Analysetools, die auf Webapplikationen optimiert sind, ist es häufig nicht möglich, solche Applikationen vollständig und automatisiert auf Schwachstellen zu testen. Ein Pentester wird an dieser Stelle durch manuelle Analyse die Funktionsweise der Applikation analysieren, wodurch es überhaupt erst möglich wird, weitere Schwachstellen zu erkennen und diese beispielsweise im Anschluss für verkettete Angriffe zu nutzen. Durch solche verketteten Angriffe kann eine mögliche Eskalationskette ermittelt werden, in der unterschiedliche Schwachstellen miteinander kombiniert werden, um dadurch das tatsächliche Bedrohungsszenario darzustellen.
Folgendes Szenario stellt ein kleines Beispiel einer möglichen Eskalationskette dar, die sich im Rahmen eines durchgeführten Penetrationstests in ähnlicher Weise abgespielt hat:
Im Rahmen einer umfangreichen Sicherheitsanalyse eines international tätigen Konzerns wird eine Simulation eines gestohlenen Notebooks durchgeführt. Unternehmen bzw. IT-Abteilungen, die eine hohe Anzahl mobiler Geräte verwalten und absichern müssen, sind häufig von einer entsprechend hohen Verlustzahl dieser Geräte betroffen. Werden keine speziellen Sicherheitsmaßnahmen zum Schutz sensibler Daten eingesetzt, ist es einem Angreifer unter Umständen möglich, ein gestohlenes Notebook für einen erfolgreichen Zugriff auf das interne Unternehmensnetzwerk zu nutzen.
Bei der durchgeführten Analyse des Notebooks ist es wegen fehlender Festplattenverschlüsselung möglich, das System nach Datenspuren und Passwörtern zu analysieren. In der History des Browsers lässt sich die Internetadresse der SSL-VPN-Verbindung auslesen, und der nicht gesicherte Passwortsafe liefert die benötigten Informationen für einen erfolgreichen Anmeldevorgang.
Der Pentester liest noch den Windows-Passwort-Hash des lokalen Administrator-Accounts aus und meldet sich über das SSL-VPN im Unternehmensnetzwerk an. Hierfür konnten die bereits ermittelten Benutzerinformationen des nicht gesicherten Passwortsafes genutzt werden. An dieser Stelle hat der Angreifer einen nicht privilegierten Zugriff auf das Unternehmensnetzwerk erhalten. Dieser nicht privilegierte Zugang dient im weiteren Verlauf sozusagen als Sprungbrett in das interne Netzwerk und ermöglicht weiterführende Angriffe.
Anmerkung: Eine sogenannte Zweifaktor-Authentifizierung hätte einen erfolgreichen Anmeldevorgang an dieser Stelle erheblich erschwert oder sogar unmöglich gemacht.
Nachdem die Administratoren auf allen Systemen dasselbe lokale Administrator-Passwort einsetzen, konnte sich der Pentester unter Zuhilfenahme des ausgelesenen Windows-Hash sowie der Pass-the-Hash-Methode (diese wird im Verlauf des Buches, in Abschnitt 9.2, noch detailliert dargestellt) und ohne Wissen des Klartext-Passwortes direkt an weiteren Systemen anmelden. Dies ermöglichte ihm weiteren Systemzugriff mit lokalen administrativen Berechtigungen. Als lokaler Administrator angemeldet lässt sich erkennen, dass er unter anderem auf einem System gelandet ist, auf dem vor kurzem ein Domain-Administrator angemeldet war. Bei einer solchen Anmeldung hinterlässt der Benutzer automatisch sein Authentifizierungstoken auf dem System, das sich unter Umständen weiterhin auf dem System befindet und sich für Angriffe einsetzen lässt. Im folgenden Schritt ist es dem Pentester dann möglich, das Token des Domain-Administrators zu übernehmen und dadurch die Identität dieses wichtigen Domain-Users (siehe Abschnitt 5.8.1). Der Pentester kann sich ab sofort im internen Netzwerk als vollwertiger Domain-Administrator bewegen, einen neuen administrativen Domain-User anlegen und dadurch seinen weiteren Zugang zum Netzwerk sichern.
Dem Pentester war e...