An attacker sends random, malformed, or otherwise unexpected messages to a target application and observes the application's log or error messages returned. The attacker does not initially know how a target will respond to individual messages but by attempting a large number of message variants they may find a variant that trigger's desired behavior. In this attack, the purpose of the fuzzing is to observe the application's log and error messages, although fuzzing a target can also sometimes cause the target to enter an unstable state, causing a crash.
Description
Attack Execution Flow
Step 1
Explore[Observe communication and inputs] The fuzzing adversary observes the target system looking for inputs and communications between modules, subsystems, or systems.
Network sniffing. Using a network sniffer such as wireshark, the adversary observes communications into and out of the target system.
Monitor API execution. Using a tool such as ktrace, strace, APISpy, or another debugging tool, the adversary observes the system calls and API calls that are made by the target system, and the nature of their parameters.
Observe inputs using web inspection tools (OWASP's WebScarab, Paros, TamperData, TamperIE, etc.)
[Osserva comunicazioni e input] L'avversario di fuzzing osserva il sistema target alla ricerca di input e comunicazioni tra moduli, sottosistemi o sistemi.
Sniffing di rete. Utilizzando uno strumento di sniffer di rete come Wireshark, l'avversario osserva le comunicazioni in entrata e in uscita dal sistema target.
Monitoraggio dell'esecuzione API. Utilizzando strumenti come ktrace, strace, APISpy o altri strumenti di debugging, l'avversario osserva le chiamate di sistema e le chiamate API effettuate dal sistema target, e la natura dei loro parametri.
Osserva gli input utilizzando strumenti di ispezione web (OWASP's WebScarab, Paros, TamperData, TamperIE, ecc.)
Attack Techniques
-
Network sniffing. Using a network sniffer such as wireshark, the adversary observes communications into and out of the target system.
-
Monitor API execution. Using a tool such as ktrace, strace, APISpy, or another debugging tool, the adversary observes the system calls and API calls that are made by the target system, and the nature of their parameters.IT: Sniffing di rete. Utilizzando un network sniffer come Wireshark, l'attaccante osserva le comunicazioni in entrata e in uscita dal sistema target.
-
Observe inputs using web inspection tools (OWASP's WebScarab, Paros, TamperData, TamperIE, etc.)IT: Sniffing di rete. Utilizzando un network sniffer come Wireshark, l'attaccante osserva le comunicazioni in entrata e in uscita dal sistema target.
Step 2
Experiment[Generate fuzzed inputs] Given a fuzzing tool, a target input or protocol, and limits on time, complexity, and input variety, generate a list of inputs to try. Although fuzzing is random, it is not exhaustive. Parameters like length, composition, and how many variations to try are important to get the most cost-effective impact from the fuzzer.
Boundary cases. Generate fuzz inputs that attack boundary cases of protocol fields, inputs, or other communications limits. Examples include 0xff and 0x00 for single-byte inputs. In binary situations, approach each bit of an individual field with on and off (e.g., 0x80).
Attempt arguments to system calls or APIs. The variations include payloads that, if they were successful, could lead to a compromise on the system.
Sperimentazione
[Generare input fuzzed] Data uno strumento di fuzzing, un input o protocollo target, e limiti su tempo, complessità e varietà di input, generare una lista di input da testare. Sebbene il fuzzing sia casuale, non è esaustivo. Parametri come lunghezza, composizione e quante variazioni tentare sono importanti per ottenere l'impatto più efficace in rapporto ai costi dal fuzzer.
Casi limite. Generare input fuzzed che attaccano i casi limite dei campi del protocollo, degli input o di altri limiti di comunicazione. Esempi includono 0xff e 0x00 per input a singolo byte. In situazioni binarie, affrontare ogni bit di un singolo campo con on e off (ad esempio, 0x80).
Tentare argomenti di system call o API. Le variazioni includono payload che, se riuscissero, potrebbero portare a una compromissione del sistema.
Attack Techniques
-
Boundary cases. Generate fuzz inputs that attack boundary cases of protocol fields, inputs, or other communications limits. Examples include 0xff and 0x00 for single-byte inputs. In binary situations, approach each bit of an individual field with on and off (e.g., 0x80).
-
Attempt arguments to system calls or APIs. The variations include payloads that, if they were successful, could lead to a compromise on the system.IT: Casi limite. Genera input di fuzzing che attaccano i casi limite dei campi del protocollo, degli input o di altri limiti di comunicazione. Esempi includono 0xff e 0x00 per input a singolo byte. In situazioni binarie, affronta ogni bit di un singolo campo con on e off (ad esempio, 0x80).
Step 3
Experiment[Observe the outcome] Observe the outputs to the inputs fed into the system by fuzzers and see if there are any log or error messages that might provide information to map the application
Sperimenta
[Osserva l'esito] Osserva gli output rispetto agli input forniti al sistema dai fuzzers e verifica se ci sono messaggi di log o di errore che possano fornire informazioni utili per mappare l'applicazione
Step 4
Exploit[Craft exploit payloads] An adversary usually needs to modify the fuzzing parameters according to the observed error messages to get the desired sensitive information for the application. To defeat correlation, the adversary may try changing the origin IP addresses or client browser identification strings or start a new session from where they left off in obfuscating the attack.
Modify the parameters in the fuzzing tool according to the observed error messages. Repeat with enough parameters until the application has been sufficiently mapped.
If the application rejects the large amount of fuzzing messages from the same host machine, the adversary needs to hide the attacks by changing the IP addresses or other credentials.
[Craft exploit payloads] Un avversario di solito deve modificare i parametri di fuzzing in base ai messaggi di errore osservati per ottenere le informazioni sensibili desiderate dall'applicazione. Per evitare la correlazione, l'avversario può tentare di cambiare gli indirizzi IP di origine o le stringhe di identificazione del browser client oppure avviare una nuova sessione riprendendo da dove aveva interrotto, con l’obiettivo di offuscare l’attacco.
Modifica i parametri nello strumento di fuzzing in base ai messaggi di errore osservati. Ripeti con un numero sufficiente di parametri fino a mappare sufficientemente l’applicazione.
Se l’applicazione rifiuta un grande numero di messaggi di fuzzing provenienti dalla stessa macchina host, l’avversario deve nascondere gli attacchi cambiando gli indirizzi IP o altre credenziali.
Attack Techniques
-
Modify the parameters in the fuzzing tool according to the observed error messages. Repeat with enough parameters until the application has been sufficiently mapped.
-
If the application rejects the large amount of fuzzing messages from the same host machine, the adversary needs to hide the attacks by changing the IP addresses or other credentials.IT: Modifica i parametri nello strumento di fuzzing in base ai messaggi di errore osservati. Ripeti con un numero sufficiente di parametri fino a mappare in modo soddisfacente l'applicazione.