Blockiert Brute-Force-Attacken

Autor: Esheridan
Contributor(s): KirstenS, Paul McMillan, Raesene, Adedov, Dinis.Cruz, JoE, Daniel Waller, kingthorin

Blocking Brute-Force-Angriffe

Eine häufige Bedrohung Web-Entwickler Gesicht ist ein Passwort-erraten Angriff als Brute-Force-Angriff bekannt.Ein Brute-Force-Angriff ist ein Versuch, ein Passwort zu entdecken, indem Sie systematisch jede mögliche Kombination von Buchstaben versuchen, Zahlen, und Symbole, bis Sie die eine richtige Kombination entdecken, die funktioniert.,Wenn Ihre Website eine Benutzerauthentifizierung erfordert, sind Sie ein gutes Ziel für einen Brute-Force-Angriff.

Ein Angreifer kann immer ein Passwort durch einen Brute-Force-Angriff entdecken, aber der Nachteil ist, dass es Jahre dauern könnte, es zu finden.Abhängig von der Länge und Komplexität des Passworts kann es Billionen möglicher Kombinationen geben.

Um die Dinge ein wenig zu beschleunigen, könnte ein Brute-Force-Angriff mit Wörterbuchwörtern oder leicht modifizierten Wörterbuchwörtern beginnen, da die meisten Leute diese anstelle eines völlig zufälligen Passworts verwenden., Diese Angriffe werden als Wörterbuchangriffe oder hybride Brute-Force-Angriffe bezeichnet.Brute-Force-Angriffe gefährden Benutzerkonten und überfluten Ihre Website mit unnötigem Datenverkehr.

Hacker starten Brute-Force-Angriffe mit weit verbreiteten Tools, die Wordlisten und intelligente Regelsätze verwenden, um intelligent und automatisch Benutzerpasswörter zu erraten. Obwohl solche Angriffe leicht zu erkennen sind, sind sie nicht so leicht zu verhindern.

Beispielsweise können viele HTTP-Brute-Force-Tools Anforderungen über eine Liste offener Proxyserver weiterleiten., Da jede Anforderung anscheinend von einer anderen IP-Adresse stammt, können Sie diese Angriffe nicht einfach blockieren, indem Sie die IP-Adresse blockieren address.To weitere komplizierte Dinge, versuchen einige Tools einen anderen Benutzernamen und ein anderes Passwort bei jedem Versuch, so dass Sie nicht ein einziges Konto für fehlgeschlagene Passwort Versuche sperren.

Konten sperren

Der offensichtlichste Weg, Brute-Force-Angriffe zu blockieren, besteht darin, Konten nach einer definierten Anzahl falscher Kennwortversuche einfach zu sperren.,Kontosperrungen können eine bestimmte Dauer dauern, z. B. eine Stunde, oder die Konten können gesperrt bleiben, bis sie von einem Administrator manuell entsperrt werden.

Die Kontosperrung ist jedoch nicht immer die beste Lösung, da jemand die Sicherheitsmaßnahme leicht missbrauchen und Hunderte von Benutzern sperren könnte accounts.In tatsache ist, dass auf einigen Websites so viele Angriffe auftreten, dass sie keine Sperrrichtlinie erzwingen können, da sie ständig Kundenkonten entsperren würden.,

Die Probleme mit Kontosperrungen sind:

  • Ein Angreifer kann einen Denial of Service (DoS) verursachen, indem er eine große Anzahl von Konten sperrt.
  • Da Sie kein Konto sperren können, das nicht existiert, werden nur gültige Kontonamen gesperrt. Ein Angreifer könnte diese Tatsache nutzen, um Benutzernamen von der Website zu ernten, abhängig von den Fehlerantworten.
  • Ein Angreifer kann eine Umleitung verursachen, indem er viele Konten sperrt und den Helpdesk mit Supportanrufen überflutet.,
  • Ein Angreifer kann das gleiche Konto auch Sekunden nach dem Entsperren durch einen Administrator kontinuierlich sperren und das Konto effektiv deaktivieren.
  • Account lockout ist unwirksam gegen langsame Angriffe, die nur wenige Passwörter pro Stunde versuchen.
  • Kontosperre ist unwirksam gegen Angriffe, die ein Passwort gegen eine große Liste von Benutzernamen versuchen.
  • Die Kontosperrung ist unwirksam, wenn der Angreifer eine Kombinationsliste aus Benutzername und Passwort verwendet und bei den ersten Versuchen korrekt errät.,
  • Leistungsstarke Konten wie Administratorkonten umgehen häufig die Sperrrichtlinie, aber dies sind die wünschenswertesten Konten, die angegriffen werden können. Einige Systeme sperren Administratorkonten nur bei netzwerkbasierten Anmeldungen.
  • Selbst wenn Sie ein Konto sperren, kann der Angriff fortgesetzt werden und wertvolle Personal-und Computerressourcen verbrauchen.

Die Kontosperrung ist manchmal wirksam, jedoch nur in kontrollierten Umgebungen oder in Fällen, in denen das Risiko so groß ist, dass selbst kontinuierliche DoS-Angriffe dem Kontokompromiss vorzuziehen sind.,In den meisten Fällen reicht die Kontosperrung jedoch nicht aus, um Brute-Force-Angriffe zu stoppen.

Betrachten Sie zum Beispiel eine Auktionsseite, auf der mehrere Bieter um denselben Gegenstand kämpfen.Wenn die Auktionswebsite Kontosperrungen erzwang, könnte ein Bieter einfach die Konten der anderen in der letzten Minute der Auktion sperren und verhindern, dass sie Gewinne einreichen bids.An Angreifer könnten die gleiche Technik verwenden, um kritische Finanztransaktionen oder E-Mail-Kommunikation zu blockieren.,

Geräte-Cookies

Sie können auch in Betracht ziehen, Authentifizierungsversuche von bekannten und unbekannten Browsern oder Geräten separat zu sperren.Der Artikel Slow Down Online Guessing Attacks with Device Cookies schlägt ein Protokoll für den Sperrmechanismus vor, das auf Informationen darüber basiert, ob bestimmte Browser bereits für eine erfolgreiche Anmeldung verwendet wurden.Das Protokoll ist weniger anfällig für DoS-Angriffe als einfache Kontosperre und dennoch effektiv und einfach zu implementieren.,

Andere Gegenmaßnahmen finden

Wie beschrieben, sind Kontosperrungen normalerweise keine praktische Lösung, aber es gibt andere Tricks, um mit Brute-Force-Angriffen umzugehen.Erstens, da der Erfolg des Angriffs von der Zeit abhängt, besteht eine einfache Lösung darin, beim Überprüfen eines Passworts zufällige Pausen einzulegen.Das Hinzufügen einer Pause von nur wenigen Sekunden kann einen Brute-Force-Angriff erheblich verlangsamen, stört jedoch die meisten legitimen Benutzer nicht, wenn sie sich bei ihren Konten anmelden.,

Beachten Sie, dass das Hinzufügen einer Verzögerung zwar einen Single-Threaded-Angriff verlangsamen kann, jedoch weniger effektiv ist, wenn der Angreifer mehrere gleichzeitige Authentifizierungsanforderungen sendet.

Eine andere Lösung besteht darin, eine IP-Adresse mit mehreren fehlgeschlagenen Anmeldungen zu sperren.Das Problem bei dieser Lösung besteht darin, dass Sie versehentlich große Benutzergruppen blockieren können, indem Sie einen Proxyserver blockieren, der von einem ISP oder einem großen Unternehmen verwendet wird.Ein weiteres Problem besteht darin, dass viele Tools Proxy-Listen verwenden und nur wenige Anforderungen von jeder IP-Adresse senden, bevor sie zur nächsten wechseln.,

Mit weit verbreiteten offenen Proxy-Listen kann ein Angreifer jeden IP-Blockierungsmechanismus leicht umgehen.Da die meisten Websites nicht nach nur einem fehlgeschlagenen Passwort blockieren, kann ein Angreifer zwei oder drei Versuche pro proxy.An angreifer mit einer Liste von 1.000 Proxys können 2.000 oder 3.000 Passwörter versuchen, ohne blockiert zu werden.

Trotz der Schwächen dieser Methode blockieren Websites mit einer hohen Anzahl von Angriffen (insbesondere Websites für Erwachsene) Proxy-IP-Adressen.,

