Penetrationstests sind ein sinnvolles Tool, um die Sicherheit von IT-Infrastrukturen sowie Anwendungen zu verbessern. Sie helfen dabei, Sicherheitslücken frühzeitig aufzudecken und bieten einem Unternehmen die Chance, Lücken noch vor einer realen Ausnutzung zu beheben. Penetrationstests stellen demnach ein effektives Mittel dar, um die Sicherheit eines Unternehmens zu erhöhen bzw. bestätigen zu lassen. Seien es Kundenanforderungen, eine bevorstehende Zertifizierung oder ein intrinsisches Bedürfnis Ihres Unternehmens nach Sicherheit. Oftmals ist die Durchführung eines Penetrationstests durch einen externen Dienstleister die zielführende Maßnahme.
Im Vorfeld der Beauftragung eines Penetrationstest wird jedoch häufig angenommen, dass das eigene Unternehmen prinzipiell sicher sei. Ein Penetrationstest sollte demnach nur wenige bis gar keine Schwachstellen identifizieren und eine Behebung dieser Feststellungen sollte ebenfalls zeitnah umgesetzt werden können. Der Einsatz monetärer Mittel und Personalressourcen sei überschaubar. Es wird demnach ein zeitnaher Pentest durch einen Externen durchgeführt, der die Sicherheit des eigenen Unternehmens mit einem grünen Siegel schriftlich festhält. Das klingt definitiv nach einem wünschenswerten Ablauf, nicht nur für Sie!
Problemstellung
In der Realität weichen die Ergebnisse eines Penetrationstests jedoch oftmals von dem erhofften Positiv-Ergebnis ab. Selbst in den wenigen Fällen, wo Anwendungen oder IT-Infrastrukturen sicher aufgebaut und betrieben werden, sind die dazugehörigen Pentest-Abschlussberichte in der Regel niemals leer. Eine Vielzahl eingesetzter Standardkonfigurationen von Webservern, Firewalls oder sonstigen Netzwerkkomponenten bieten eine Vielzahl an zu berichtender Feststellungen in einem Abschlussbericht. Gepaart mit einer standardisierten Risikobewertungsmethode wie das Common Vulnerability Scoring System (CVSS) landen solche Fehlkonfigurationen oftmals als Feststellung mit einem mittleren Risiko im Abschlussbericht.
Das Ergebnis des Penetrationstests wird daraufhin von Unternehmen als Überraschung wahrgenommen, da der Abschlussbericht die Sicherheit des Unternehmens nicht mit einem grünen Siegel bestätigt. Dadurch kommt oftmals die Notwendigkeit eines zweiten Tests, einer Wiederholungsprüfung nach Implementierung von Behebungsmaßnahmen, auf. Dies führt zu potenziell ungeplanten, jedoch erzwingenden Mehrkosten, da das Initialergebnis des Penetrationstests nicht an Dritte wie Kunden, Versicherungen usw. weitergereicht werden möchte.
Auch wenn dieser sehr wahrscheinliche Verlauf bereits im Vorfeld des Penetrationstests angesprochen wird und auch das Angebot bereits eine Wiederholungsprüfung inhaltlich sowie aufwandstechnisch aufführt, sind Kunden oftmals von dem Ergebnis eines Penetrationstests überrumpelt. Das Zusammenspiel aus einer fehlerhaften Erwartungshaltung und einer kognitiven Verzerrung wie “Survivorship Bias”, wo stets nur andere Firmen gehackt werden und man selbst noch nie einen Vorfall hatte, lassen die emotionale Erfahrung eines Penetrationstests oftmals negativ ausklingen.
Dies muss jedoch nicht sein. Durch eine eigenständige Vorbereitung auf einen Penetrationstest können vielzählige Feststellungen im Vorfeld vermieden werden. Hierdurch kommen Sie als Kunde Ihrem Wunschziel eines leeren Abschlussberichts etwas näher und ermöglichen uns Penetrationstester ein zielführenderes Testen. Dies kann zu einem frühzeitigeren Abschluss des Pentestprojekts führen und effektiv Kosten einsparen, sollte der Pentestanbieter wie die Pentest Factory transparent nach Maximalaufwänden abrechnen.
Möglichkeiten der Vorbereitung
Die Vorbereitungen auf einen Penetrationstest basieren natürlich auf den Rahmenparametern des zugrundeliegenden Penetrationstests. Da es eine Vielzahl von Testarten und Prüfobjekten gibt, werden wir uns auf allgemeine Vorbereitungsmöglichkeiten fokussieren. Diese können und sollten in einen internen Unternehmensprozess eingegliedert werden, der regelmäßig und bewusst durchgeführt wird. Unabhängig davon, ob ein Penetrationstest ansteht oder nicht.
Darüber hinaus möchten wir klarstellen, dass eine Vorbereitung im Vorfeld eines Penetrationstests nicht immer wünschenswert ist. Sollten Sie zum Beispiel seit Jahren die fehlenden Ressourcen für Ihre IT-Abteilung in der Geschäftsleitung ansprechen und endlich eine Freigabe zur Durchführung eines Penetrationstests erhalten, so sollten Sie im Vorfeld nichts selbst tätig werden. Eine temporäre Beschönigung der Ergebnisse wäre hier der falsche Ansatz, schließlich erhoffen Sie sich ein realitätsnahes Ergebnis des Penetrationstests, welches die aktuelle Situation und Abwehrkraft Ihres Unternehmens darstellt. Nur durch ein Negativergebnis können Sie Missstände in Ihrem Unternehmen auch für die Geschäftsleitung signalisieren. Auch bei der Durchführung von Phishing-Kampagnen, Interview-basierten Audits oder der Überprüfung Ihres externen IT-Dienstleisters sollten Sie die Füße still halten. Ein echter Angreifer kündigt sich schließlich auch nicht vorher an, um seine Opfer zu sensibilisieren.
Die folgenden Vorbereitungsmöglichkeiten stehen prinzipiell zur Auswahl:
- Durchführung eines aktiven Portscans auf Ihre IT-Infrastrukturkomponenten
- Identifizierung von nicht benötigten Netzwerkdiensten und Ports
- Identifizierung von fehlerhaften Firewall-Regeln
- Identifizierung von veralteten Softwarekomponenten und Schwachstellen inkl. CVEs
- Identifizierung von typischen Fehlkonfigurationen
- die Preisgabe von Versionsinformationen in HTTP-Header und Softwarebannern
- Der Einsatz von Inhalten aus einer Standardinstallation (IIS Default Webseite, Nginx oder Apache “It works” Webseite)
- Fehlende Weiterleitung von unverschlüsseltem HTTP auf das sichere HTTPS Protokoll
- uvm.
- Durchführung eines automatisierten Schwachstellenscans
- Eigenständige Identifizierung sogenannter “Low-hanging fruit” Feststellungen eines Penetrationstests
- Identifizierung von veralteten und unsicheren Softwarekomponenten inkl. CVEs
- Erhalt von empfohlenen Maßnahmen zur Behebung der identifizierten Schwachstellen
Durchführung von Portscans
Für alle nicht technischen Leser dieses Blogeintrags möchten wir kurz erläutern, was Portscanning ist und welche Vorteile es mitbringt. Netzwerkdienste, wie beispielsweise ein Webserver zur Bereitstellung einer Homepage, werden auf sogenannten Netzwerkports betrieben. Ein Netzwerkport ist eine eindeutige Adresse, mit deren Hilfe sich Verbindungen eindeutig zu Anwendungen zuordnen lassen. Eine Webseite wie dieser Blog wartet demnach auf eingehende Verbindungen auf den standardisierten Ports 80 und 443. Der Netzwerkport 80 wird hierbei üblicherweise für eine unverschlüsselte Verbindung (HTTP) eingesetzt und sollte automatisch auf den sicheren Port 443 weiterleiten. Hinter dem Port 443 verbirgt sich das sichere und verschlüsselte HTTPS-Protokoll, welches die Seiteninhalte vom Server lädt und Ihrem Clientbrowser zur Darstellung bereitstellt. Aus Angreifersicht sind diese Netzwerkports sehr interessant, da sich hinter diesen üblicherweise Dienste oder Anwendungen befinden, die potenziell angegriffen werden können. Insgesamt gibt es 65353 Ports, jeweils für verbindungslose (UDP) als auch verbindungsorientierte Kommunikationsprotokolle (TCP). Die Zuordnung zwischen einem Port und dem dahinter befindlichen Dienst ist standardisiert. Jedoch kann die Konfiguration frei variieren und muss sich nicht nach dem Standard richten. Aus der Sichtweise eines Angreifers müssen diese Ports also enumeriert werden, um zu wissen, welche Dienste angegriffen werden können. Aus Unternehmenssicht sind diese Ports wichtig, um sicherzustellen, dass nur diejenigen Dienste angeboten werden, die auch erreicht werden sollen. Alle nicht benötigten Dienste sollten geschlossen werden oder deren Eingangstür von einer Firewall abgesichert werden.
Die Identifizierung von Netzwerkports kann mittels frei verfügbarer Netzwerktools erfolgen. Eines der bekanntesten Tools zur Identifizierung von offenen Ports und Erkennung von Netzwerkdiensten nennt sich “Nmap”. Dieses Programm ist kostenlos, quelloffen und kann sowohl unter Windows als auch Linux gestartet werden. Es stellt eine Vielzahl von Aufrufparametern bereit, welche im Detail nicht gänzlich erklärt und besprochen werden können.
Nichtsdestotrotz möchten wir Ihnen mit diesem Blogeintrag die grundlegenden Informationen vermitteln, um eigene Scans durchführen zu können. Für den erfolgreichen Start eines Nmap Portscans benötigen Sie lediglich die IP-Adresse(n) der zu überprüfenden IT-Systeme. Alternativ können Sie auch den DNS-Hostnamen bereitstellen und Nmap löst die dahinter befindliche IP-Adresse selbstständig auf.
Mithilfe des folgenden Befehls können Sie nach der Installation von Nmap einen Portscan starten. Hierbei werden alle offenen TCP-Ports der Range 0-65535 identifiziert und zurückgegeben. Eine Erklärung der Aufrufparameter finden Sie hier.
nmap -sS -Pn –open –-min-hostgroup 256 –min-rate 5000 –max-retries 3 -oA nmap_fullrange_portscan -vvv -p- <IP-1> <IP-2> <IP-RANGE>
Als Resultat erhalten Sie drei Ergebnisdateien sowie eine Ausgabe in Ihrem Terminalfenster wie folgt:
Die Ergebnisse des ersten Portscans listen lediglich die als offen identifizierten Netzwerkports auf. Zusätzlich erhalten wir den dahinter befindlichen Netzwerkdienst, welcher sich standardmäßig hinter dem Port befinden sollte (RFC Standard). Wie jedoch bereits erwähnt, müssen sich Netzwerkbetreiber nicht an diese Portzuordnungen halten und können ihre Dienste tendenziell hinter jeglichem Port betreiben. Aus diesem Grund benötigen wir einen zweiten Portscan, um die echten Netzwerkdiensten hinter den nun als offen identifizierten Ports offenzulegen.
Hierzu führen wir den folgenden Befehl aus, unter Angabe der zuvor identifizierten Ports und derselben IT-Systeme, die gescannt werden sollen. Eine Erklärung der Aufrufparameter finden Sie hier.
nmap -sS -sV –script=default,vuln -Pn –open –-min-hostgroup 256 –min-rate 5000 –max-retries 3 –script-timeout 300 -d –stylesheet https://raw.githubusercontent.com/pentestfactory/nmap-bootstrap-xsl/main/nmap-bootstrap.xsl -oA nmap_advanced_portscan -vvv -p <PORT1>, <PORT2>, <PORT3> <IP-1> <IP-2> <IP-RANGE>
Nach Abschluss erhalten wir erneut drei Ergebnisdateien sowie eine erneute Ausgabe in dem Terminalfenster wie folgt:
Die resultierende “nmap_advanced_portscan.xml” Datei kann darüber hinaus mit einem Browser Ihrer Wahl geöffnet werden, um die Ergebnisse des Portscans als HTML-Webseite visuell darzustellen. HTML-Berichte werden von Nmap zwar standardmäßig nicht unterstützt, jedoch kann ein individuelles Stylesheet wie “https://raw.githubusercontent.com/pentestfactory/nmap-bootstrap-xsl/main/nmap-bootstrap.xsl” beim Scanaufruf definiert werden, welches die Ergebnisse als HTML-Bericht visualisiert. Weiterhin können die Ergebnisse gefiltert werden und es besteht eine Möglichkeit zum CSV-, Excel- und PDF-Download.
Die Resultate des Portscans sollten nun von einem technischen Ansprechpartner, vorzugsweise aus der IT-Abteilung, überprüft werden. Stellen Sie hierbei sicher, dass lediglich die Netzwerkdienste von Ihren IT-Systemen angeboten werden, die zur Erbringung des Geschäftszwecks wirklich notwendig sind. Legen Sie darüber hinaus einen genauen Blick auf offenbarte Softwareversionen und überprüfen Sie, ob die eingesetzten Versionen aktuell sind und mit allen verfügbaren Sicherheitspatches gehärtet wurden. Überprüfen Sie ebenfalls identifizierte SSL-Zertifikate auf ihre Gültigkeit und halten Sie Abstand von der Verwendung von unsicheren Signierungsalgorithmen wie MD5 oder SHA1. Für interne IT-Infrastrukturen werden Sie in der Regel eine Vielzahl an Netzwerkdiensten identifiziert haben, da Sie von einer privilegierten Netzwerkposition innerhalb des Unternehmens gescannt haben. Hier sind Firewall-Einschränkungen in der Regel etwas weniger strikt umgesetzt, als für öffentlich erreichbare IT-Systeme oder Dienste innerhalb einer Demilitarisierten Zone (DMZ).
Durchführung von automatisierten Schwachstellenscans
Bei der Durchführung von Schwachstellenscans kommen in der Regel automatisierte Softwarelösungen zum Einsatz, welche IT-Systeme auf bekannte Schwachstellen und Fehlkonfigurationen hin überprüfen. Die resultierenden Feststellungen sind Probleme, welche öffentlich bekannt sind und für welche automatisierte Skripte geschrieben wurden, um diese zu erkennen. Bitte beachten Sie, dass automatisierte Schwachstellenscanner nicht in der Lage sind, alle potenziell vorhandenen Schwachstellen zu identifizieren. Jedoch sind sie eine große Hilfe, um standardmäßige Probleme schnell sowie automatisiert erkennen zu können.
Die regelmäßige Durchführung von automatisierten Schwachstellenscans sollte hierbei in Ihren internen Unternehmensprozess eingebunden werden. Dieser Prozess ist unabhängig davon, ob und wie oft Sie Penetrationstests durchführen lassen. Es wird jedoch allgemein empfohlen, ebenfalls Penetrationstest durch einen externen Dienstleister durchführen zu lassen, da hier sowohl automatisierte als auch manuelle Techniken zur Identifizierung von Schwachstellen Einsatz finden. Lediglich durch eine Kombination beider Testarten sowie dem Testen durch einen erfahrenen Penetrationstester können nahezu alle IT-Schwachstellen erkannt und letztlich von Ihnen behoben werden. Führen Sie demnach einen Schwachstellenmanagementprozess in Ihrem Unternehmen ein und scannen Sie Ihre IT-Assets regelmäßig und selbstständig.
Für die Durchführung eines automatisierten Schwachstellenscans kommen mehrere Produkte zum Einsatz. Für diesen Blogpost fokussieren wir uns auf kostenlose Alternativen. Dazu gehören die folgenden Produkte:
- OpenVAS by Greenbone
- Nessus Community by Tenable
Die Produkte sind nach einer Installation in der Regel selbsterklärend. Nach Angabe des Scan-Typs und der zu überprüfenden IT-Assets findet ein automatisierter Scan statt und die Resultate werden übersichtlich in der Webanwendung des Schwachstellenscanners dargestellt. Alle Feststellungen werden in der Regel mit einer Beschreibung, einer Risikobewertung sowie Empfehlung zur Behebung berichtet. Darüber hinaus erhalten Sie die Möglichkeit zum Exportieren der Ergebnisse als CSV, HTML, PDF usw.