Nachdem wir die theoretischen Grundlagen des Penetrationstests abgehandelt haben, kommen wir nun zu den konkreten Fragestellungen. In diesem Abschnitt beschreiben wir alles rund um die Organisation und Durchführung eines Penetrationstests.
Eine sehr nützliche Quelle für alle Aspekte rund um die Durchführung von Pentests ist www.pentest-standard.org. Hier finden Sie eine Fülle von Informationen und Guidelines, die Ihnen als wertvoller Leitfaden dienen können. Die Seite ist schon recht alt, aber die Grundstruktur von Pentests hat sich nicht grundlegend geändert.
32.3.1 Die Beauftragung
Penetrationstests können sowohl intern durch eigene Mitarbeiter als auch durch externe Dienstleister durchgeführt werden. Periodische Tests durch externe Pentester sind wichtig, da interne Mitarbeiter zwar die eigenen Schwachstellen im Zweifel besser kennen, aber irgendwann »betriebsblind« werden. Externe Penetrationstester haben den Blick von außen und bringen Erfahrung von vielen unterschiedlichen Kunden mit. Ein gesunder Mix zwischen internen und externen Penetrationstests ist in der Praxis daher oft am effektivsten.
Eigene Mitarbeiter mit einem Penetrationstest zu beauftragen ist organisatorisch bzw. rechtlich oft einfacher, da sie weisungsgebunden und ohnehin zur Verschwiegenheit verpflichtet sind und im Rahmen des Arbeitsvertrags viele Regelungen bereits gelten. Gehen wir in diesem Szenario einmal davon aus, dass Sie als externer Dienstleister mit einem Penetrationstest beauftragt werden sollen.
Diese Beauftragung durch den Kunden ist für Sie als Pentester von größter Wichtigkeit und bewahrt Sie vor rechtlichen Konsequenzen! Für einen Penetrationstest ist eine klare Beauftragung seitens des Unternehmens oder der Organisation notwendig. Dabei reicht es nicht, dass der IT-Sicherheitsbeauftragte Ihnen bei einem Kaffee die Zustimmung gibt: »Versuchen Sie doch einmal, in unsere Systeme einzudringen, ich bin gespannt, wie weit Sie kommen!« Nein, es muss genau festgelegt werden, in welchem Rahmen der Test durchgeführt werden soll. Dies wird dann in einem Vertrag, dem beide Seiten zustimmen müssen, festgehalten. Achten Sie darauf, dass nur Berechtigte seitens des Auftraggebers den Vertrag gegenzeichnen.
Am Anfang steht in der Regel ein Gespräch mit dem Auftraggeber. Oft weiß der Auftraggeber noch nicht genau, worauf es ankommt und welche Optionen es gibt. Hier ist es wichtig, sich als Berater zu verstehen und ein für den Kunden sinnvolles Angebot zu erstellen. Dazu lassen Sie sich zunächst so viele Informationen wie möglich über die Rahmenbedingungen und technischen Gegebenheiten geben. Anschließend müssen folgende Fragestellungen möglichst detailliert geklärt und im Auftrag schriftlich fixiert werden:
Was ist die Zielsetzung des Penetrationstests?
Aufgrund welcher Basis soll der Penetrationstest durchgeführt werden? Gibt es rechtliche Bestimmungen oder andere Anforderungen, die den Rahmen definieren?
Welche Komponenten sollen konkret getestet werden? Welche Teile der Infrastruktur können mit einbezogen werden und welche bleiben außen vor?
Welcher Zeitrahmen steht zur Verfügung?
Welche Art von Test soll durchgeführt werden: Black-Box-, Grey-Box- oder White-Box-Test? Ist evtl. ein Red Teaming erwünscht?
Ist ein mehrstufiges Vorgehen sinnvoll? Zum Beispiel zunächst einen Black-Box-Test durchzuführen und anschließend einen aggressiveren White-Box-Test?
Soll der Test von außerhalb oder innerhalb der Organisation durchgeführt werden?
Soll ein authenticated oder unauthenticated Test durchgeführt werden? Mit anderen Worten: Stehen dem Pentester Login-Daten zur Verfügung?
Wie werden bereitgestellte oder ermittelte sensible Daten durch den Pentester gespeichert und ggf. wieder gelöscht?
Hat der Pentester einen physischen und/oder Netzzugang zum internen Netzwerk?
Sollen die Tests angekündigt bzw. abgesprochen werden oder nicht? Wer muss ggf. informiert werden?
Wie aggressiv können/dürfen die Tests sein? Sind Denial-of-Service-Angriffe erlaubt? Welche Art von Angriffen darf der Tester durchführen?
Welche Tools und Methoden werden eingesetzt? Auf diesen Punkt gehen wir gleich noch genauer ein.
Sind Social-Engineering-Tests erwünscht?
Soll die physische Zugangssicherheit geprüft werden?
Tiefe des Tests: Wie viel Freiheit hat der Pentester (darf er via Pivoting so weit wie möglich in das Zielnetzwerk eindringen oder soll nur die erfolgreiche Kompromittierung des Perimetersystems dokumentiert werden)?
Soll eine bestimmte Reihenfolge (im Sinne der Priorität) der Zielsysteme eingehalten werden?
Welche Techniken und Methoden werden explizit ausgeschlossen?
Sind bestimmte außergewöhnliche Informationen im Pentest-Report zu erfassen oder reicht der Standard-Report?
Vereinbarung eines Non-Disclosure Agreements (NDA), also einer Verschwiegenheitserklärung, die von allen beteiligten Pentestern unterzeichnet werden muss.
Je nach Szenario müssen weitere Punkte geklärt werden. Je detaillierter der Auftrag festgelegt ist, desto sicherer ist der Boden, auf dem der Pentester steht. Alle Rahmenbedingungen sollten genau abgesprochen werden.
32.3.2 Methodik der Durchführung
Ein professioneller Penetrationstest ist in der Regel durch eine systematische Vorgehensweise geprägt. Die Wahl der Vorgehensweise sollte Bestandteil des Penetrationstest-Vertrags sein. Auch wenn erfahrene Pentester mit der Zeit eine eigene Herangehensweise entwickeln, so muss das Rad nicht unbedingt neu erfunden werden. Es existieren einige Standards, die der Pentester als Basis für seine Vorgehensweise nutzen kann.
MITRE ATT&CK Framework
Dieses vom MITRE unter https://attack.mitre.org zur freien Verfügung bereitgestellte Framework dient als Knowledge Base für »Adversary Tactics«, also gegnerische Taktiken, sprich: Angriffstechniken. Es basiert auf Beobachtungen in der realen Welt und dient zur Entwicklung von spezifischen Bedrohungsmodellen und Methodologien in allen Bereichen der Wirtschaft und Verwaltung. Grundsätzlich werden die Informationen in Matrizen dargestellt und in drei grundlegende Sammlungen aufgeteilt: Enterprise, Mobile und ICS (Industrial Control Systems).
Die Matrix für den Bereich Enterprise, also für Unternehmensumgebungen, enthält 14 Taktik-Kategorien. Dazu gehören Reconnaissance, Initial Access, Privilege Escalation und Lateral Movement, also Vorgehensweisen, die wir im Rahmen der Hacking-Phasen und im Rahmen dieses Buches immer wieder genannt haben. Das MITRE ATT&ACK Framework bietet einen umfassenden Überblick und eine hervorragende Übersicht über wichtige Angriffsvektoren und effektive Verteidigungsmaßnahmen. Es ist eine wertvolle Quelle für Security-Audits.
Open Source Security Testing Methodology Manual (OSSTMM)
Vom Institute for Security and Open Methodologies, kurz: ISECOM, wird ein De-facto-Standarddokument namens OSSTMM entwickelt und als Open Source bereitgestellt. Es ist unter www.isecom.org/OSSTMM.3.pdf erhältlich. OSSTMM enthält eine Methodik für umfassende Sicherheitstests nahezu aller Aspekte, die im Rahmen eines Penetrationstests berücksichtigt werden müssen.
Das Dokument umfasst in der Version 3 von 2010 über 200 Seiten und kann für so ziemlich alle Audit-Varianten, inklusive Penetrationstests, Vulnerability Assessments, Red Teaming und Blue Teaming und andere genutzt und angepasst werden. Trotz seines Alters ist es nach wie vor fast uneingeschränkt nutzbar, da sich die Methodik im Gegensatz zur Technik nicht grundlegend geändert hat.
Die eigentliche Methode wird in fünf Channels unterteilt, die alle Aspekte der IT-Sicherheit berücksichtigen und die wiederum aus einzelnen Modulen bestehen. Diese Module werden in Form von Tasks, also Aufgabenpaketen, durchlaufen.
OSSTMM untersucht den Status aller relevanten Sicherheitskomponenten und -aspekte und quantifiziert diese durch Formeln. Dies wird als Risk Assessment Value (RAV) bezeichnet. Der Vorteil ist eine Vergleichsmöglichkeit zweier Tests und deren Ergebnisse, die Replizierbarkeit der Ergebnisse und die Vollständigkeit und Genauigkeit durch das Zahlenwerk.
Der Nachteil ist, dass einige Fakten und Zusammenhänge nur unzureichend als Zahl ausgedrückt werden können und daher das Bild verzerrt werden könnte. Zwar werden die errechneten Werte mit Nachkommastellen dargestellt und suggerieren hier einen sehr genauen Wert, jedoch besteht viel Spielraum seitens des Auditors bzw. Pentesters bei der Bewertung der Eingangswerte. Zudem sind die Berechnungen teilweise recht speziell und nicht immer auf den ersten Blick nachvollziehbar, ohne sich damit im Detail auseinanderzusetzen.
Doch selbst wenn Sie das Bewertungssystem nicht übernehmen wollen (wir sehen dies nach unserer Erfahrung auch kritisch), können Sie dennoch den systematischen Ansatz aus OSSTMM auch isoliert nutzen.
Open Web Application Security Project (OWASP)
Auch wenn wir uns bei unseren bisherigen Betrachtungen darauf konzentriert haben, welche Top-10-Schwachstellen OWASP identifiziert hat, so ist dieses Projekt doch noch deutlich vielschichtiger. Mit seinen über 100 Projekten liefert OWASP jede Menge Anleitungen, Checklisten und Tools, die von Security-Auditoren und Pentestern genutzt werden können, um für die jeweiligen Bereiche (Webanwendungen, IoT-Hacking u.a.) entsprechende Vorgehensweisen zu entwickeln. Dabei liefert OWASP auch komplette Anleitungen für Sicherheitstests, wie z.B. der OWASP Testing Guide v4: www.owasp.org/index.php/OWASP_Testing_Guide_v4_Table_of_Contents. Die Anleitungen sind detailliert, umfassen aber im Wesentlichen den Bereich »Webanwendungen«.
Penetration Testing Execution Standard (PTES)
Auf der Seite www.pentest-standard.org, die wir Ihnen bereits früher in diesem Kapitel vorgestellt haben, finden Sie neben vielen anderen Informationen rund um Penetrationstests auch eine Richtlinie zur Durchführung von Pentests. Sie nennt sich PTES Technical Guidelines. Die angebotenen Informationen sind umfassend und eine wahre Fundgrube mit unzähligen Ressourcen.
Zum Teil werden die Vorgänge sogar technisch dargestellt, sodass PTES hier schon fast als Lehrwerk gelten kann. In jedem Fall lohnt sich das Studium dieser Website und der dort genannten Ressourcen. Allerdings sind einige Bereiche auch noch nicht ausgefüllt, sodass das Werk unfertig erscheint. Während es als grundsätzlicher Leitfaden sehr gut geeignet ist, kann man bisher nur eingeschränkt von einer eigenen Methodik sprechen. Trotzdem erfreut sich PTES großer Beliebtheit.
Darüber hinaus gibt es noch weitere frei verfügbare Dokumente und Frameworks zur methodischen Durchführung von Penetrationstests. Auch EC-Council, das Unternehmen, von dem der CEH stammt, stellt mit der EC-Council LPT Methodology eine Methodik bereit, die allerdings closed source und damit nicht allgemein zugänglich ist. Sie erhalten Zugriff auf diese Methodik, wenn Sie sich zum Licensed Penetration Tester (LPT) zertifizieren lassen. Dies ist die höchste Zertifizierungsstufe des EC-Council.
Auch andere große Anbieter, wie z.B. IBM oder McAfee Foundstone, haben eigene, proprietäre Vorgehensweisen entwickelt, die von ihren Mitarbeitern bei internen und externen Penetrationstests und Security Audits eingesetzt werden. Diese sind allerdings in der Regel nicht durch Außenstehende einsehbar.
32.3.3 Praxistipps
Der dumme Mensch lernt aus seinen eigenen Fehlern – der schlaue aus den Fehlern anderer ... An dieser Stelle möchten wir Ihnen aus der Praxis ein paar Hinweise geben, die Ihnen die eine oder andere negative Erfahrung ersparen kann und Ihre Effizienz verbessert.
Diamond Model of Intrusion Analysis
Ein Vorgehensmodell, das im Curriculum des CEHv12 eingeführt wurde, ist das Diamond Model of Intrusion Analysis. Wie der Name schon andeutet, handelt es sich hier nicht um ein präventives Modell oder ein Modell zur Vorgehensweise für Pentests, sondern um einen Ansatz, wie ein bereits erfolgter Einbruch forensisch analysiert werden kann. Zudem liefert das Modell Ansätze zur Entwicklung von Schutzmaßnahmen, um sich vor derartigen Angriffen zukünftig effektiv zu schützen. Wer sich auf die CEH-Prüfung vorbereiten möchte, sollte sich näher mit den Konzepten dieses Ansatzes beschäftigen. Eine mögliche Quelle dazu ist https://flare.io/learn/resources/blog/diamond-model/.
Organisatorische Details vorher klären
Ein typisches Problem in der Praxis ist eine mangelnde Vorbereitung beiderseits – sowohl des Pentesters als auch des Auftraggebers. So wird im Vorfeld z.B. nicht ausreichend geklärt, wie der erste Tag abläuft und welche Voraussetzungen zu erfüllen sind. Stellen Sie sich einen typischen Montagmorgen vor: Sie fahren mit Ihrem Kollegen zum Standort des Kunden und erklären am Empfang, dass Sie für einen Pentest beauftragt wurden und von Herrn Meyer erwartet werden. Die freundliche Dame am Empfang stellt fest, dass Herr Meyer heute gar nicht im Haus ist.
Leider haben Sie keine weiteren Kontaktdaten für den Notfall und auch keine Telefonnummern ... Sie haben vergessen, diese Informationen beim Vertragsabschluss einzufordern. Frau Wazlav, so heißt die Dame am Empfang, gibt aber nicht auf und ruft verschiedene Mitarbeiter an. Irgendwann findet sich eine Frau Schulz, die über Ihr Kommen ebenfalls informiert wurde und Sie zu den für Sie reservierten Arbeitsplätzen führt. Sie stöpseln sich mit Ihren Laptops ein und stellen fest, dass Sie keinen Netzzugang haben.
Frau Schulz sucht den verantwortlichen Netzwerkadministrator, der die beiden Ports Ihrer Arbeitsplätze nach einer Stunde freischaltet. Leider kommen Sie jedoch nicht durch die Firewalls, um an die Zielsysteme zu gelangen, die Sie im Rahmen eines White-Box-Tests prüfen sollen. Es vergeht eine weitere Stunde, bis der Firewall-Admin die entsprechenden Regeln geschaltet hat, da er sich zunächst weigert, externen Mitarbeitern Zugang zum entsprechenden System zu geben. Später wird ihm vom Vorgesetzten die Freigabe hierzu erteilt, doch dieser Vorgang nimmt ebenfalls einige Zeit in Anspruch. Natürlich fehlen einige Ports, sodass Sie ihn erneut um seine Hilfe bitten. Das Spiel wiederholt sich.
Im Vorfeld haben Sie Zugangsdaten für die Webanwendung erhalten, doch leider stellt sich heraus, dass der Account nicht existiert ... es vergeht eine weitere Stunde, bis der Zugriff funktioniert. So geht der erste Tag vorüber, ohne dass Wesentliches in der Sache passiert ist. Das kostet Zeit und Nerven und ist hochgradig ineffizient.
Dieses Szenario ist nicht so weit hergeholt, wie Sie vielleicht denken. Tatsächlich sollten Sie dem Kunden im Vorfeld eine Checkliste an die Hand geben, die seine vorbereitenden Aufgaben enthält, und sicherstellen, dass Sie bereits am ersten Tag wirklich produktiv werden können. Insbesondere Kontaktdaten aller Verantwortlichen sollten Sie einfordern, damit Probleme schnell und zielgerichtet gelöst werden können.
Kommunikation mit dem Kunden
Externe Pentester werden von internen Mitarbeitern im Netzwerk- und Sicherheitsbereich oftmals nicht als »Freunde« empfangen. Stattdessen schlägt ihnen eine ordentliche Portion Skepsis entgegen und die Kooperationsbereitschaft hält sich in engen Grenzen. Hier gilt es, die Zielstellung klar zu kommunizieren und vorab sicherzustellen, dass alle Beteiligten von ihren Vorgesetzten instruiert wurden – immer vorausgesetzt, es handelt sich um einen internen Test im Hause des Kunden. Bei externen Black-Box-Tests sind natürlich deutlich weniger Voraussetzungen zu erfüllen, da der Pentester keinen Arbeitsplatz beim Auftraggeber benötigt und auch keine Freischaltungen auf Netzwerk- oder Firewall-Ebene erforderlich sind.
Auf jeden Fall sollten Sie dafür sorgen, dass Sie nicht als Störenfriede wahrgenommen werden. In gemeinsamen, vorbereitenden Meetings sollten die Verantwortlichen informiert und beauftragt werden, Ihnen alle erforderlichen Informationen zukommen zu lassen. Bei White-Box-Tests sollte den Beteiligten auch klar sein, dass es nicht zielführend ist, Informationen zurückzuhalten. Genau das passiert jedoch in der Praxis häufig, da die Verantwortlichen nicht zu viel preisgeben möchten.
Das Ziel von White-Box-Tests ist es jedoch, mit möglichst umfassendem Wissen die Zielsysteme zu prüfen. Dies muss von der Geschäftsführung zuvor in geeigneter Weise an die betreffenden Mitarbeiter kommuniziert werden, damit diese sich nicht »querstellen«, wenn von Ihrer Seite Fragen kommen und Informationen angefordert werden. Die Kommunikation mit den Beteiligten ist eine nicht zu unterschätzende Herausforderung. Weisen Sie die Mitarbeiter gegebenenfalls darauf hin, dass Sie eine NDA unterschrieben haben und von daher ohnehin zur Geheimhaltung verpflichtet sind – abgesehen von den ethischen Gesichtspunkten.
Loben Sie den verantwortlichen Administrator auch ruhig einmal, wenn Sie einen Prozess oder eine Konfiguration finden, den oder die Sie als sicher erachten. Lassen Sie ihn wissen, dass Sie nicht dazu da sind, die Arbeit der Security-Admins zu zerreißen und sie bloßzustellen. Hier herrschen in der Praxis oft viele Befindlichkeiten.
Bereiten Sie sich vor!
Abgesehen von den bisher geschilderten Problemen, die in erster Linie auf Kundenseite auftreten, können auch Sie als Pentester Ihren Beitrag für einen reibungslosen und effizienten Ablauf leisten. Sie sollten sich gut auf Ihren Auftrag vorbereiten und im Vorfeld bereits einen genauen Ablaufplan festlegen. Je nach Vorkenntnissen über das Ziel können Sie Ihr Vorgehen detailliert planen.
In diesem Sinne sollten Sie auch schon in den ersten Gesprächen mit dem Kunden so viele Informationen sammeln wie möglich. Im Anschluss können Sie einen Pentest-Plan und entsprechende Checklisten erstellen. Prüfen Sie auch Ihr Equipment – nichts ist peinlicher, als wenn Sie ohne entsprechende Ausrüstung beim Kunden ankommen und feststellen, dass Ihr Laptop eine veraltete Version der benötigten Software hat oder bestimmte Hardware-Komponenten wie z.B. der HackRF One oder eine Verstärkerantenne fehlen. Wie? Nein! Uns ist das noch nie passiert ...!
Schauen Sie dahin, wo es niemand erwartet
Es ist bereits dunkel. Ein Mann sucht etwas unter einer Laterne im Park. Ein Passant fragt, was er denn suchen würde, der Mann antwortet: »Meinen Schlüssel« Der Passant fragt, wo er ihn verloren hätte, darauf der Mann: »Irgendwo dahinten im Dunklen.« Darauf fragt er ihn, warum er dann unter der Lampe suchen würde. Der Mann antwortet: »Na, da hinten sehe ich doch nichts ...«
Es passiert nicht selten, dass der Auftraggeber den Pentester an Stellen suchen lässt, von denen er mit großer Wahrscheinlichkeit davon ausgehen kann, dass dort keine Schwachstellen zu finden sind. Hier hilft ein Perspektivenwechsel: Suchen Sie an Stellen, die niemand auf dem Schirm hat, die also, bildlich gesprochen, im Dunklen liegen.
Ein Beispiel hierzu: Der Kunde beauftragt Sie, eine Webanwendung zu prüfen, die kürzlich Opfer eines Angriffs wurde – bisher ist nicht geklärt, wie der Angriff stattgefunden hat. Sie analysieren die Webanwendung und finden partout keine Schwachstelle.
Ihre nächste Idee ist, den Webserver als Plattform zu untersuchen. Zunächst ist der Kunde skeptisch, da dieser doch nichts mit der Webanwendung selbst zu tun hätte. Schließlich gibt er nach und gestattet Ihnen Zugriff auf den Webserver via SSH. Sie benötigen keine zehn Minuten und haben das Problem gefunden: Eine RPC-Schwachstelle hat dazu geführt, dass die Angreifer eine Backdoor installieren konnten und damit direkten Zugriff auf den Webserver und damit auch auf die Webanwendung hatten.
Nehmen Sie nichts als gegeben hin!
Eine Grundregel, die für alle Szenarien gilt, in denen Sie etwas finden sollen, was bisher niemand sonst gefunden hat – egal ob Troubleshooting oder Pentesting: Nehmen Sie niemals etwas als gegeben hin! Wenn Ihnen der Admin eines Systems Stein und Bein schwört, dass er das System übertrieben gehärtet hat und selbst andere Pentester schon daran gescheitert wären, was soll’s? Testen Sie dieses System, als ob Sie diese Information nie erhalten hätten. Gehen Sie auf keinen Fall davon aus, dass der Versuch Zeitverschwendung sei. Letztlich wissen Sie nicht, was der Admin konkret gemacht und was der damalige Pentester versucht hat.
Auch Ihre eigenen Annahmen sind häufig falsch, also hinterfragen Sie sich und testen Sie Dinge, von denen Sie annehmen, dass es eigentlich unmöglich sei, hier zu einem Erfolg zu gelangen. Nehmen Sie insbesondere nicht an, dass bestimmte Security-Maßnahmen zwangsläufig greifen. Kein Test ist zu dumm, keine Phishing-Mail zu blöd, als dass sie nicht doch die Chance beinhalten, zu einem überraschenden Ergebnis zu gelangen.
Tests wiederholen
Hier gelangen wir an einen Punkt, den Sie nicht unbedingt selbst in der Hand haben, da der Kunde hier einwilligen (und bezahlen) muss: Sie sollten darauf hinwirken, den Pentest nach einer bestimmten Zeit, z.B. drei Monaten, zu wiederholen. Dadurch setzen Sie den Kunden unter Druck, die gefundenen Schwachstellen zeitnah zu beseitigen, und können die Umsetzung kontrollieren.
Es kommt sehr häufig vor, dass bei einem erneuten Test (auch als Re-Test bezeichnet) eine verbleibende Reihe von Schwachstellen existiert. Das wird das Management des Unternehmens vermutlich wissen wollen, auch wenn Sie hier vermutlich keine Freunde unter den Sicherheitsverantwortlichen finden werden – da diese ihren Job an dieser Stelle entweder nur unzureichend gemacht haben oder aufgrund von Arbeitsüberlastung oder mangels Budget nicht dazu in der Lage waren, die Schwachstellen zeitnah zu beseitigen. Im Endeffekt sollten Sie durch eine entsprechend positive Kommunikation jedoch in der Lage sein, alle ins Boot zu holen und klarzumachen, dass Sie die Verbesserung der Sicherheit im Sinn haben und niemandem auf die Füße treten wollen.