Eine einfache, aber überraschend effektive Lösung besteht darin, Ihre Website so zu gestalten, dass kein vorhersehbares Verhalten für fehlgeschlagene Passwörter verwendet wird.Beispielsweise geben die meisten Websites einen „HTTP 401 error“ – Code mit einem Passwortfehler zurück, obwohl einige Websites stattdessen einen „HTTP 200 SUCCESS“ – Code zurückgeben, den Benutzer jedoch zu einer Seite weiterleiten, auf der der fehlgeschlagene Passwortversuch erläutert wird.Dies täuscht einige automatisierte Systeme vor, ist aber auch leicht zu umgehen.

Eine bessere Lösung könnte sein, das Verhalten genug zu variieren, um schließlich alle außer den engagiertesten Hackern zu entmutigen.,Sie können beispielsweise jedes Mal unterschiedliche Fehlermeldungen verwenden oder manchmal einen Benutzer zu einer Seite durchlassen und ihn dann erneut zur Eingabe eines Kennworts auffordern.

Mit einigen automatisierten Brute-Force-Tools kann der Angreifer bestimmte Triggerzeichenfolgen festlegen, die auf einen fehlgeschlagenen Kennwortversuch hinweisen.Wenn die resultierende Seite beispielsweise den Ausdruck „Fehlerhafter Benutzername oder falsches Kennwort“ enthält, weiß das Tool, dass die Anmeldeinformationen fehlgeschlagen sind, und versucht es mit dem nächsten in der Liste.,Eine einfache Möglichkeit, diese Tools zu täuschen, besteht darin, auch diese Phrasen als Kommentare in die HTML-Quelle der Seite aufzunehmen, die sie bei erfolgreicher Authentifizierung erhalten.

Nach ein oder zwei fehlgeschlagenen Anmeldeversuchen möchten Sie den Benutzer möglicherweise nicht nur zur Eingabe des Benutzernamens und des Kennworts auffordern, sondern auch eine geheime Frage beantworten.Dies verursacht nicht nur Probleme mit automatisierten Angriffen, sondern verhindert auch, dass ein Angreifer Zugriff erhält, selbst wenn er den Benutzernamen und das Passwort korrekt erhält.,

Sie können auch eine hohe Anzahl von Angriffen systemweit erkennen und unter diesen Bedingungen alle Benutzer zur Antwort auf ihre geheimen Fragen auffordern.

Andere Techniken, die Sie in Betracht ziehen sollten, sind:

  • Für fortgeschrittene Benutzer, die ihre Konten vor Angriffen schützen möchten, geben Sie ihnen die Möglichkeit, die Anmeldung nur von bestimmten IP-Adressen zuzulassen.
  • Weisen Sie Benutzerblöcken eindeutige Anmelde-URLs zu, damit nicht alle Benutzer über dieselbe URL auf die Site zugreifen können.,
  • Verwenden Sie a, um automatisierte Angriffe zu verhindern
  • Anstatt ein Konto vollständig zu sperren, platzieren Sie es in einem Sperrmodus mit eingeschränkten Funktionen.

Angreifer können viele dieser Techniken oft selbst umgehen, aber durch die Kombination mehrerer Techniken können Sie Brute-Force erheblich einschränken attacks.It es kann schwierig sein, einen Angreifer zu stoppen, der entschlossen ist, ein Passwort speziell von Ihrer Website zu erhalten, aber diese Techniken können sicherlich gegen viele Angriffe wirksam sein, einschließlich derer von unerfahrenen Hackern.,Diese Techniken erfordern auch mehr Arbeit seitens des Angreifers, was Ihnen mehr Möglichkeiten gibt, den Angriff zu erkennen und vielleicht sogar den Angreifer zu identifizieren.

