Qual è lo scopo di un fuzzer?

29

Ho sentito parlare di questi strumenti e da quello che ho capito, inviano solo tonnellate di dati casuali a servizi diversi e osservano la loro reazione ad essi.

Qual è lo scopo di un fuzzer? Come può essere applicato durante un pentest?

    
posta Digital fire 08.10.2012 - 21:58
fonte

4 risposte

36

What is the purpose of a fuzzer?

Un fuzzer tenta di ottenere una reazione inaspettata dal software di destinazione fornendo un input per il quale non è stato pianificato correttamente. Lo fa lanciando dati "creati creativamente" come input per il software. Mi aspettavo un numero di telefono? Ha! Ho intenzione di darti 1.024 caratteri di 0x00! Esagono casuale! Unicode! Un campo a larghezza zero! Solo la punteggiatura: "() -"

L'obiettivo è ottenere una risposta di errore che non sia pulita ... accesso extra, overflow del buffer, ecc. L'input gestito in modo improprio è essenzialmente il nodo di ogni problema di sicurezza, sia estendendolo a intervalli di memoria indesiderati o un numero qualsiasi di altre reazioni. Un errore SQL è tornato dal campo del numero di telefono? SQL Injection time!

Quindi, per tutto questo, i fuzzer sono utili per trovare difetti, e in particolare durante un pentest per l'utilizzo di questi difetti come un punto per provare e lanciare gli exploit da.

    
risposta data 08.10.2012 - 23:41
fonte
20

Un fuzzer è uno strumento (semi) automatizzato che viene utilizzato per trovare vulnerabilità nel software che può essere sfruttato da un utente malintenzionato. I vantaggi includono, ma non sono limitati a:

  • Precisione : un fuzzer eseguirà controlli che un utente non qualificato potrebbe perdere
  • Precisione - Un fuzzer fornisce una sorta di benchmark rispetto al quale è possibile testare il software
  • Velocità : un fuzzer può preformare molti controlli in un tempo relativamente breve

Gli svantaggi posizionali includono, ma non sono limitati a:

  • Un falso senso di sicurezza - Come tutti i software, un fuzzer può / sarà imperfetto e non catturerà ogni possibile vulnerabilità
  • Dettagli tecnici oscurati : la natura automatizzata di un fuzzer può scoraggiarne uno dall'apprendimento effettivo delle tecniche che utilizza
risposta data 08.10.2012 - 22:06
fonte
8

from what I understand, they just send tons of random data at different services and observe their reaction to it

Questo è parzialmente vero, a seconda di cosa intendi per "casuale". I fuzzer possono essere utilizzati in questo modo allo scopo di identificare le perdite di memoria in un programma, ma possono anche essere utili nel test delle penne (facendo in modo che il programma si blocchi). Se riesci a mandare in crash il programma con un fuzzer, puoi probabilmente dirottarlo.

Dal punto di vista dei pennarelli, i fuzzer sono più utili per identificare gli errori di input validation .

Forse è meglio spiegarlo con un semplice FTP fuzzer , assumendoti puoi leggere il codice sorgente.

Un tipico fuzzer FTP potrebbe tentare di eseguire vari comandi FTP come cd , put , ecc., con argomenti "casuali". Spesso, i fuzzers invieranno bruteforce inviando stringhe di lunghezza crescente, che potrebbero essere utilizzate per identificare errori di overflow del buffer, che potrebbero essere sfruttabili (ASLR e altre tecnologie lo mitigano in qualche modo).

A questo proposito, un fuzzer sarebbe molto utile durante l'esecuzione dell'applicazione server in un debugger, in modo da poter vedere esattamente come / dove si blocca. Quindi lo shellcode potrebbe essere costruito per dirottare l'applicazione.

I fuzzer che non inviano dati casuali sono probabilmente più utili qui, ad es. l'invio di pattern come "ABBCCCDDDD ..." potrebbe essere più utile nel puntare con precisione l'esatta dimensione del buffer necessario per l'overflow, poiché potrebbero impiegare qualcosa di simile a una ricerca binaria per risultati più rapidi.

    
risposta data 09.10.2012 - 01:15
fonte
7

Le risposte di un servizio di rete dovrebbero rientrare in una delle poche categorie ben definite e ampie. Se si inviano dati casuali, ad esempio, a un servizio HTTP, si prevede di ottenere molti risultati HTTP 400 e forse alcuni altri risultati HTTP 4XX. Se succede qualcosa di ELSE, come un timeout o una risposta diversa, allora quel risultato anomalo vale la pena di essere notato e indagare più avanti.

    
risposta data 08.10.2012 - 22:05
fonte

Leggi altre domande sui tag