Frage:
Ist Brute Force eine wahrscheinliche Bedrohung, selbst wenn Sie CAPTCHA- und Ratenlimit-Logins aktivieren?
Sayan
2018-10-07 20:44:55 UTC
view on stackexchange narkive permalink

Nehmen wir an, dass CAPTCHA mit der Kontosperrungssteuerung (nach fünf fortlaufend fehlgeschlagenen Versuchen wird das Konto für 15 Minuten gesperrt) auf einem System aktiviert ist.

Ist Brute Force immer noch eine wahrscheinliche Bedrohung?

Wenn Benutzer ihre eigenen Benutzernamen auswählen können und es keine Richtlinie zur Kennwortstärke gibt, kann ein Angreifer gängige Benutzernamen und Kennwörter brutal erzwingen und in 15 Minuten sogar auf 5 Kennwörter pro Konto beschränken.Eine Richtlinie zur Kennwortstärke würde helfen.
Mit der Kennwortsicherheit besteht das ultimative Ziel darin, einem Angreifer den Zugriff auf Benutzerkonten zu erschweren, selbst wenn er über eine Kopie Ihrer Datenbank verfügt.
Wenn Sie IPs zu lange verbieten, kann Denial-of-Service zu einem Problem werden, wenn die IP gemeinsam genutzt wird (z. B. in lokalen Netzwerken hinter einer einzelnen öffentlichen IP).Sie haben tatsächlich gesagt, dass "das Konto" für 15 Minuten gesperrt wird. Ich hoffe, Sie haben IP gemeint, sonst ist das noch schlimmer (ein Bot könnte versuchen, sich wiederholt anzumelden und fehlschlagen, und das Konto wird weiterhin gesperrt).
Lock-out ist ein guter Anfang, der naheliegende nächste Schritt ist die schrittweise Erhöhung der Zeit.15 Minuten.30 Minuten.2 Stunden.4 Stunden.Ein Tag.
Acht antworten:
Anders
2018-10-07 21:07:47 UTC
view on stackexchange narkive permalink

Der Schutz, den Sie beschreiben, ist gut, den Sie berücksichtigen sollten, aber es kann immer noch Schwächen geben:

  • Viele CAPTCHAS können von Robotern gelöst werden, oder Sie können die Leute leicht dafür bezahlen, sie zu lösen Masse für Sie (es gibt Unternehmen, die diesen Service verkaufen).
  • Kontosperrung ist eine gute Idee, aber wenn Sie dies auf der Grundlage der IP-Adresse tun, kann jemand mit Zugriff auf ein Botnetz erneut versuchen, sich für ein einzelnes Konto von einem anderen Konto anzumelden IP: s, bis sie eingehen.
  • Offline Brute Force ist immer noch ein Problem, wenn Ihre Datenbank durchgesickert ist. Wenn der Angreifer Zugriff auf den Kennwort-Hash hat, kann er auf seinem eigenen System alles versuchen, was er will. Deshalb sollten Sie gutes Hashing verwenden.
"Viele CAPTCHAS können von Robotern gelöst werden": Dies gilt heutzutage besonders für Deep Learning und neuronale Netze, die bei solchen Aufgaben bessere Ergebnisse erzielen können als durchschnittliche Menschen.Captchas stehen kurz davor, nutzlos zu sein.
Gutes gesalzenes (und vielleicht auch gepfeffertes) Hashing.
@spi was ist mit reCAPTCHA?
@theonlygusti dies fügt nur eine weitere Ebene der Komplexität hinzu, aber wenn die Leistung der Algorithmen zunimmt, kann ich mir keinen Turing-Test vorstellen, den ein Mensch leicht durchführen könnte, aber keinen Algorithmus.Wenn überhaupt, wie viel Zeit könnte es widerstehen?Wir sind mehr oder weniger nah an der Technologie-Singularität (noch nicht erreicht, aber es ist nur eine Frage der Zeit), bei der ein Roboter in allem effizienter ist als ein menschliches Gehirn.Also werden Captchas für mich erlöschen (vielleicht 10 Jahre oder 20 oder mehr. Aber es wird passieren).
@theonlygusti Ich versage reCAPTCHAs durchschnittlich 30% der Zeit, und ich bin ein Software-Ingenieur bla bla.Verwenden Sie sie nicht mehr, sie sind sinnlos und verursachen den Menschen mehr Schmerzen und Leiden, als es wert ist.(Ich lasse immer wieder Dienste fallen, die ich kann, wenn ich ein reCAPTCHA mehr treffe. Sie sind einfach zu schmerzhaft, um damit umzugehen. Ich habe mehr als 30 Minuten in einer Sitzung mit einer einzigen Sitzung verbracht, weil der Google-Algorithmus tatsächlich falsch war.)
@202_accepted Hast du gerade gesagt, dass du mehr als 30 Minuten damit verbracht hast, ein Captcha zu lösen?!Oder habe ich es falsch verstanden?
@SebastianNielsen Sie haben richtig gehört.
Bots werden von Jahr zu Jahr anspruchsvoller.Bis zu dem Punkt, an dem ich finde, dass sie mit CAPTCHA erfolgreicher sind als Menschen.Aus diesem Grund bevorzuge ich 2-Faktor-Authentifizierungssysteme gegenüber CAPTCHA.Leider bevorzugen viele Benutzer Komfort gegenüber Sicherheit und deaktivieren die 2-Faktor-Authentifizierung viel zu oft.
"Verwenden Sie gutes Hashing" sollte "Verwenden Sie kein Hashing" sein, zumindest nicht direkt.Verwenden Sie eine * kennwortbasierte Schlüsselableitungsfunktion * wie PBKDF2, bcrypt oder argon2.
@ChristopherSchultz Und wie passt PBKDF2 (usw.) nicht zur Definition einer kryptografischen Hash-Funktion?Es erhält eine Benutzereingabe (das Kennwort) und eine Ausgabe mit fester Länge (aus der die Eingabe nur schwer abgeleitet werden kann, die für verschiedene Eingaben wahrscheinlich unterschiedlich ist usw.).
@MartinBonner Der Unterschied besteht darin, dass eine "kryptografische Hash-Funktion" für einen anderen Anwendungsfall als eine Schlüsselableitungsfunktion entwickelt wurde.Häufig bauen Funktionen zur Schlüsselableitung auf vorhandenen Hashes auf.Hashes sollen jedoch Kollisionen vermeiden und schnell sein.Schlüsselableitungsfunktionen sind so konzipiert, dass sie * langsam * sind und selbst bei gleicher Eingabe eine gewisse Eindeutigkeit bieten (normalerweise als "Salz" bezeichnet, damit identische Eingaben nicht identische Ausgaben erzeugen).
Daisetsu
2018-10-07 21:39:31 UTC
view on stackexchange narkive permalink

Vielleicht.

Es hängt davon ab, wie Sie "Brute Force" definieren.

Eine Sperrung nach X falschen Versuchen ist ideal, um ein Konto zu schützen, bei dem ein Angreifer ein einzelnes Ziel verfolgt.

In einem anderen Szenario hat der Angreifer einige häufig verwendete Kennwörter ausgewählt: "Kennwort, Kennwort 123 usw." Und anstatt einen einzelnen Benutzer anzugreifen, versuchen sie ihre 4 allgemeinen Passwörter für jedes Konto, das sie in Ihrem System kennen.

  Benutzer: JimPW: Passwort, Passwort123, letmein, secretUser: BobPW: Passwort, Passwort123, letmein, secretUser: AlicePW: Passwort, Passwort123, letmein, secret  

Dies ist häufiger in Szenarien der Fall, in denen Angreifer Anmeldeinformationen für den Wiederverkauf im Darknet sammeln oder seitlich zu anderen Diensten wechseln möchten, bei denen Kennwörter möglicherweise wiederverwendet wurden.

Ich schlage vor, dass Sie etwas hinzufügen, um die Rate der insgesamt ungültigen Anmeldungen zu zählen, und nicht nur auf Konto- oder IP-Ebene.

leicht durch Proxies oder Botnets kontert.
@sebastian Ich denke, Sie haben vielleicht falsch verstanden, was ich sage.Sie sollten die Rate der ** insgesamt ** ungültigen Anmeldungen * kennen, * nicht * nur derjenigen mit derselben IP.Sie könnten 10.000 Proxys verwenden, und ich würde immer noch feststellen, dass die Gesamtrate auf einen koordinierten Angriff hinweist.In diesem Fall könnte ich nachforschen und feststellen, ob ich eine Kennung des Angriffs finden kann (IP-Bereich, Land, Anforderungsformat, Browser-Agent, Interaktionsverlauf, z. B. ob die Startseite jemals geladen wurde usw.). ** Anzahl.nächster Kommentar **
** Forts. ** Dann wird der koordinierte Angriff auf diese Weise für den Angreifer transparent ausgesondert, sodass er davon ausgeht, dass er immer noch versucht zu lieben, während sein Datenverkehr automatisch verweigert wird.
Diese Art von Angriff wird als "Passwort-Spray" bezeichnet (um danach zu suchen) und könnte entweder durch eine Anforderung an die Passwortstärke oder im Idealfall durch "Sie haben ein allgemeines Passwort verwendet, ich gehe nicht" etwas gemildert werdenum diese "Politik zuzulassen.(Siehe: Aktualisierte NIST-Kennwortrichtlinien https://pages.nist.gov/800-63-3/sp800-63b.html Abschnitt 5.1.1.2)
Damon
2018-10-08 15:02:40 UTC
view on stackexchange narkive permalink

Es ist eine Bedrohung in einem anderen Sinne. Wenn Sie Konten nach 5 erfolglosen Versuchen für 15 Minuten sperren, haben Sie effektiv einen DoS-Mechanismus eingebaut.

Angenommen, ich möchte nicht wirklich einbrechen, aber ich kann nur verursachen Chaos, kein Problem. Führen Sie einfach einige tausend Anmeldungen pro Sekunde mit zufälligen Benutzernamen durch. Hey, ich werde mir nicht einmal die Mühe machen, das CAPTCHA zu machen, wen interessiert das? Ich möchte nur fehlschlagen und sperren .

