La forza bruta è una minaccia probabile anche se abiliti CAPTCHA e accetti i limiti di accesso?

38

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

La forza bruta è ancora una probabile minaccia?

    
posta Sayan 07.10.2018 - 17:44
fonte

8 risposte

65

Le protezioni che descrivi sono buone che dovresti prendere in considerazione, ma ci possono ancora essere dei punti deboli:

  • Molti CAPTCHAS possono essere risolti da robot, oppure puoi pagare facilmente le persone per risolverli in massa per te (ci sono aziende che vendono quel servizio).
  • Il blocco degli account è una buona idea, ma se lo fai in base all'IP qualcuno che ha accesso a una botnet potrebbe riprovare l'accesso su un singolo account da diversi IP: s fino a quando non entrano.
  • La forza bruta non in linea è ancora un problema se il tuo database viene trapelato. Se l'utente malintenzionato ha accesso all'hash della password, può provare tutto ciò che desidera sul proprio sistema. Ecco perché dovresti usare un buon hashing.
risposta data 07.10.2018 - 18:07
fonte
39

Forse.

dipende da come definisci la "forza bruta".

Un blocco dopo X tentativi errati è ottimo per proteggere un account dove un attaccante sta andando dopo un singolo bersaglio.

C'è un altro scenario in cui l'autore dell'attacco ha selezionato alcune password comuni "password, password123, ecc." E invece di attaccare un singolo utente, provano le loro 4 password comuni su un account ogni che conoscono nel tuo sistema.

User: Jim
PW: password, password123, letmein, secret

User: Bob
PW: password, password123, letmein, secret

User: Alice
PW: password, password123, letmein, secret

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

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

    
risposta data 07.10.2018 - 18:39
fonte
3

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

Supponiamo che io non voglia davvero intromettermi, ma sto bene solo causando caos, nessun problema. Fai solo qualche migliaio di accessi al secondo con nomi utente casuali. Ehi, non mi preoccuperò nemmeno di fare il CAPTCHA, a chi importa. Tutto quello che voglio è fail e lock up .

Una strategia migliore di una quantità di tempo fissa dopo un numero fisso di errori potrebbe essere una crescita quadratica (o esponenziale). Alcuni router AVM lo fanno. Primo errore di accesso, hai un blocco di 15 secondi, il prossimo errore ne hai 30, ecc. Ecc. Questo è molto meno fastidioso per gli utenti legittimi e molti altri problemi per gli aggressori.
Per rendere il DoS più difficile, è necessario un tipo di ricetta che includa l'indirizzo IP e il nome dell'account, limitando il massimo ritardo per account-coppia IP a un valore tollerabile. Altrimenti, un utente legittimo può ancora essere eseguito facilmente e indefinitamente. La crescita esponenziale affronta meglio il problema del "numero infinito di tentativi", tuttavia.

In realtà trovare una coppia di username / password online da forza bruta è, beh, assumendo che le persone non siano stupide, praticamente senza speranza. Sfortunatamente, le persone sono stupide, quindi non puoi presumere che non abbiano una delle dieci password più carine e devi presumere che sia fattibile. Quindi, sì, c'è anche un po 'di minaccia. In particolare, anche se può essere difficile indirizzare un utente su un server, su un sistema di controllo basato esclusivamente sul nome utente, è possibile indirizzare un migliaio di utenti sullo stesso server in parallelo senza problemi (ogni solo punteggio un singolo errore!) e puoi farlo su un migliaio di server in parallelo. Inoltre, non ti costa nulla mantenere questo script in esecuzione per settimane (mesi, anni ...), riprovando ogni 15-20 minuti.

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

Non puoi vincere la gara quando sei un bersaglio serio, ma più duro esegui il lavoro di un attaccante, più è probabile che l'attaccante scelga qualcun altro (che è un bersaglio più facile) per cominciare.
È quasi la stessa cosa che bloccare la porta principale invece di lasciarla aperta. Un ladro può facilmente rompere la finestra e non c'è infine nulla che tu possa fare per impedire a qualcuno di entrare. Ma data la scelta di una porta aperta a casa del vicino e di dover distruggere la tua finestra, probabilmente sceglierà il modo più semplice. Meno spese, stesso profitto.

    
risposta data 08.10.2018 - 12:02
fonte
2

Sì, è ancora una minaccia, perché:

  • I CAPTCHA si avvicinano molto rapidamente al punto del teatro della sicurezza. Ci sono diversi servizi là fuori che possono infrangerli (a un prezzo), e sta diventando sempre più difficile trovare problemi che possono essere banalmente risolti da un umano ma non da un computer.
  • I 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 insieme di password rispetto a un elenco di nomi di account noti. Inoltre, non è troppo insolito per alcuni servizi che potrebbero avere una manciata di nomi utente noti (ad esempio SSH) per visualizzare attacchi di mapping degli utenti.
  • A meno che non applichi una qualche forma di controllo della qualità della password, è ragionevolmente probabile che un tentativo di forza bruta non richiederà un numero sufficiente di tentativi per 5 tentativi ogni 15 minuti per rallentarlo abbastanza.

