Domanda:
La forza bruta è una minaccia probabile anche se abiliti CAPTCHA e accessi con limite di velocità?
Sayan
2018-10-07 20:44:55 UTC
view on stackexchange narkive permalink

Supponiamo che CAPTCHA sia abilitato con il controllo del blocco dell'account (dopo cinque continui tentativi falliti, l'account verrà bloccato per 15 minuti) su un sistema.

La forza bruta è ancora una probabile minaccia?

Se gli utenti possono scegliere i propri nomi utente e non esiste una politica di sicurezza della password, allora sì, un utente malintenzionato può forzare brute nomi utente e password comuni e anche limitati a 5 password per account in 15 minuti, potrebbe dividerne alcune.Una politica di sicurezza della password potrebbe aiutare.
Con la sicurezza delle password, l'obiettivo finale è rendere difficile per un utente malintenzionato accedere agli account utente _anche se hanno una copia del database_.
Considera che se metti al bando gli IP per troppo tempo, il Denial of Service potrebbe diventare un problema quando l'IP è condiviso (ad esempio nelle reti locali dietro un singolo IP pubblico).In realtà hai detto che "l'account" sarà bloccato per 15 minuti, spero intendessi IP, altrimenti è anche peggio (un bot potrebbe tentare di accedere ripetutamente e fallire, e l'account continuerà a essere bloccato).
Il lock-out è un ottimo inizio, l'ovvio passaggio successivo è l'aumento incrementale del tempo.15 minuti.30 minuti.2 ore.4 ore.Un giorno.
Otto risposte:
Anders
2018-10-07 21:07:47 UTC
view on stackexchange narkive permalink

Le protezioni che descrivi sono buone che dovresti considerare, ma possono ancora esserci dei punti deboli:

  • Molti CAPTCHAS possono essere risolti da robot, oppure puoi facilmente pagare persone per risolverli en massa per te (ci sono aziende che vendono quel servizio).
  • Il blocco dell'account è una buona idea, ma se lo fai sulla base di IP qualcuno con accesso a una botnet potrebbe riprovare ad accedere su un singolo account da un IP: fino a quando non entrano.
  • Offline la forza bruta è ancora un problema se il tuo database perde. Se l'aggressore ha accesso all'hash della password, può provare tutto ciò che vuole sul proprio sistema. Ecco perché dovresti usare un buon hashing.
`` Molti CAPTCHAS possono essere risolti dai robot '': questo è particolarmente vero al giorno d'oggi, con il deep learning e le reti neurali, che possono avere punteggi migliori rispetto alla media degli umani in questo tipo di compiti.I captcha sono sul punto di essere inutili.
Buon hashing _saled_ (e forse anche pepato).
@spi che dire di reCAPTCHA?
@theonlygusti questo aggiunge solo un altro livello di complessità, ma con l'aumentare della potenza degli algoritmi, non riesco a pensare a nessun test di Turing che un essere umano potrebbe facilmente completare ma non un algoritmo.Se esiste, quanto tempo potrebbe resistere?Siamo più o meno vicini alla singolarità tecnologica (non ancora raggiunta, ma è solo questione di tempo), dove un robot sarà più efficiente in tutto di un cervello umano.Quindi i captcha, per me, si estingueranno (forse 10 anni. O 20. o più. Ma accadrà).
@theonlygusti Non riesco a utilizzare reCAPTCHA in media il 30% delle volte e sono un ingegnere del software bla bla.Non usarli, sono più inutili e causano alle persone più dolore e sofferenza di quanto valga.(Continuo a rilasciare servizi che posso quando colpisco un reCAPTCHA, sono semplicemente troppo dolorosi da gestire. Ho trascorso più di 30 minuti in una sessione su uno solo perché l'algoritmo di Google era sbagliato, in effetti.)
@202_accepted Hai appena detto che trascorri più di 30 minuti cercando di risolvere un captcha ?!O l'ho capito male?
@SebastianNielsen Hai sentito bene.
I bot diventano ogni anno più sofisticati.Al punto ora che trovo che abbiano più successo con il CAPTCHA rispetto agli umani.Per questo motivo preferisco di gran lunga i sistemi di autenticazione a 2 fattori rispetto a CAPTCHA.Purtroppo, però, molti utenti preferiscono la comodità alla sicurezza e rinunciano troppo spesso all'autenticazione a 2 fattori.
"Usa hashing buono" dovrebbe essere "non usare hashing", almeno non direttamente.Utilizza una * funzione di derivazione della chiave basata su password * come PBKDF2, bcrypt o argon2.
@ChristopherSchultz E in che modo PBKDF2 (ecc.) Non si adatta alla definizione di una funzione hash crittografica?Viene fornito un input dell'utente (la password) e produce un output di lunghezza fissa (da cui è difficile dedurre l'input, è probabile che sia diverso per input diversi, ecc.).
@MartinBonner La differenza è che una "funzione hash crittografica" è progettata per un caso d'uso diverso rispetto a una funzione di derivazione della chiave.Spesso, le funzioni di derivazione della chiave sono costruite su hash esistenti.Ma gli hash sono progettati per evitare collisioni ed essere veloci.Le funzioni di derivazione della chiave sono progettate per essere * lente * e fornire una certa unicità anche dato lo stesso input (di solito chiamato "sale" per fare in modo che input identici producano output non identici).
Daisetsu
2018-10-07 21:39:31 UTC
view on stackexchange narkive permalink

