Was kostet ein Penetration Test?

Die Kosten eines Penetrationstests sind primär von zwei Faktoren abhängig: Vom Aufwand und vom Tagessatz.

1. Der zeitliche Aufwand eines Penetration Tests

Die Dauer eines Penetrationstests ist abhängig von der Größe und Komplexität einer Anwendung oder einer IT-Infrastruktur. Grundsätzlich gibt es keine pauschalen Schätzwerte und es kommt immer auf den Einzelfall an. Angebote ohne vorherige Aufwandschätzung halte ich für grundsätzlich nicht seriös und rate davor ab.

Die grobe Richtung sieht aber wie folgt aus: Bei einer kleinen Webanwendung, also eine zweistellige Anzahl von Seiten mit ein paar Formularen und Parametern liegt man inklusive der Vorbesprechung, dem eigentlich Pentest und der Berichtserstellung bei etwa einem Tag. Der Aufwand wächst danach bei Webanwendungen weniger mit der Anzahl der Links, sondern eher mit einer steigenden Komplexität: Session Management, Rollen- und Benutzermanagement, AJAX usw. können schnell den notwendigen Aufwand erhöhen.

Den Aufwand eines IT-Infrastruktur-Penetrationstests pauschal zu beziffern ist noch schwieriger. Es hängt hier vom eigentlichen Ziel, der Anzahl der Hosts, der Anwendungen und Dienste ab. Manchmal macht es hier mehr Sinn, die eigentlichen Ziele des Tests zu konkretisieren und dann eine fixe Anzahl von Tagen dafür einzuplanen.

2. Der Tagessatz des Penetration Tester

Der Tagessatz im Penetration Testing ist auch hier von verschiedenen Faktoren abhängig: Zum Beispiel von der Erfahrung und Qualifikation vom Penetration Tester, von der dazugehörigen Unternehmensgröße, dem Unternehmensstandort, den Vertriebszielen usw.

Ist man auf der Suche nach einem qualifizierten Pentest-Freelancer landet man schnell bei Tagessätzen von 800€ und höher. Wobei alle Beispielpreise aus meinen Erfahrungen hier für Unternehmen netto wären. Beauftragt man ein Unternehmen mit ein paar Mitarbeitern mit einem Pentest liegt man anfänglich irgendwo bei 1.000€, man kann aber auch schnell 1.200€ bis 1.300€ pro Tag zahlen. Nach oben wie immer offen.

Literatur & mehr fürs Pentesting

Eine kleine – unvollständige – Übersicht über die verfügbare Literatur, Kurse usw. für Pentesting:

Kurse

Der OSCP (Offensive Security Certified Professional) von Offensive Security ist absolut sein Geld wert. Krassere Lernkurve geht kaum. Neben dem sehr guten Lab wird noch eine PDF und Videos mitgeliefert. Mehr Exploit Development gibts beim OSCE von Offensive..

Bücher

Für Exploit Development recht gut:

  • Hacking: Die Kunst des Exploits
  • Aus dem Tagebuch eines Bughunters: Wie man Softwareschwachstellen aufspürt und behebt

Ein älteres Buch (2007) über grundsätzliches Penetration Testing:

  • Die Kunst des Penetration Testing – Handbuch für professionelle Hacker

Metasploit ist zwar nicht gleich Pentesting, aber die Bücher sind ganz ok:

  • Penetration Testing mit Metasploit: Eine praktische Einführung
  • Metasploit: Das Handbuch zum Penetration-Testing-Framework

Online

Für Webanwendungen einfach OWASP.org besuchen. Der Pentesting Guide ist recht gut:

  • https://www.owasp.org/index.php/OWASP_Testing_Project

Für Metasploit gibts noch:

  • http://www.offensive-security.com/metasploit-unleashed/Requirements

 

Penetration Testing von IPv6-Netzwerken

Ein gewöhnliches IPv4-Netzwerk besteht nicht aus sonderlich vielen IP-Adressen. Ein /24er Block besteht aus 256 Adresse. Selbst bei einem wesentlich größerem /22 existieren nur 1.024 Adressen. Auch wenn nicht alle nutzbar sind (Network, Broadcast) bleiben wir einmal bei diesen Zahlen.

