In questo tutorial verrà discusso l'attacco di forza bruta e verranno menzionati alcuni strumenti per eseguire questo attacco. Innanzitutto è per dire che cos'è la forza bruta, anche se dal suo nome si può immaginare.
È una tecnica che si basa su tentativi ed errori, viene utilizzata per ottenere password o decrittografare dati, questo metodo non cerca una strategia intelligente, ma piuttosto testa tutte le possibili combinazioni finché non trova la chiave.
È possibile ottenere qualsiasi password o decrittografare qualsiasi file? Se il nostro tempo fosse probabilmente infinito, ma poiché non lo è, la risposta è no, password o chiavi lunghe e con vari fattori (maiuscole, minuscole, numeri, caratteri speciali), ci vorrebbe molto tempo per farli uscire da questo metodo (in una vita non saremmo raggiunti).
Possiamo utilizzare questo metodo per verificare la sicurezza delle nostre password o la crittografia contro questo tipo di attacco. Se lo vuoi sapere come creare una password sicura, consiglio di leggere questo tutorial. Un algoritmo di crittografia vulnerabile a questo tipo di attacco è DES, il caso opposto è AES, che non è vulnerabile alla forza bruta. È meglio capire bene il campo della crittografia.
Il mondo della crittografia
Avere una password sicura è il primo passo, ma puoi anche mettere un ulteriore livello di protezione, usando il autenticazione a doppio fattore Nei tuoi account (almeno quelli più preziosi), oggi ci sono già servizi che lo offrono integrato e gratuito, come Google, Twitter e Linkedin. Questi sistemi normalmente inviano un messaggio al tuo cellulare con un codice una volta inserita la password corretta, quindi fino a quando non inserisci quel codice non sarai in grado di inserire il tuo account.
In particolare la forza bruta è spesso combinata con gli attacchi del dizionarioQuesto attacco consiste nell'avere un file con password più tipiche (le persone di solito usano parole conosciute per le loro password, così le ricordano meglio) e provarle tutte, fino a trovare la chiave o terminare le password senza successo. L'attacco in generale è più efficiente, anche se se utilizziamo diversi fattori nella nostra password, le possibilità di successo diminuiscono notevolmente.
Strumenti di forza bruta
Giovanni lo Squartatore
È open source e gratuito, di solito lo troverai distribuito in codice sorgente.Il suo obiettivo principale è trovare password deboli nei sistemi operativi UNIX.
THC Idra
Questo strumento consente di applicare la forza bruta ai servizi di autenticazione remota. Puoi eseguire attacchi con dizionario contro più di 50 protocolli.
Medusa
È uno strumento modulare, funziona in parallelo con gli accessi a forza bruta. Compatibile con protocolli come FTP, HTTP, IMAP, SSH, ecc.
Ncrack
È uno strumento per violare le autenticazioni di rete, funziona rapidamente. Puoi estendere lo strumento creando i tuoi moduli.
Caino e Abele
È uno strumento destinato al recupero delle password in Windows, per craccarlo consente di utilizzare la forza bruta, ma anche attacchi a dizionario e attacchi tramite tabelle arcobaleno (Rainbow Table).
Metto sotto un codice in Python che ottiene password che contengono solo numeri da una pagina web, fino a 5 cifre, si potrebbe fare anche con lettere, lunghezza maggiore, ecc. Prima ti lascio il codice che serve le richieste di posta in PHP:
Vediamo che non abbiamo limiti di tentativi, che l'utente e la sua password sono definiti proprio lì (per evitare database e complicazioni al codice), se l'utente e la password sono corretti restituiamo un codice 200 e se non un 403.
Successivamente lascio il codice Python che è responsabile dell'invio delle richieste al codice precedente.
import http.client, urllib.parsefrom time import target time = "/bruteForce/index.php"headers = {" Content-type ":" application / x-www-form-urlencoded "," Accept ":" application / xhtml + xml, text/html; q = 0.9, text/plain; ",} found = Falsepassword = 0home = time() mentre password <= 99999 e non trovata: parametri = urllib.parse.urlencode ({'user': ' josue ',' pass': password}) connection = http.client.HTTPConnection ("localhost") connection.request ("POST", target, parametri, intestazioni) response = connection.getresponse () if (response.status == 200 ): print ("Password trovata per l'utente josue, es", password) print ("Ci è voluto del tempo: {0: .2f} s" .format ((time () - start))) found = True else: print ( password) connection.close () password + = 1se non trovata: print ("Nessuna password trovata per josue")Questo codice fa le richieste di post, in ogni passaggio al ciclo tutto ciò che facciamo è cambiare la password e aggiungerci 1, quindi proveremo tutte le possibili password da 0 a 99999 (se non la troviamo prima). Dipingi tutti i numeri che trovi, perché è così che volevo per l'esempio, puoi rimuoverlo, per questo elimini il resto. Eseguiamo questo codice per vedere se trova le password.
Il primo esempio che avvieremo per trovare la password 2087, sotto c'è l'immagine, puoi vedere che non mi ci vogliono 18 secondi per ottenerla.
Se rimuovo l'altro in modo che non dipinga sullo schermo ogni numero impiega molto meno tempo, qui puoi vedere uno screenshot:
Ora per il secondo e ultimo tentativo ho messo la password 20870, per vedere quanto tempo ci vuole questa volta.
La differenza la si vede quando si aggiunge un carattere in più alla password, ma anche così è un tempo che possiamo aspettare senza problemi, inoltre se mettiamo dei thread il tempo diminuirebbe. Ecco perché utilizziamo password complesse e un'autenticazione robusta nelle nostre applicazioni, che non possono automatizzare questo attacco.
Se vuoi vedere un esempio pratico in cui la password di uno zip o di un rar è rotta, puoi visitare il seguente tutorial:
Rompi la password .rar o .zip
Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo