Come calcolare i tempi di forzatura bruta / fattibilità per gli attacchi remoti per includere il parallelismo?

9

Questo è un puro esercizio di pensiero.

Assumi un server che non implementa la limitazione o il blocco dei tentativi falliti. Il server accetta una richiesta nome utente / password & invia una risposta Sì / No. Il tempo di risposta è di 10 secondi. Stai provando a forzare la password sul server. Sto cercando di capire quanto tempo occorrerebbe per la forza bruta dire un PIN numerico a 5 cifre.

L'entropia del PIN sarebbe 10 5 = 100000 Quindi il tempo impiegato per la forza bruta sarebbe 100000/10 = 10000 secondi.

Tuttavia, è possibile avere un programma con multithreading che invia richieste in parallelo. O più programmi in esecuzione allo stesso tempo facendo la forza bruta. Quindi il mio calcolo ingenuo non è corretto.

Supponendo che la macchina dell'attaccante sia un tipico laptop di oggi (i7, 16 GB di RAM), come faccio a calcolare il tempo necessario alla forza bruta? Ci sono delle regole per questo?

    
posta user93353 01.04.2017 - 07:01
fonte

3 risposte

2

Nel mondo reale, il collo di bottiglia principale sarebbe il numero di connessioni. La maggior parte delle implementazioni dei server, in particolare i server Web, limita questo limite, non solo per motivi di sicurezza (per combattere il tuo scenario esatto), ma anche per ragioni di equa condivisione delle risorse e per accelerare i clienti in fuga.

Anche se non lo regolano, un server può gestire solo un numero limitato di connessioni simultanee.

Ad esempio, la configurazione predefinita per apache2 è impostata su 150 connessioni simultanee. Questo è il limite difficile per un utente malintenzionato e, in circostanze realistiche, almeno alcune di queste connessioni saranno occupate a gestire utenti legittimi.

Quindi la risposta corretta per n dipende prima dall'implementazione del server e poi da altri fattori. Per uno scenario semplice come il tuo, è banale scrivere un client in grado di saturare il server con richieste, il client non sarà il collo di bottiglia per qualsiasi attaccante a metà strada competente, il server sarà.

    
risposta data 02.05.2018 - 23:29
fonte
0

Supponendo che sia un server magico:

Tempo: tempo per tentativo

1 ora media del thread: combinazioni * ora / 2

n tempo medio del thread: combinazioni * tempo / (2 * n)

    
risposta data 01.04.2017 - 08:01
fonte
0

In genere il modo in cui si determina un valore appropriato di n è di capire quante risorse di calcolo sono necessarie per ogni thread di attacco, quindi suddividerlo nelle risorse che potrebbero essere ottenute in modo attuabile da un utente malintenzionato. Tradizionalmente, ciò significava guardare una macchina desktop standard, ma al giorno d'oggi, anche per i singoli utenti malintenzionati, la disponibilità di noleggi informatici tramite AWS e fonti simili ha reso facile ottenere rapidamente e a buon mercato l'accesso a un bel po 'di potenza di calcolo. Se sei preoccupato per gli stati della nazione, il budget che assegnerai alle macchine è più alto, ma è una stima.

Quindi, in che modo esattamente determina quanti attacchi possono essere eseguiti in parallelo, una volta scelto l'hardware? La risposta più semplice è quella di confrontarlo - acquisire quell'hardware (o una frazione di esso) e vedere qual è il rendimento. Assicurati di registrare la configurazione (quale hardware, in particolare, quale sistema operativo, quali versioni di librerie importanti, quali flag di compilazione hai utilizzato) in modo che i revisori possano dare suggerimenti su come rendere più efficiente il processo di attacco.

    
risposta data 01.04.2017 - 17:08
fonte

Leggi altre domande sui tag