Relativ am Anfang eines Penetrationstests einer IT-Infrastruktur bzw. einem Netzwerk steht die Identifizierung der Live-Hosts, also der IP-Adressen, die tatsächlich einem Host zugewiesen sind. Das kann durch einen kurzen Ping-Sweep passieren oder man ignoriert ICMP und scannt den maximalen Port-Range über TCP und UDP. Vergleicht man beide Fälle anhand eines /22er-Blocks ergibt das bei einem Ping-Sweep 1.024 zu verschickende Anfragen und bei einem Scan über den gesamten Port-Bereich inkl. TCP und UDP bereits 1.024*65.535*2 = 134.215.680 – über 130 Millionen Anfragen, um absolut zuverlässig alle aktiven Hosts in einem /22 erkennen zu können.

Definitiv ist der Scan über alle Ports relativ zeitintensiv, aber noch realisierbar. Gehen wir einmal davon aus, dass ein Host jede Anfrage mit CLOSED o.ä. beantwortet und der Scanner nicht in einen Timeout läuft. Bei einer angenommenen Netzwerk-Latenz von 1ms (Gigabit-Ethernet) dauert der Scan – sofern nicht parallelisiert – ca. 37 Stunden. Wird der Scan um den Faktor 10 parallelisiert, ist er in 3,7 Stunden fertig. Selbst der komplette Scan eines etwas größeren IPv4-Netzes ist kein gigantisches Problem.

Und dann kam IPv6.

Nachdem der Adressraum bei IPv6 128bit beträgt, im Gegensatz zu 32bit bei IPv4, sind die Netze wesentlich größer. Gehen wir einmal von einem kleineren /56 IPv6-Netz aus. Das sind gerade einmal 9.223.372.036.854.775.808 Adressen. Also knapp 10^19 Adressen. Selbst wenn man nun auf einen vollständigen Scan verzichtet und nur einen Ping-Sweep zur Erkennung der Live-Hosts nutzt, sind das immernoch 10^19 Anfragen, die verschickt werden müssen. Nehmen wir an, wir verschicken (unrealistischer Weise) 100.000 Anfragen gleichzeitig, die alle in 1ms beantwortet werden. Wie lange dauert dann nur ein simpler Ping-Sweep über ein /56-Netz? 10^11 Sekunden bzw. 27.777.777 Stunden bzw. 1.157.407 Tage bzw. 3.170 Jahre. Ein Scan über ein komplettes „kleines“ IPv6-Netz – unmöglich!

Es gibt zwar verschiedene statische Häufungen, wie Netzwerk-Administratoren IPv6-Adressen vergeben, aber selbst die Berücksichtigung beliebter Bestandteile von IPv6-Adressen wie „:dead:“, „:b00b:“, „:cafe:“ oder „:babe:“ schränkt die Auswahl nicht zuverlässig genug für einen Penetrationstest ein.

Ein anderer Ansatz ist das Sniffen des gesamten IPv6-Verkehrs über Mirror/Monitoring-Ports an zentralen Core-Switche über eine gewisse Dauer. Das setzt natürlich nicht nur die grundsätzliche technische Möglichkeit voraus, sondern auch die Kooperation des Unternehmens. Sofern man einmal betriebliche oder datenschutzrechtliche Bedenken außen vor lässt – Datenschutzbeauftragte (Abgreifen von personenbezogenen Daten) und Betriebsräte (Achtung mögliche Leistungskontrolle) werden das in der Praxis sicherlich zu verhindern wissen. Technisch grundsätzlich möglich, ob wirklich umsetzbar sei einmal dahingestellt.

Bleibt eigentlich nur noch eine Liste mit IPv6-Adressen von den Administratoren des Zielnetzwerks zu erfragen. Idealerweise wird der Bestand von Hosts und verwendeten IP-Adressen in irgendeiner Datenbank oder Datei gepflegt. In wie weit solch eine Liste vollständig ist, kann man naturgemäß von außen nicht wirklich beurteilen. Es bleibt nur noch übrig, diese Liste mit möglichen weiteren IP-Adressen zu ergänzen, die man z.B. durch DNS Enumeration o.ä. gewinnen kann.

Egal wie, absolut vollständige Penetrationstests von IPv6-Netzwerken sind fast unmöglich zu garantieren. Ein Penetrationstests von IPv6-Netzwerken kann vollständig sein, muss er aber nicht. Das schlimmste daran ist, dass man nicht wissen wird, ob ein Test nun alle Hosts betrachtet hat oder nicht.