Obwohl Brute-Force-Angriffe schwer vollständig zu stoppen sind, sind sie leicht zu erkennen, da jeder fehlgeschlagene Anmeldeversuch einen HTTP 401-Statuscode auf Ihrem Webserver aufzeichnet logs.It ist wichtig, Ihre Logfiles für Brute-Force-Angriffe zu überwachen-insbesondere die vermischten 200 Statuscodes, die der Angreifer ein gültiges Passwort gefunden bedeuten.,ins mit einer verweisenden URL von jemandes Mail-oder IRC-Client

  • Verweisende URLs, die den Benutzernamen und das Passwort im Format enthalten <http://user:/login.htm>
  • Wenn Sie eine Website für Erwachsene schützen, verweisen Sie auf URLs bekannter Websites zum Teilen von Passwörtern
  • Logins mit verdächtigen Passwörtern, die Hacker häufig verwenden, wie ownsyou (ownzyou), washere (wazhere),, hacksyou und dergleichen
  • Brute-Force-Angriffe sind überraschend schwer vollständig zu stoppen, aber mit sorgfältigem Design und mehreren Gegenmaßnahmen können Sie Ihre Exposition gegenüber diesen Angriffen begrenzen.,

    Letztendlich besteht die einzig beste Verteidigung darin, sicherzustellen, dass Benutzer die Grundregeln für sichere Passwörter befolgen: Verwenden Sie lange, unvorhersehbare Passwörter, vermeiden Sie Wörterbuchwörter, vermeiden Sie die Wiederverwendung von Passwörtern und ändern Sie Kennwörter regelmäßig.

    Ein vollständig automatisierter öffentlicher Turing-Test, um Computer und Menschen voneinander zu unterscheiden , oder, ist ein Programm, mit dem Sie zwischen Menschen und Computern unterscheiden können.Zuerst weit verbreitet von Alta Vista automatisierte Sucheinreichungen zu verhindern, s sind besonders wirksam bei jeder Art von automatisierten Missbrauch zu stoppen, einschließlich Brute-Force-Angriffe.,

    Sie arbeiten, indem sie einen Test präsentieren, der für Menschen leicht zu bestehen ist, für Computer jedoch schwierig zu bestehen; Daher können sie mit einiger Sicherheit schließen, ob sich am anderen Ende ein Mensch befindet.

    Damit a wirksam ist, muss der Mensch in der Lage sein, den Test so nah wie möglich an 100 Prozent der Zeit korrekt zu beantworten.Computer müssen so nah wie möglich an 100 Prozent der Zeit ausfallen.Forscher an der Carnegie Mellon School of Computer Science arbeiten ständig an der Verbesserung und Einführung neuer s.,

    Wenn Sie Ihre eigenen entwickeln, denken Sie daran, dass es nicht darauf ankommt, wie schwer die Frage ist-es ist wie wahrscheinlich, dass ein Computer die richtige Antwort erhält.Ich habe einmal ein gesehen, das dem Benutzer ein Bild von drei Zebras zeigt, mit einer Multiple-Choice-Frage, wie viele Zebras in der picture.To beantworten Sie die Frage, klicken Sie auf eine von drei Schaltflächen.

    Obwohl es für ein Computerprogramm sehr schwierig wäre, die Frage zu verstehen und das Bild zu interpretieren, könnte das Programm jede Antwort zufällig erraten und ein Drittel der Zeit korrigieren., Obwohl dies ein zufriedenstellendes Risiko zu sein scheint, ist es keineswegs effektiv .Wenn Sie einen kostenlosen E-Mail-Dienst ausführen und einen solchen verwenden, um zu verhindern, dass Spammer Konten in großen Mengen erstellen, müssen sie lediglich ein Skript schreiben, um automatisch 1,000-Konten zu erstellen, und im Durchschnitt erwarten, dass 333 dieser Versuche erfolgreich sind.

    Dennoch kann eine einfache immer noch wirksam gegen Brute-Force-Angriffe sein.,Wenn Sie die Chance kombinieren, dass ein Angreifer einen korrekten Benutzernamen und ein korrektes Passwort sendet, raten Sie mit der Chance, das Richtige zu erraten, kombiniert mit anderen in diesem Kapitel beschriebenen Techniken, Selbst ein einfaches könnte sich als effektiv erweisen.

    Abbildung 1: Verzögerung der Kennwortauthentifizierung: C#

    Abbildung 2: Verzögerung der Kennwortauthentifizierung: VB.NET

    Public Sub AuthenticateRequest(ByVal obj As Object, ByVal ea As System.EventArgs) Dim objApp As HttpApplication Dim objContext As HttpContext Dim ran As Random objApp = obj objContext = objApp.Context ' If user identity is not blank, pause for a random amount of time If objApp.User.Identity.Name <> "" Then ran = New Random Thread.Sleep(ran.Next(ran.Next(minSeconds, maxSeconds) * 1000)) End IfEnd Sub

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

    Zur Werkzeugleiste springen