Idee per migliorare ciò che hai proposto:

  • Come detto sopra, impone la qualità della password. In una situazione ideale, tieni a mente cose come il metodo di generazione della password XKCD (vedi XKCD # 936 per informazioni su quello), e meglio ancora, assicurati che ogni carattere Unicode valido sia accettato.
  • Restituisce esattamente un codice di errore per un errore di autenticazione a causa di credenziali non valide, invece di averne diversi per nomi utente non validi e password non valide. Questo è veramente importante, perché protegge dagli attacchi di mappatura degli utenti.
  • Fornisci supporto MFA. Questo in realtà non è difficile da eseguire correttamente se si impiega del tempo per configurarlo. I metodi TOTP MFA (come ad esempio l'app Google Authenticator e il sistema MFA di Steam) sono in genere piuttosto semplici da utilizzare e ragionevolmente sicuri. U2F è anche abbastanza sicuro ma richiede più lavoro da impostare. Indipendentemente da ciò, se andate in questo modo, consenti più metodi MFA (idealmente un mix di diversi tipi). Evita tutto ciò che richiede l'invio dei codici di accesso via e-mail (assolutamente non sicuro) o SMS (è meglio della posta elettronica, ma può avere un ritardo molto lungo prima che il codice venga ricevuto). Tutti i tuoi utenti che abilitano MFA sono quindi protetti dal punto di vista funzionale 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 dipende da quante volte è stato bloccato di recente. Un semplice sistema di ridimensionamento esponenziale con un limite superiore per il 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 (il primo tentativo è un blocco di 15 minuti, il secondo è 30, il terzo è 60, il quarto e il successivo sono 120).
risposta data 08.10.2018 - 20:40
fonte
1

Esiste un attacco di forza bruta a bassa velocità, progettato specificamente per entrare negli account con timeout o blocchi.

Se l'attaccante è in grado di calcolare le soglie (che può eseguire con le esecuzioni di prova), può scrivere un bot per rimanere appena sotto tale soglia.

Ovviamente, questo limita il numero di combinazioni che può provare in un determinato periodo di tempo, motivo per cui questi tipi di attacchi spesso vengono eseguiti per mesi o anni e difficilmente possono compromettere gli account con password abbastanza lunghe.

Quindi, in combinazione con una politica di password sensata (che è un argomento diverso, qui dirò solo la complessità! = sicurezza e lunghezza > complessità) e una solida implementazione del sistema descritto, è possibile ridurre la probabilità di un compromesso considerevole. Nella maggior parte dei casi, è sufficiente che il rischio rimanente si trovi entro i limiti di accettazione del rischio.

    
risposta data 08.10.2018 - 20:29
fonte
0

Gli accessi ai limiti tariffari, il blocco degli account, ecc. sono buoni per fermare qualsiasi attacco di forza bruta economicamente fattibile contro una schermata di accesso, ma questo non è necessariamente il modo in cui l'attacco è stato eseguito.

Molto spesso gli account sono compromessi perché l'attacco brute force non viene eseguito contro la schermata di login 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 brute force consiste essenzialmente nel scaricare account e password e quindi rompere la crittografia su una macchina molto più potente.

    
risposta data 08.10.2018 - 21:47
fonte
0

La forza bruta non ha bisogno di usare molta "forza". La forza bruta potrebbe funzionare per giorni ed essere una goccia minuscola, ma persistente dopo goccia dopo goccia. Prenderò in considerazione il captcha come un 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 ancora automatizzare il processo per continuare a provare.

Non riuscirò a forzare l'intero spazio delle chiavi con i vincoli, ma potrò forzare le prime 1000 password per account entro poco più di 2 giorni.

Dato che un elenco di password top-1000 probabilmente coprirà una percentuale ragionevole dei tuoi utenti, dovresti essere in grado di accedere al tuo sistema abbastanza presto.

Quindi puoi difenderti?

Limita la prova per IP? - > Vettore per evitarlo: botnet / VPN

Quindi aggiungiamo "viaggio impossibile" alla lista? (L'utente effettua l'accesso da Germania e Stati Uniti entro un minuto)

Quindi, perché lo stesso IP prova diversi utenti?

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

    
risposta data 09.10.2018 - 14:39
fonte
0

Is brute force still a probable threat?

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

Mentre un timeout con un limite di velocità e un lockout si prenderà cura della forza bruta, dato che 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 rubare / cambiare i dati, ma è comunque un attacco.

Una soluzione migliore sarebbe quella di richiedere password complesse e autenticazione a due fattori, senza blocco.

Se esegui entrambe le operazioni, i tuoi account saranno ragionevolmente sicuri e gli utenti non saranno bloccati.

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

Questo dipende tutto da cosa stai proteggendo. Se si tratta di un blog Wordpress e gli utenti non possono commentare il tuo ultimo post, non è un grosso problema. Se il tuo sito contiene documenti finanziari o medici o di sicurezza, è un grosso problema.

    
risposta data 09.10.2018 - 17:04
fonte

Leggi altre domande sui tag