Brute Force Attack

Brute Force Attack erfolgreich abwehren und blocken

Blocking Brute-Force Attacks (deutsche Version)

Eine häufige Bedrohung für Webentwickler stellt die so genannte Brute Force  Attack dar. Ziel solch einer Attacke ist es, systematisch alle möglichen Kombinationen eines Passworts durchzuprobieren. Dabei werden alle möglichen Folgen von Buchstaben, Zahlen und Sonderzeichen getestet, bis das korrekte Passwort gefunden wurde. Wenn Ihre Website eine Userauthentifizierung benutzt, ist sie ein gutes Ziel für solch eine Attacke.

Ein Hacker kann theoretisch jedes Passwort erfolgreich bruteforcen, praktisch würde er allerdings für manche Passwörter Jahre brauchen, ehe er das richtige generiert. Die Erfolgschance hängt hierbei von der Komplexität und der Länge des Passworts ab. Um das Erfolgserlebnis für den Hacker zu beschleunigen, bedient er sich oft Wörterbüchern (oder entsprechend modifizierten Versionen davon), da statistisch gesehen, die meisten Menschen ein relativ einfaches Passwort verwenden und kein zufällig (komplex) generiertes. Solch eine Attacke wird dann entweder als Dictionary - Attack („Wörterbuch - Attacke“) oder Hybrid-Brute-Force - Attack bezeichnet. Websites werden so dem Risiko vor Accountdiebstahl und hohem Traffic (DoS) ausgesetzt.

Hacker benutzen dafür spezielle Programme, welche den Vorgang automatisieren und teilweise sogar mit künstlicher Intelligenz arbeiten, und somit weit effizienter sind. Obwohl solche Attacken leicht zu erkennen sind, ist es nicht so einfach, sie zu verhindern. Beispielsweise benutzen viele HTTP Brute Force - Programme frei verfügbare Proxies, weshalb nicht einfach die IP gesperrt werden kann um den Angriff zu blocken. Zusätzlich probieren viele Programme nicht nur die Passwörter für einen Benutzer durch, sondern für alle. Darum bringt auch die Sperrung eines Accounts, aufgrund einer bestimmten Anzahl an Fail - Logins (falsche Passworteingaben), nichts.

Accounts sperrenDer einfachste Weg um eine Brute Force - Attack zu blocken ist es, einen Account, nach einer bestimmten Anzahl an Fail - Logins, zu sperren. Dabei kann der Account für eine bestimmte Zeit gesperrt werden, zB.: eine Stunde, oder aber auch solange gesperrt bleiben, bis ein Administrator ihn per Hand wieder freigibt.Die Sperrung des Accounts ist allerdings nicht immer die beste Methode um die Attacken abzuwehren. Ein Hacker könnte diese Maßnahme ausnützen um hunderte Accounts zu sperren. Tatsächlich haben viele Websites täglich so viele Angriffe, dass die Administratoren 24h/ Tag damit beschäftigt wären, die Accounts wieder frei zuschalten, würden sie solch eine Schutzvorrichtung verwenden.
Die Probleme bei der Accountsperrung sind:

Ein Hacker kann eine DoS (Denial of Service) Attacke benutzen, um hunderte Accounts zu sperren.
Da nur vorhandene Accounts gesperrt werden können, kann ein Hacker alle verfügbaren Accounts erfahren, aufgrund der Fehlmeldungen, die er bei ungültigen Accounts bekommen würde.
Ein Hacker kann durch das sperren vieler Accounts, den Support der Website überschwemmen, da viele Anfragen bezüglich des gesperrten Accounts (von dem die eigentlichen Benutzer ja nichts wissen), zu erwarten wäre.
Ein Hacker kann einen bestimmten Account immer wieder sperren lassen, selbst wenn der Administrator ihn gerade wieder frei geschaltet hat, und ihn somit gänzlich unnütz machen.
Accountsperrung ist ineffektiv gegen langsame Attacken, die nur einige Passwörter probieren.
Accountsperrung ist ineffektiv gegen Attacken, die ein Passwort für alle Benutzernamen probieren.
Accountsperrung ist ineffektiv gegen einen Angriff, in der eine Kombination aus Benutzernamen und Passwörtern verwendet wird und innerhalb der ersten Versuche ein korrekter Account erraten wird.
Benutzerkonten mit viel Rechten (Administrator, Moderator, usw.) schließen solch eine Abwehrmethode oft aus, obwohl sie für den Hacker die wichtigsten Konten darstellen. Einige Systeme sperren solche Accounts nur bei netzwerkbasierenden Logins.
Eine Sperrung des Accounts kann weit reichende Probleme mit sich bringen und beispielsweise benötigte Ressourcen unzugänglich machen. Accountsperrung ist manchmal sinnvoll, allerdings nur in kontrollierten Umgebungen oder wenn DoS Attacken gegenüber Accountkompromissen vorzuziehen sind. In den meisten Fällen ist Accountsperrung trotzdem nicht die beste Wahl für die Unterdrückung von Bruteforce - Attacken. Betrachten Sie beispielsweise eine Auktions-Website, bei der einige Bieter um dasselbe Stück wetteifern. Hat die Website nun solch einen Schutzmechanismus wie eben besprochen, kann ein Bieter dies leicht ausnützen und den Account der anderen Bieter sperren lassen.Genau dasselbe gilt für finanzielle Transaktionen, E-Mail Verkehr usw.

Andere Gegenmaßnahmen:

Wie bereits erwähnt, ist Accountsperrung nicht die beste Lösung. Nun gilt es, sich andere Gegenmaßnahmen zu überlegen um gegen Brute Force - Attack vorzugehen. Ein guter Anfang ist es, wenn man kleine Pausen beim überprüfen des Passworts einbaut. Selbst wenn diese nur einige Sekunden sind, so wird die Attacke extrem in die Länge gezogen, für den normalen Anwender stellt dies hingegen keine Behinderung dar. Sendet der Hacker hingegen mehrere, gleichzeitige Requests, bringt diese Vorsichtsmaßnahme nur wenig.
Eine andere Möglichkeit besteht darin, die IP - Adresse zu sperren, welche die Fail - Logins verursacht. Das Problem dabei ist, dass versehentlich ein ganzer Block an IP - Adressen gesperrt werden kann, wenn beispielsweise der Proxy gesperrt wird, welcher vom ISP oder einer großen Firma benutzt wird. Ein weiteres Problem ist, dass viele Programme nur einige Requests pro Proxy senden und dann automatisch einen anderen benutzen. Da es wiederum spezielle Programme für das suchen von Proxies gibt, sowie eigene Websites, wie beispielsweise tools.rosinstrument.com/proxy/, die eine Vielzahl an Proxies anbieten, kann der Hacker die IP – Sperrung leicht umgehen.
Da die meisten Websites die IP nicht beim ersten Fail - Login blocken (was verständlich ist, wenn man bedenkt wie schnell man sich mal vertippt), wird dem Hacker ein weiterer Vorteil verschaffen: Wird die IP beispielsweise bei drei Fail - Logins blockiert, so kann ein Hacker mit einer Liste von 1000 Proxies 3000 Passwörter durchprobieren ohne blockiert zu werden.
Aus diesem Grund blockieren viele Websites – insbesondere XXX –Websites - Proxy IP - Adressen, da diese häufig missbraucht werden.

Eine überraschend einfache und effektive Methode besteht darin, die Website so zu designen, dass nicht die gewöhnlichen Antworten zurückkommen. Beispielsweise geben viele ein „HTTP 401 error“ Code zurück, wenn das Passwort falsch war. Manche hingegen geben ein „HTTP 200 SUCCESS“ Code zurück und leiten den Benutzer dafür auf eine speziell eingerichtete Seite weiter, in der der Fail - Login aufgezeichnet wird. Mit dieser einfachen Methode können zwar manche Programme überlistet werden, doch der gewiefte Hacker wird auch dieses kleine Hindernis bald übergehen können. Eine bessere Möglichkeit wäre also, einige verschiedene Errorwebsites zu erstellen oder das Passwort auf der nächsten Site noch mal eingeben zu lassen.

Einige Programme erlauben es dem Angreifer nach speziellen Strings zu suchen, die auf einen Fail - Login hindeuten. Beinhaltet die Fail – Login Website beispielsweise „Bad username or password”, erkennt das Programm den Fehler und probiert das nächste in der Liste. Eine Möglichkeit um diese Programme auszutricksen bestünde darin, solche Strings in den HTML - Code einzubauen, sodass das Programm auch bei einem erfolgreichen Login getäuscht wird.

Eine weitere Methode um sich vor Brute Force - Attacken zu schützen, besteht darin, nach einem oder zwei Fail - Logins zusätzlich eine geheime Frage beantworten zu lassen. Zum einem würde das den Erfolg eines Programms erheblich senken, zudem würde der Angreifer auch mit einem gültigen Benutzernamen mit Passwort nicht weiter kommen. Sind vermehrt Fail - Logins verzeichnet worden, können Sie rasch handeln und alle Benutzer nach ihrer geheimen Antwort fragen lassen.

 

Weitere Methoden die Sie vielleicht hinzuziehen möchten:
• Für fortgeschrittene Benutzer die Einstellmöglichkeit bieten, sich nur von bestimmten IP Adressen einloggen zu können.
• Einzigartige Login URLs zuweisen, sodass nicht jeder Benutzer über dieselbe Loginsite zugreift.
• Anstatt einen Account ganz zu sperren, ihn mit minderen Privilegien einloggen.

Hacker können oft viele der oben genannten Techniken umgehen, in Verbindung mit mehreren dieser Techniken können Sie allerdings die Erfolgschance solcher Angriffe drastisch senken. Unter Umständen kann es schwierig sein, einen Hacker zu stoppen der es auf ein bestimmtes Passwort Ihrer Website abgesehen hat, mit diesen Techniken können sie die meisten allerdings davon abhalten. Da all diese Möglichkeiten für den Hacker mehr Arbeit bedeuten, haben Sie mehr Zeit um auf den Angriff zu reagieren und entsprechend zu handeln.

Obwohl Brute Force - Angriffe schwer komplett zu stoppen sind, sind sie einfach zu erkennen, da die ganzen Fail - Logins im Regelfall aufgezeichnet werden. Daher ist es wichtig die Logfiles häufig zu kontrollieren um so auch erfolgreiche Angriffe zu erkennen.

Hier sind einige Bedingungen, die einen möglichen Brute Force - Angriff zeigen:
• Viele Fail - Logins von der selben IP – Adresse.
• Multi - Login Versuche (verschiedene Benutzernamen) von der selben IP – Adresse.
• Logins in einem bestimmten Account von vielen verschiedenen IP – Adressen.
• Übertriebener Trafficverbrauch von einer bestimmten Person bzw. IP – Adresse.
• Alphabetisch sequentielle Loginversuche
• Logins mit einem Referer von einer bestimmten E-Mail – Adresse oder IRC Clienten.
• Logins mit verdächtigen Passwörtern, welche häufig von Hackern benutzt werden, beispielsweise ownsyou (ownzyou), washere (wazhere), zealots, hacksyou, 1337

Überraschenderweise ist es schwierig, Brute Force - Attack gänzlich zu stoppen, aber mit einer guten Planung der Websitegestaltung und in Verbindung mig der oben besprochenen Schutzmaßnahmen, kann man diese gut eingrenzen und unter Kontrolle bringen. Abschließend sei noch mal darauf hingewiesen, dass die beste Verteidigung darin besteht, die Benutzer über die Probleme aufzuklären, sodass sie ein starkes Passwort benutzen: lange, nicht erratbare Passwörter, welche nicht in Wörterbüchern gefunden werden; nicht immer und überall dasselbe Passwort verwenden; regelmäßige Passwortänderungen vornehmen.