Forse.

dipende da come si definisce "forza bruta".

Un blocco dopo X tentativi errati è ottimo per proteggere un account in cui un utente malintenzionato sta cercando un singolo bersaglio.

Esiste un altro scenario in cui l'aggressore ha scelto alcune password comuni "password, password123, ecc." E invece di attaccare un singolo utente, provano le 4 password comuni su ogni account di cui sono a conoscenza nel tuo sistema.

  Utente: JimPW: password, password123, letmein, secretUser: BobPW: password, password123, letmein, secretUser: AlicePW: password, password123, letmein, secret  

Questo è più comune negli scenari in cui gli aggressori stanno cercando di raccogliere le credenziali per la rivendita sulla darknet o di effettuare spostamenti laterali verso altri servizi in cui le password potrebbero essere state riutilizzate.

Ti suggerisco di aggiungere qualcosa per contare il tasso di accessi non validi complessivi, piuttosto che solo a livello di account o IP.

facilmente contrastato da proxy o botnet.
@sebastian Penso che tu possa aver frainteso quello che sto dicendo.Dovresti essere consapevole del tasso di ** accessi non validi ** complessivi, * non * solo di quelli dallo stesso IP.Potresti usare 10.000 proxy e avrei comunque notato che la velocità complessiva indicava un attacco coordinato.In tal caso, potrei indagare e vedere se riesco a trovare un identificatore dell'attacco (intervallo IP, paese, formato della richiesta, agente del browser, cronologia delle interazioni, ad esempio se hanno mai caricato la home page, ecc.) ** Count.commento successivo **
** cont. ** Quindi elimina l'attacco coordinato in questo modo in modo trasparente per l'attaccante, lasciandoli supporre che stiano ancora tentando di amare mentre il loro traffico viene effettivamente negato automaticamente.
Questo tipo di attacco è chiamato "spray password" (per il gusto di cercarlo) e potrebbe essere in qualche modo mitigato da un requisito di sicurezza della password o, più idealmente, da "hai usato una password comune, non vadoper consentire quella "politica.(vedere: linee guida aggiornate per la password NIST https://pages.nist.gov/800-63-3/sp800-63b.html sezione 5.1.1.2)
Damon
2018-10-08 15:02:40 UTC
view on stackexchange narkive permalink

È una minaccia in un senso diverso. Se blocchi gli account per 15 minuti dopo 5 tentativi falliti, allora hai effettivamente integrato un meccanismo DoS.

Supponiamo che non voglia davvero entrare, ma sto bene solo causando caos, nessun problema. Basta fare qualche migliaio di accessi al secondo con nomi utente casuali. Ehi, non mi prenderò nemmeno la briga di fare il CAPTCHA, chi se ne frega. Tutto quello che voglio è fallire e bloccare .

Una strategia migliore di un periodo di tempo fisso dopo un numero fisso di errori potrebbe essere quadratica ( o esponenziale). Alcuni router AVM lo fanno. Primo errore di accesso, hai 15 secondi di blocco, il prossimo errore ne hai 30, ecc. Ecc. Questo è molto meno fastidioso per gli utenti legittimi e molti più problemi per gli aggressori. della ricetta che coinvolge l'indirizzo IP e il nome dell'account, limitando il ritardo massimo per coppia account-IP a un valore tollerabile. In caso contrario, un utente legittimo potrebbe comunque essere sottoposto a DoSed in modo semplice e indefinito. La crescita esponenziale affronta meglio il problema del "numero infinito di tentativi", tuttavia.

In realtà, trovare una coppia nome utente-password online con la forza bruta è, beh, presumere che le persone non lo siano t stupido, praticamente senza speranza. Sfortunatamente, le persone sono stupide, quindi non puoi presumere che non avranno una delle dieci password più stupide e devi presumere che sia fattibile. Quindi, sì, anche lì c'è un po 'di minaccia. In particolare perché, sebbene possa essere difficile scegliere come target un utente su un server, su un sistema di controllo basato esclusivamente sul nome utente, puoi indirizzare un migliaio di utenti su quello stesso server in parallelo senza problemi (ogni punteggio solo un solo errore!) e puoi farlo su un migliaio di server in parallelo. E non ti costa davvero nulla mantenere questo script in esecuzione per settimane (mesi, anni ...), riprovando ogni 15-20 minuti.

Quindi, mentre per l'account individuale le tue possibilità di attaccante sono molto basse, poiché i numeri si sommano, beh, virtualmente infinito sei destinato a colpire qualcuno, da qualche parte , alla fine, è inevitabile. Poiché altrimenti è banale provare un migliaio di utenti in parallelo, dovrebbe essere chiaro che anche devi considerare gli indirizzi IP nel tuo calcolo. Anche così, non offre una protezione al 100% contro una botnet con poche migliaia di bot, ma sicuramente rende l'attacco un po 'meno efficace, richiedendo più lavoro e gestione. Più lavoro è buono.

Non puoi vincere la gara una volta che sei un obiettivo serio, ma più fai fatica a far lavorare un attaccante, più è probabile che l'attaccante scelga qualcun altro (che è un bersaglio più facile) per iniziare con.
È più o meno la stessa cosa che chiudere la porta di casa invece di lasciarla completamente aperta. Un ladro può facilmente rompere la tua finestra e alla fine non puoi fare nulla per impedire a qualcuno di entrare. Ma data la possibilità di scegliere una porta aperta a casa del vicino e dover rompere la tua finestra, probabilmente sceglierà il modo più semplice. Meno spese, stesso profitto.

"Se blocchi gli account per 15 minuti dopo 5 tentativi falliti, hai effettivamente integrato un meccanismo DoS.";la maggior parte dei sistemi di blocco oggi non sono costruiti con il blocco a livello di IP, non solo il nome utente?
Austin Hemmelgarn
2018-10-08 23:40:03 UTC
view on stackexchange narkive permalink

Sì, è ancora una minaccia, perché:

  • I CAPTCHA si stanno avvicinando molto rapidamente al punto del teatro di sicurezza. Ci sono più servizi là fuori che possono romperli (a un prezzo) e sta diventando sempre più difficile trovare problemi che possono essere risolti banalmente da un essere umano ma non da un computer.
  • Tentativi di forza bruta contro un singolo utente non sono gli unici potenziali attacchi che devi affrontare. Non è raro che gli attacchi provino lo stesso set di password su un elenco di nomi di account noti. Inoltre, non è troppo insolito per alcuni servizi che probabilmente hanno una manciata di nomi utente ben noti (SSH per esempio) vedere attacchi di mappatura degli utenti.
  • A meno che tu non imponga una qualche forma di controllo della qualità della password, è ragionevolmente probabile che un tentativo di forza bruta non richieda abbastanza tentativi per 5 tentativi ogni 15 minuti per rallentarlo abbastanza.

Idee per migliorare ciò che hai proposto:

  • Come accennato in precedenza, imponi la qualità della password. In una situazione ideale, lascia che funzioni come il metodo di generazione della password XKCD (vedi XKCD # 936 per informazioni su questo) e, meglio ancora, assicurati che sia accettato qualsiasi carattere Unicode valido.
  • Restituisce esattamente un codice di errore per un errore di autenticazione dovuto a credenziali non valide, invece di averne di diversi per nomi utente e password non valide. Questo è davvero importante, perché protegge dagli attacchi di mappatura degli utenti.
  • Fornisci supporto MFA. Questo in realtà non è difficile da fare correttamente se impieghi un po 'di tempo per configurarlo. I metodi TOTP MFA (come quello che forniscono l'app Google Authenticator e il sistema MFA di Steam) sono generalmente abbastanza facili da far funzionare e sono ragionevolmente sicuri. U2F è anche abbastanza sicuro ma richiede più lavoro per la configurazione. Indipendentemente da ciò, se procedi in questo modo, consenti più metodi MFA (idealmente un mix di tipi diversi). Evita tutto ciò che richiede l'invio dei codici di accesso tramite e-mail (non è assolutamente sicuro) o SMS (è meglio dell'e-mail, ma può avere un ritardo molto lungo prima che il codice venga ricevuto). Tutti gli utenti che abilitano l'MFA sono quindi protetti funzionalmente dalla maggior parte degli attacchi di forza bruta.
  • Non utilizzare solo una disposizione di blocco statico. Utilizza invece un approccio adattivo, in cui il tempo in cui l'account rimane bloccato si basa su quante volte è stato bloccato di recente. Un semplice sistema di ridimensionamento esponenziale con un limite superiore al tempo di blocco funzionerà abbastanza bene. Ad esempio, imposta il tempo uguale a 15 * 2 ^ n minuti con un limite di 2 ore, dove n è il numero di blocchi precedenti nelle ultime 24 ore (primo tentativo è un blocco di 15 minuti, il secondo è 30, il terzo è 60, il quarto e i successivi sono 120).
Tom
2018-10-08 23:29:45 UTC
view on stackexchange narkive permalink

Esistono attacchi di forza bruta a bassa velocità, progettati specificamente per violare gli account con timeout o blocchi.

Se l'attaccante riesce a capire le soglie (cosa che può fare con le prove), può scrivere a un bot che rimanga appena sotto quella soglia.

Ovviamente questo limita il numero di combinazioni che può provare in un dato periodo di tempo, motivo per cui questi tipi di attacchi spesso durano mesi o anni ed è improbabile che compromettano account con password ragionevolmente lunghe.

Quindi, in combinazione con una sana politica delle password (questo è un argomento diverso, qui dirò solo che complessità! = sicurezza e lunghezza> complessità) e una solida implementazione del sistema descritto, è possibile ridurre notevolmente la probabilità di un compromesso. Nella maggior parte dei casi, è sufficiente che il rischio rimanente rientri ampiamente nel limite di accettazione del rischio.

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

Gli accessi con limite di velocità, il blocco degli account, ecc. sono utili per fermare qualsiasi attacco di forza bruta economicamente fattibile contro una schermata di accesso, ma non è necessariamente così che viene eseguito l'attacco.

Molto spesso gli account vengono compromessi perché l'attacco di forza bruta non viene eseguito contro la schermata di accesso stessa (che è limitante) ma contro una copia dei dati. Se un utente malintenzionato può accedere ai dati tramite un server compromesso o altri mezzi, l'attacco di forza bruta consiste proprio nel scaricare gli account e le password e quindi interrompere la crittografia su una macchina molto più potente.