Eine bessere Strategie als eine festgelegte Zeitspanne nach einer festgelegten Anzahl von Fehlern kann quadratisch sein ( oder exponentielles Wachstum. Einige AVM-Router tun dies. Erster Anmeldefehler, 15 Sekunden Sperrung, nächster Fehler 30 usw. usw. Dies ist für legitime Benutzer viel weniger problematisch und für Angreifer viel problematischer.
Um DoS schwieriger zu machen, benötigen Sie eine Art des Rezepts mit der IP-Adresse sowie dem Kontonamen, wobei die maximale Verzögerung pro Konto-IP-Paar auf einen tolerierbaren Wert begrenzt wird. Andernfalls könnte ein legitimer Benutzer immer noch einfach und unbegrenzt DoSed werden. Das exponentielle Wachstum befasst sich jedoch besser mit dem Problem der "unendlichen Anzahl von Versuchen".

Das tatsächliche Finden eines Benutzernamen-Passwort-Paares online mit brutaler Gewalt setzt voraus, dass die Leute nicht ' t dumm, praktisch hoffnungslos. Leider sind die Leute dumm, sodass Sie nicht davon ausgehen können, dass sie nicht über eines der zehn dümmsten Passwörter verfügen, und Sie müssen davon ausgehen, dass dies machbar ist. Ja, da gibt es auch eine gewisse Bedrohung. Insbesondere, weil es zwar schwierig sein kann, einen Benutzer auf einem Server anzusprechen, Sie jedoch auf einem rein auf Benutzernamen basierenden Steuerungssystem problemlos tausend Benutzer auf demselben Server gleichzeitig ansprechen können (jede Bewertung nur ein einziger Fehler!) und Sie können dies auf tausend Servern parallel tun. Und es kostet Sie nichts, dieses Skript wochenlang (Monate, Jahre ...) laufen zu lassen und alle 15 bis 20 Minuten erneut zu versuchen.

Während Ihre Chancen als Angreifer für das individuelle Konto sehr gering sind, da sich die Zahlen zu praktisch unendlich summieren, müssen Sie irgendwo jemanden schlagen Schließlich ist es unvermeidlich. Da es ansonsten trivial ist, tausend Benutzer parallel zu testen, sollte klar sein, dass Sie auch IP-Adressen bei Ihrer Berechnung berücksichtigen müssen. Trotzdem bietet es keinen 100% igen Schutz gegen ein Botnetz mit einigen tausend Bots, aber es macht den Angriff sicher etwas weniger effektiv und erfordert mehr Arbeit und Management. Mehr Arbeit ist gut.

Sie können das Rennen nicht gewinnen, wenn Sie ein ernstes Ziel sind. Je schwieriger Sie jedoch die Arbeit eines Angreifers machen, desto wahrscheinlicher ist es, dass der Angreifer eine andere Person (die ein leichteres Ziel ist) auswählt Beginnen Sie mit.
Es ist fast das Gleiche wie das Schließen Ihrer Haustür, anstatt sie weit offen zu lassen. Ein Einbrecher kann leicht Ihr Fenster zerbrechen, und Sie können schließlich nichts tun, um jemanden am Betreten zu hindern. Aber wenn er die Wahl einer offenen Tür im Haus des Nachbarn hat und Ihr Fenster einschlagen muss, wird er wahrscheinlich den einfacheren Weg wählen. Weniger Ausgaben, gleicher Gewinn.

"Wenn Sie Konten nach 5 erfolglosen Versuchen für 15 Minuten sperren, haben Sie effektiv einen DoS-Mechanismus eingebaut.";Werden die meisten Lockout-Systeme heutzutage nicht mit Blockierung auf IP-Ebene gebaut, nicht nur mit Benutzernamen?
Austin Hemmelgarn
2018-10-08 23:40:03 UTC
view on stackexchange narkive permalink

Ja, es ist immer noch eine Bedrohung, weil:

  • CAPTCHAs sich sehr schnell dem Punkt des Sicherheitstheaters nähern. Es gibt mehrere Dienste, die sie (für einen Preis) beschädigen können, und es wird immer schwieriger, Probleme zu finden, die von einem Menschen, aber nicht von einem Computer trivial gelöst werden können.
  • Brute-Force-Versuche gegen einen einzelnen Benutzer sind nicht die einzigen potenziellen Angriffe, mit denen Sie umgehen müssen. Es ist nicht ungewöhnlich, dass Angriffe dieselben Kennwörter für eine Liste bekannter Kontonamen verwenden. Es ist auch nicht allzu ungewöhnlich, dass bestimmte Dienste, die wahrscheinlich eine Handvoll bekannter Benutzernamen haben (z. B. SSH), Benutzerzuordnungsangriffe sehen.
  • Sofern Sie keine Form der Kennwortqualitätsprüfung erzwingen, ist dies der Fall Es ist ziemlich wahrscheinlich, dass ein Brute-Force-Versuch nicht alle 15 Minuten 5 Versuche für 5 Versuche benötigt, um ihn ausreichend zu verlangsamen.

Ideen zur Verbesserung Ihrer Vorschläge:

  • Erzwingen Sie, wie oben erwähnt, die Kennwortqualität. Lassen Sie im Idealfall Dinge wie die XKCD-Kennwortgenerierungsmethode funktionieren (Informationen hierzu finden Sie unter XKCD # 936), und stellen Sie noch besser sicher, dass alle gültigen Unicode-Zeichen akzeptiert werden.
  • Gibt genau einen Fehlercode für einen Authentifizierungsfehler aufgrund ungültiger Anmeldeinformationen zurück, anstatt unterschiedliche für ungültige Benutzernamen und ungültige Kennwörter zu haben. Dies ist wirklich wichtig, da es vor Benutzerzuordnungsangriffen schützt.
  • MFA-Unterstützung bereitstellen. Dies ist eigentlich nicht schwer richtig zu machen, wenn Sie sich etwas Zeit nehmen, um es einzurichten. TOTP-MFA-Methoden (wie die Google Authenticator-App und das MFA-System von Steam) sind im Allgemeinen recht einfach anzuwenden und relativ sicher. U2F ist auch ziemlich sicher, erfordert jedoch mehr Arbeit beim Einrichten. Unabhängig davon, wenn Sie diesen Weg gehen, lassen Sie mehrere MFA-Methoden zu (idealerweise eine Mischung aus verschiedenen Typen). Vermeiden Sie alles, was das Senden der Anmeldecodes per E-Mail (absolut nicht sicher) oder SMS (besser als E-Mail) erfordert, aber es kann sehr lange dauern, bis der Code empfangen wird. Alle Benutzer, die MFA aktivieren, sind dann funktional vor den meisten Brute-Force-Angriffen geschützt.
  • Verwenden Sie nicht nur eine statische Sperranordnung. Verwenden Sie stattdessen einen adaptiven Ansatz, bei dem die Zeit, in der das Konto gesperrt bleibt, davon abhängt, wie oft es kürzlich gesperrt wurde. Ein einfaches exponentielles Skalierungssystem mit einer Obergrenze für die Sperrzeit funktioniert gut genug. Stellen Sie beispielsweise die Zeit gleich 15 * 2 ^ n Minuten mit einer Obergrenze von 2 Stunden ein, wobei n die Anzahl der vorherigen Sperren in den letzten 24 Stunden ist (erster Versuch) ist eine 15-minütige Sperre, die zweite ist 30, die dritte ist 60, die vierte und die folgenden sind 120).
Tom
2018-10-08 23:29:45 UTC
view on stackexchange narkive permalink

Es gibt so etwas wie Brute-Force-Angriffe mit niedriger Geschwindigkeit, die speziell für das Aufbrechen von Konten mit Zeitüberschreitungen oder Sperren entwickelt wurden.

Wenn der Angreifer Ihre Schwellenwerte ermitteln kann (die er durch Testläufe erreichen kann), Er kann einen Bot schreiben, um knapp unter dieser Schwelle zu bleiben.

Dies begrenzt natürlich die Anzahl der Kombinationen, die er in einem bestimmten Zeitraum versuchen kann, weshalb diese Art von Angriffen oft Monate oder Jahre dauern und es ist unwahrscheinlich, dass Konten mit relativ langen Passwörtern kompromittiert werden.

In Kombination mit einer vernünftigen Passwortrichtlinie (das ist ein anderes Thema, hier sage ich nur diese Komplexität! = Sicherheit und Länge> Komplexität) und Durch eine solide Implementierung Ihres beschriebenen Systems können Sie die Wahrscheinlichkeit eines Kompromisses erheblich reduzieren. In den meisten Fällen reicht dies aus, damit das verbleibende Risiko innerhalb Ihrer Risikoakzeptanzgrenze liegt.

Paul
2018-10-09 00:47:09 UTC
view on stackexchange narkive permalink

Ratenlimit-Anmeldungen, Kontosperrung usw. sind gut, um jeden wirtschaftlich realisierbaren Brute-Force-Angriff auf einen Anmeldebildschirm zu stoppen. Dies ist jedoch nicht unbedingt der Fall.

Sehr oft werden Konten kompromittiert, weil Der Brute-Force-Angriff erfolgt nicht gegen den Anmeldebildschirm selbst (was einschränkend ist), sondern gegen eine Kopie der Daten. Wenn ein Angreifer über einen kompromittierten Server oder auf andere Weise auf die Daten zugreifen kann, geht es beim Brute-Force-Angriff wirklich darum, die Konten und Kennwörter herunterzuladen und dann die Verschlüsselung auf einem viel leistungsstärkeren Computer zu unterbrechen.

Sie haben den Unterschied zwischen einem Online- und einem Offline-Brute-Force-Angriff beschrieben, aber die Frage betrifft Online-Angriffe.
@schroeder Ich habe über Online-Angriffe geantwortet - siehe den ersten Absatz.Die Frage beschränkt die Frage niemals explizit auf einen Online-Angriff.Ich antwortete auf eine Weise, die das Bewusstsein schärfen würde, wenn es nicht bereits bekannt ist.Sicherheit ist ein so komplexes und sensibles Thema, dass Ihre Annahme nicht sicher getroffen werden kann.
In Ihrer ersten Zeile steht nur "gut, um jeden wirtschaftlich machbaren Brute-Force-Angriff zu stoppen", aber Sie erklären nicht, warum
Heiko Hatzfeld
2018-10-09 17:39:45 UTC
view on stackexchange narkive permalink

Brute Force muss nicht viel "Kraft" anwenden. Brute Force könnte tagelang laufen und ein winziger, aber anhaltender Tropfen für Tropfen sein. Ich würde Captcha als kein Problem für jeden entschlossenen Angreifer betrachten.

Selbst mit Ihren Einschränkungen haben Sie impliziert, dass diese Beschränkungen nur für ein einzelnes Konto gelten. Wenn ich also weiß, dass es mehrere Konten gibt, kann ich den Prozess trotzdem automatisieren, um es weiter zu versuchen.

Ich werde nicht in der Lage sein, den gesamten möglichen Schlüsselbereich mit Ihren Einschränkungen brutal zu erzwingen, aber ich werde in der Lage sein, die Spitze zu erzwingen 1000 Passwörter pro Konto innerhalb von etwas mehr als 2 Tagen.

Angesichts der Tatsache, dass eine Liste der Top-1000-Kennwörter höchstwahrscheinlich einen angemessenen Prozentsatz Ihrer Benutzer abdeckt, sollten Sie in Kürze Zugriff auf Ihr System erhalten.

Sie können dies auch dagegen verteidigen?

Die Testversion pro IP einschränken? -> Vektor, um dies zu vermeiden: Botnets / VPN

Fügen wir der Liste also "unmögliche Reisen" hinzu? (Benutzer meldet sich innerhalb einer Minute aus Deutschland und den USA an.)

Wie wäre es also, wenn dieselbe IP verschiedene Benutzer ausprobiert?

Eine zu berücksichtigende Sache ist der Wert der Ressource, die Sie schützen möchten, und welche zusätzlichen Schritte Sie unternehmen möchten, um sie zu sichern. Eine weitere ziemlich sichere Ergänzung zur Stärke Ihres Systems ist ein zweiter Faktor. Dies kann jedoch zusätzliche Kosten für Sie verursachen, je nachdem, was Sie verwenden und wie viele Authentifizierungen Sie vornehmen müssen. Als eigenständiger Dienst berechnet Azure beispielsweise 1,4 USD pro 10 Authentifizierungen. Oder Sie können einen kostenlosen Dienst oder ein "Grid" -System mit eindeutigen Daten pro Benutzer verwenden.

PushfPopf
2018-10-09 20:04:11 UTC
view on stackexchange narkive permalink

Ist Brute Force immer noch eine wahrscheinliche Bedrohung?

"Wahrscheinlich" hängt davon ab, wie lecker Sie als Ziel sind. Wenn Sie ein wünschenswertes Ziel sind, dann sind sie eine Bedrohung.

Während eine Zeitüberschreitung mit einem Ratenlimit und einer Sperrung für brutale Gewalt sorgt, würden sie nur X Versuche in Y Minuten erhalten Dies ist ein großes Problem, da externe Angreifer Ihre Benutzer nahezu mühelos aussperren können.

In diesem Fall haben Sie die Wahl zwischen Bedrohungen. Sie entscheiden, dass ein Angreifer im Austausch für den Schutz einzelner Konten die Benutzer sperren kann. Es ist ein anderer Angriff als das tatsächliche Stehlen / Ändern von Daten, aber es ist immer noch ein Angriff.

Eine bessere Lösung wäre, sichere Passwörter und eine Zwei-Faktor-Authentifizierung zu erfordern und keine Sperre zu haben.

Wenn Sie beides tun, sind Ihre Konten relativ sicher und Ihre Benutzer werden nicht gesperrt.

Die Sicherheitsanfälligkeit wird hier erheblich verringert, da der Angreifer Ihre Kennwortdatenbank und 2FA-Geheimnisse stehlen und knacken muss, um Zugriff zu erhalten. Bis sie jedoch tief genug sind, tun sie dies nicht Sie benötigen die Benutzerkonten tatsächlich nicht mehr.

Dies hängt wirklich alles davon ab, was Sie schützen. Wenn es sich um ein Wordpress-Blog handelt und die Benutzer Ihren neuesten Beitrag nicht kommentieren können, ist dies keine große Sache. Wenn Ihre Website finanzielle, medizinische oder Sicherheitsdaten enthält, ist dies eine große Sache.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 4.0-Lizenz, unter der er vertrieben wird.
Loading...