Contributor(s): KirstenS, Paul McMillan, Raesene, Adedov, Dinis.Cruz, JoE, Daniel Waller ,kingthorin
Blocco attacchi di forza bruta
Una minaccia comune sviluppatori web faccia è un attacco password-guessing noto come un attacco di forza bruta.Un attacco a forza bruta è un tentativo di scoprire una password provando sistematicamente ogni possibile combinazione di lettere, numeri e simboli fino a scoprire l’unica combinazione corretta che funziona.,Se il tuo sito web richiede l’autenticazione dell’utente, sei un buon bersaglio per un attacco a forza bruta.
Un utente malintenzionato può sempre scoprire una password attraverso un attacco a forza bruta, ma il rovescio della medaglia è che potrebbero volerci anni per trovarla.A seconda della lunghezza e della complessità della password, potrebbero esserci trilioni di combinazioni possibili.
Per accelerare un po ‘ le cose, un attacco a forza bruta potrebbe iniziare con parole del dizionario o parole del dizionario leggermente modificate perché la maggior parte delle persone userà quelle piuttosto che una password completamente casuale., Questi attacchi sono chiamati attacchi dizionario o attacchi ibridi di forza bruta.Gli attacchi a forza bruta mettono a rischio gli account utente e inondano il tuo sito di traffico non necessario.
Gli hacker lanciano attacchi a forza bruta utilizzando strumenti ampiamente disponibili che utilizzano elenchi di parole e set di regole intelligenti per indovinare in modo intelligente e automatico le password degli utenti. Sebbene tali attacchi siano facili da rilevare, non sono così facili da prevenire.
Ad esempio, molti strumenti di forza bruta HTTP possono inoltrare richieste attraverso un elenco di server proxy aperti., Poiché ogni richiesta sembra provenire da un indirizzo IP diverso, non è possibile bloccare questi attacchi semplicemente bloccando l’IP address.To complicare ulteriormente le cose, alcuni strumenti provano un nome utente e una password diversi su ogni tentativo, quindi non è possibile bloccare un singolo account per tentativi di password falliti.
Blocco degli account
Il modo più ovvio per bloccare gli attacchi a forza bruta è semplicemente bloccare gli account dopo un numero definito di tentativi di password errati.,I blocchi degli account possono durare una durata specifica, ad esempio un’ora, oppure gli account possono rimanere bloccati fino allo sblocco manuale da parte di un amministratore.
Tuttavia, il blocco dell’account non è sempre la soluzione migliore, perché qualcuno potrebbe facilmente abusare della misura di sicurezza e bloccare centinaia di utenti accounts.In infatti, alcuni siti Web subiscono così tanti attacchi che non sono in grado di applicare una politica di blocco perché sbloccherebbero costantemente gli account dei clienti.,
I problemi con il blocco degli account sono:
- Un utente malintenzionato può causare un Denial of Service (DoS) bloccando un gran numero di account.
- Poiché non è possibile bloccare un account che non esiste, verranno bloccati solo i nomi di account validi. Un utente malintenzionato potrebbe utilizzare questo fatto per raccogliere i nomi utente dal sito, a seconda delle risposte di errore.
- Un utente malintenzionato può causare una deviazione bloccando molti account e inondando l’help desk con chiamate di supporto.,
- Un utente malintenzionato può bloccare continuamente lo stesso account, anche pochi secondi dopo che un amministratore lo sblocca, disabilitando in modo efficace l’account.
- Blocco account è inefficace contro gli attacchi lenti che cercano solo poche password ogni ora.
- Il blocco dell’account è inefficace contro gli attacchi che tentano una password contro un ampio elenco di nomi utente.
- Il blocco dell’account è inefficace se l’utente malintenzionato utilizza un elenco combinato nome utente / password e indovina correttamente al primo paio di tentativi.,
- Account potenti come gli account amministratore spesso ignorano la politica di blocco, ma questi sono gli account più desiderabili da attaccare. Alcuni sistemi bloccano gli account amministratore solo su accessi basati sulla rete.
- Anche una volta bloccato un account, l’attacco potrebbe continuare, consumando preziose risorse umane e informatiche.
Il blocco dell’account è talvolta efficace, ma solo in ambienti controllati o nei casi in cui il rischio è così grande che anche attacchi DoS continui sono preferibili al compromesso dell’account.,Nella maggior parte dei casi, tuttavia, il blocco dell’account è insufficiente per fermare gli attacchi di forza bruta.
Si consideri, ad esempio, un sito di aste su cui diversi offerenti stanno combattendo per lo stesso oggetto.Se il sito Web dell’asta ha imposto blocchi di account, un offerente potrebbe semplicemente bloccare i conti degli altri nell’ultimo minuto dell’asta, impedendo loro di presentare qualsiasi vincita bids.An attaccante potrebbe utilizzare la stessa tecnica per bloccare le transazioni finanziarie critiche o comunicazioni e-mail.,
Cookie del dispositivo
Si può anche considerare di bloccare separatamente i tentativi di autenticazione da browser o dispositivi noti e sconosciuti.L’articolo di Slow Down Online Guessing Attacks with Device Cookies propone un protocollo per il meccanismo di blocco basato su informazioni su se il browser specifico è già stato utilizzato per il login di successo.Il protocollo è meno suscettibile agli attacchi DoS rispetto al semplice blocco dell’account e tuttavia efficace e facile da implementare.,
Trovare altre contromisure
Come descritto, i blocchi degli account di solito non sono una soluzione pratica, ma ci sono altri trucchi per affrontare gli attacchi di forza bruta.Innanzitutto, poiché il successo dell’attacco dipende dal tempo, una soluzione facile è quella di iniettare pause casuali durante il controllo di una password.Aggiungere anche una pausa di pochi secondi può rallentare notevolmente un attacco a forza bruta, ma non disturberà la maggior parte degli utenti legittimi mentre accedono ai loro account.,
Si noti che sebbene l’aggiunta di un ritardo possa rallentare un attacco a thread singolo, è meno efficace se l’utente malintenzionato invia più richieste di autenticazione simultanee.
Un’altra soluzione consiste nel bloccare un indirizzo IP con più accessi non riusciti.Il problema con questa soluzione è che è possibile bloccare inavvertitamente grandi gruppi di utenti bloccando un server proxy utilizzato da un ISP o da una grande azienda.Un altro problema è che molti strumenti utilizzano elenchi proxy e inviano solo poche richieste da ciascun indirizzo IP prima di passare a quello successivo.,
Utilizzando elenchi di proxy aperti ampiamente disponibili, un utente malintenzionato potrebbe facilmente aggirare qualsiasi meccanismo di blocco IP.Poiché la maggior parte dei siti non si blocca dopo una sola password non riuscita, un utente malintenzionato può utilizzare due o tre tentativi per proxy.An l’attaccante con un elenco di 1.000 proxy può tentare 2.000 o 3.000 password senza essere bloccato.
Tuttavia, nonostante le debolezze di questo metodo, i siti Web che subiscono un numero elevato di attacchi (siti Web per adulti in particolare) scelgono di bloccare gli indirizzi IP proxy.,
Una soluzione semplice ma sorprendentemente efficace è progettare il tuo sito Web per non utilizzare comportamenti prevedibili per password fallite.Ad esempio, la maggior parte dei siti Web restituisce un codice “errore HTTP 401” con un errore della password, anche se alcuni siti Web restituiscono invece un codice “SUCCESSO HTTP 200” ma indirizzano l’utente a una pagina che spiega il tentativo di password non riuscito.Questo sciocco alcuni sistemi automatizzati, ma è anche facile da aggirare.
Una soluzione migliore potrebbe essere quella di variare il comportamento abbastanza da scoraggiare tutti tranne gli hacker più dedicati.,Ad esempio, è possibile utilizzare messaggi di errore diversi ogni volta o talvolta consentire a un utente di accedere a una pagina e quindi richiedere nuovamente una password.
Alcuni strumenti automatici di forza bruta consentono all’utente malintenzionato di impostare determinate stringhe di trigger da cercare che indicano un tentativo di password fallito.Ad esempio, se la pagina risultante contiene la frase “Nome utente o password non validi”, lo strumento saprebbe che le credenziali non sono riuscite e proverebbe il successivo nell’elenco.,Un modo semplice per ingannare questi strumenti è includere anche quelle frasi come commenti nel sorgente HTML della pagina che ottengono quando si autenticano con successo.
Dopo uno o due tentativi di accesso falliti, è possibile richiedere all’utente non solo il nome utente e la password, ma anche di rispondere a una domanda segreta.Ciò non solo causa problemi con gli attacchi automatici, ma impedisce a un utente malintenzionato di accedere, anche se ottiene il nome utente e la password corretti.,
È anche possibile rilevare un numero elevato di attacchi a livello di sistema e in tali condizioni richiedere a tutti gli utenti la risposta alle loro domande segrete.
Altre tecniche che potresti prendere in considerazione sono:
- Per gli utenti avanzati che vogliono proteggere i loro account dagli attacchi, dare loro la possibilità di consentire il login solo da determinati indirizzi IP.
- Assegna URL di accesso univoci a blocchi di utenti in modo che non tutti gli utenti possano accedere al sito dallo stesso URL.,
- Usa a per prevenire attacchi automatici
- Invece di bloccare completamente un account, posizionalo in una modalità di blocco con funzionalità limitate.
Attaccanti spesso può aggirare molte di queste tecniche, ma combinando diverse tecniche, si può limitare significativamente la forza bruta attacchi.Potrebbe essere difficile da fermare un aggressore che è determinato a ottenere una password specificamente dal tuo sito web, ma queste tecniche, certamente, possono essere efficaci contro molte attacchi, compresi quelli da novizio hacker.,Queste tecniche richiedono anche più lavoro da parte dell’attaccante, che ti dà più opportunità di rilevare l’attacco e forse anche identificare l’attaccante.
Sebbene gli attacchi a forza bruta siano difficili da arrestare completamente, sono facili da rilevare perché ogni tentativo di accesso fallito registra un codice di stato HTTP 401 nel server Web logs.It è importante monitorare i file di log per gli attacchi a forza bruta, in particolare i 200 statuscodes mescolati che significano che l’attaccante ha trovato una password valida.,ins con un URL di riferimento di qualcuno posta o client IRC
gli attacchi di forza Bruta sono sorprendentemente difficile da fermare completamente, ma con un design accurato e più contromisure, si possono limitare l’esposizione a questi attacchi.,
In definitiva, l’unica miglior difesa è assicurarsi che gli utenti seguano le regole di base per le password complesse: utilizzare password lunghe e imprevedibili, evitare le parole del dizionario, evitare di riutilizzare le password e cambiare le password regolarmente.
Un test di Turing pubblico completamente automatizzato per distinguere computer e umani, o , è un programma che consente di distinguere tra esseri umani e computer.In primo luogo ampiamente utilizzato da Alta Vista per prevenire contributi di ricerca automatizzati, s sono particolarmente efficaci nel fermare qualsiasi tipo di abuso automatizzato, compresi gli attacchi di forza bruta.,
Lavorano presentando alcuni test che è facile da superare per gli esseri umani ma difficile da superare per i computer; quindi, possono concludere con una certa certezza se c’è un essere umano dall’altra parte.
Affinché a sia efficace, gli esseri umani devono essere in grado di rispondere correttamente al test il più vicino possibile al 100% del tempo.I computer devono fallire il più vicino possibile al 100% del tempo.I ricercatori della Scuola di Informatica di Carnegie Mellon lavorano continuamente per migliorare e introdurre nuove s.,
Se stai sviluppando il tuo , tieni presente che non è quanto sia difficile la domanda che conta-è quanto sia probabile che un computer ottenga la risposta corretta.Una volta ho visto un che presenta all’utente una foto di tre zebre, con una domanda a scelta multipla che chiede quante zebre erano nel picture.To rispondere alla domanda, si fa clic su uno dei tre pulsanti.
Anche se sarebbe molto difficile per un programma per computer sia capire la domanda e interpretare l’immagine, il programma potrebbe solo indovinare casualmente qualsiasi risposta e farlo correggere un terzo del tempo., Anche se questo potrebbe sembrare un livello soddisfacente di rischio, non è affatto un efficace .Se si esegue un servizio di posta elettronica gratuito e si utilizza un tale come questo per impedire agli spammer di creare account in massa, tutto quello che devono fare è scrivere uno script per creare automaticamente 1.000 account e si aspettano in media che 333 di questi tentativi avranno successo.
Tuttavia, un semplice può ancora essere efficace contro gli attacchi di forza bruta.,Quando si combinano la possibilità di un utente malintenzionato l’invio di un nome utente e password corretta indovinare con la possibilità di indovinare il corretto, in combinazione con altre tecniche descritte in questo capitolo, anche un semplice potrebbe rivelarsi efficace.
Figura 1: Ritardo autenticazione password: C #
Figura 2: Ritardo autenticazione password: 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