Hai descritto la differenza tra un attacco di forza bruta online e uno offline, ma la domanda riguarda gli attacchi online.
@schroeder Ho risposto sugli attacchi online - vedi il primo paragrafo.La domanda non limita mai esplicitamente la domanda solo a un attacco online.Ho risposto in un modo che aumenterebbe la consapevolezza se non lo sapesse già.La sicurezza è una questione così complessa e delicata che la tua supposizione non può essere fatta in modo sicuro.
La tua prima riga dice solo "buono per fermare qualsiasi attacco di forza bruta economicamente fattibile", ma non spieghi perché
Heiko Hatzfeld
2018-10-09 17:39:45 UTC
view on stackexchange narkive permalink

La forza bruta non ha bisogno di usare molta "forza". La forza bruta può durare giorni ed essere una goccia dopo goccia, ma persistente. Considererei il captcha come un non problema per qualsiasi aggressore determinato.

Anche con i tuoi vincoli hai sottinteso che questi limiti si applicano solo a un singolo account. Quindi, se so che ci sono più account, posso comunque automatizzare il processo per continuare a provare.

Non sarò in grado di forzare l'intero spazio delle chiavi possibile con i tuoi vincoli, ma sarò in grado di forzare la parte superiore 1000 password per account in poco più di 2 giorni.

Dato che un elenco delle prime 1000 password coprirebbe molto probabilmente una percentuale ragionevole dei tuoi utenti, dovresti essere in grado di ottenere l'accesso al tuo sistema abbastanza presto.

Anche tu puoi difenderti?

Limitare il periodo di prova per IP? -> Vector per evitarlo: Botnet / VPN

Quindi aggiungiamo "viaggio impossibile" alla lista? (L'utente accede dalla Germania e dagli Stati Uniti entro un minuto)

Che ne dici di provare lo stesso IP con diversi utenti?

Una cosa da considerare è il valore della risorsa che si tenta di proteggere e quali passaggi aggiuntivi si desidera eseguire per proteggerla. Un'altra aggiunta abbastanza sicura alla forza del tuo sistema è un secondo fattore. Ma questi possono comportare un costo aggiuntivo per te, a seconda di cosa usi e di quante autenticazioni devi effettuare. Ad esempio, come servizio autonomo, Azure addebiterà 1,4 $ per 10 autenticazioni. Oppure potresti utilizzare un qualche tipo di servizio gratuito o un sistema "Grid" con dati univoci per utente.

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

La forza bruta è ancora una minaccia probabile?

"Probabile" dipende da quanto sei gustoso un bersaglio. Se sei un bersaglio desiderabile, allora sì, sono una minaccia.

Mentre un timeout con un limite di velocità e un blocco si prenderà cura della forza bruta, poiché otterrebbero solo X tentativi in ​​Y minuti , è un grosso problema poiché consente agli aggressori esterni di bloccare i tuoi utenti quasi senza sforzo.

In questo caso puoi scegliere tra le minacce. Stai decidendo che in cambio della protezione dei singoli account, un utente malintenzionato può bloccare gli utenti. È un attacco diverso dal furto / modifica dei dati, ma è comunque un attacco.

Una soluzione migliore sarebbe richiedere password complesse e autenticazione a due fattori e non avere blocchi.

Se esegui entrambe le operazioni, i tuoi account saranno ragionevolmente al sicuro e i tuoi utenti non verranno bloccati.

La vulnerabilità qui è ridotta in modo significativo poiché l'attaccante dovrà rubare e violare il database delle password e i segreti 2FA per ottenere l'accesso, ma quando sono abbastanza in profondità per farlo, non lo fanno in realtà hanno più bisogno degli account utente.

Dipende tutto da ciò che stai proteggendo. Se è un blog Wordpress e gli utenti non possono commentare il tuo ultimo post, non è un grosso problema. Se il tuo sito contiene documenti finanziari, medici o di sicurezza, è un grosso problema.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 4.0 con cui è distribuito.
Loading...