Real World Testing vs. Formale Analysen Marc Ruef | 12.02.2008 Hacking ist seit jeher ein Mysterium. Das Bild, welches durch die Medien transportiert wird, wird von eben den gleichen krampfhaft aufrecht gehalten: Irgendwelche sozial verarmten Freaks saugen die Bytes förmlich auf, um sodann dank bunter 3D-Animationen in einen Supercomputer einer Grossbank einzubrechen. Ja, so oder so ähnlich funktioniert das, wenn es nach dem Geschmack von Hollywood geht. Der Alltag angewandten Security Auditings sieht jedoch ein bisschen anders aus. Nicht selten stundenlang vor einem Bildschirm, der mit einer schier unendlichen Anzahl wirrer Zahlenkolonnen aufwartet, das ist primär das, was man als "bezahlter Hacker" zu sehen kriegt. Für Hollywood ist das zu langweilig. Ich selbst empfinde es aber meistens spannend. Dennoch entwickle ich mich zunehmend zu einer Art Sherlock Holmes. Ja, ich spiele ebenfalls Violine und Nein, ich verzichte auf den Konsum von Heroin. Der Wesenszug, den ich hier erwähnen möchte, ist viel mehr philosophischer Natur. Die international bekannte Romanfigur aus der Feder Sir Arthur Conan Doyle liebt das Lösen von Rätseln. Doch das ist das Einzige, was ihn wirklich begeistern kann. Das Zusammensuchen von Hinweisen ansich, das überlässt er lieber der Polizei oder seinem manchmal etwas unbeholfenen Biographen und Hausarzt Dr. John Watson. Auch ich mag es ganz besonders, wenn ich ein Problem einzig und allein auf dem Papier - oder noch besser: in meinem Kopf - lösen kann. Des Benutzens von Computern bin ich meistens überdrüssig, so dass ich vorwiegend durch formale Betrachtungen zu einem Resultat zu kommen versuche. Die These basiert also auf der Annahme, dass jemand, der alle Informationen zu einer Netzwerkumgebung hat, eine absolut verlässliche Aussage zur Sicherheit dieser tätigen können müsste. Dabei verliert das Resultat keinerlei Qualität gegenüber einer effektiv angestrebten Sicherheitsüberprüfung. Ein einfaches Beispiel skizziert sich wie folgt. Wieso soll ich eine Bruteforce-Attacke auf ein spezifisches Konto einer spezifischen Applikation machen, um das effektive Risiko eines Erfolgs determinieren zu können? Stattdessen kann ich anhand der jeweiligen Grunddaten eine mindestens so akkurate, wenn nicht noch weitsichtigere Aussage treffen. Geht es darum, effektiv ein bestehendes Benutzerkonto zu knacken stellen sich die folgenden Fragen. 1) Wie lautet der Benutzername? 2) Ist dieser durch einen Angreifer in Erfahrung zu bringen? 3) Wie lautet das Passwort? 4) Welche Komplexität (Länge, Zeichensatz, Entropie) weist dieses auf? 5) Laufen Passwörter oder ganze Konten ab? 6) Und werden Passwort-Richtlinien durchgesetzt (Mindestkomplexität, Passwort-History)? Es sei nun einem Angreifer der Benutzername, zum Beispiel marc.ruef, bekannt. Dies rührt daher, weil eine unternehmensweite Namensstruktur, die sich an den Mailadressen, in diesem Fall marc.ruef@computec.ch, orientiert, eingesetzt wird. Das Passwort des Benutzers lautet gabi1979. Ein Angreifer muss also, um eine erfolgreiche Authentisierung realisieren zu können, eine Zeichenkette der Länge 8 in Erfahrung bringen. Der Zeichensatz dieser sei ihm nicht bekannt, er rechnet jedoch mit dem englischen Alphabet samt Gross-/Kleinschreibung a-zA-Z sowie allen arabischen Ziffern 0-9. Der Zeichensatz umfasst damit 58=24*2+10 Zeichen. Um nun sämtliche Passwörter der Länge 8 darzustellen, die einen solchen Zeichensatz einsetzen, sind insgesamt 128'063'081'718'016=58^9 Varianten möglich. Ein Angreifer, der damit den Benutzernamen sowie die Struktur (Länge und minimaler Zeichensatz) des Passworts kennt, braucht ebenso viele Versuche, um den gesamten Schlüsselraum mit 100 % zu durchlaufen. Es ist anzunehmen, dass sich statistisch gesehen ein Erfolg nach 50 % der Zugriffe, dies sind sodann nur noch 64'031'540'859'008 Versuche, einstellt. Ist der Angreifer nun in der Lage 100 Versuche pro Sekunde zu unternehmen, stellt sich der Erfolg nach ca. 177'865'391 Stunden ein. Läuft nun das Passwort nach 90 Tagen ab, hat der Angreifer keine Möglichkeit, die 50 % zu Erreichen. Bis er den halben Schlüsselraum durchlaufen hätte, wäre das Passwort schon gar nicht mehr gültig. Die Chance, dass ein Angreifer das Passwort trotz umfassender Vorabinformationen rechtzeitig in Erfahrung bringen kann, ist praktisch gleich 0. Dieses System ist also, unter den betrachteten Voraussetzungen, als sicher zu klassifizieren. Sodann lassen sich nun hypothetische Betrachtungen anstellen. Was ist, wenn der Angreifer einige Zeichen des Passworts kennt. Zum Beispiel, weil er dem Anwender bei einer erfolgreichen Authentisierung über die Schulter geschaut hat. In diesem Fall weiss er, dass nur Kleinschreibung zum Einsatz kommt, dass der erste Buchstabe ein g und die letzten beiden Zeichen lediglich Ziffern sind. Und zusätzlich soll er durch einen verteilten Bruteforce-Mechanismus in der Lage sein, pro Sekunde ganze 100'000 Authentisierungsversuche durchführen zu können. Optimale Voraussetzungen also. Es erscheint schon fast egal, ob und inwiefern dieser Pessimismus wirklich eintritt. Spätestens dann, wenn das angegriffene Benutzerkonto nach 5 Fehlversuchen automatisch für 10 Minuten gesperrt ist, verliert der gesamte Angriff wieder an Wirkung. Bruteforce-Attacken auf Passwort-Authentisierungen sind, auch wenn es vielleicht nicht mehr zeitgemäss klingen mag, gar nicht mal so schwierig abzuwehren. Die zuvor genannten überdurchschnittlich optimalen Voraussetzungen für den Angreifer erfordern noch immer fast einen halben Tag. In dieser Zeit sollte eigentlich das Intrusion Detection-System längstens ausgeschlagen haben...