CAPEC-215
Fuzzing for application mapping
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.
Abstraction
Detailed
Typical severity
Low
Likelihood of attack
High
Understand the attack
What is this attack pattern?
Extended description
Execution flow
How does the attack proceed, step by step?
Explore
Observe communication and inputs
Techniques used
- 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.)
Experiment
Generate fuzzed inputs
Techniques used
- 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.
Observe the outcome
Exploit
Craft exploit payloads
Techniques used
- 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.
Requirements
What does the attack require?
Prerequisites
- The target application must fail to sanitize incoming messages adequately before processing.
Skills required
- Medium: Although fuzzing parameters is not difficult, and often possible with automated fuzzing tools, interpreting the error conditions and modifying the parameters so as to move further in the process of mapping the application requires detailed knowledge of target platform, the languages and packages used as well as software design.
Resources required
- Fuzzing tools, which automatically generate and send message variants, are necessary for this attack. The attacker must have sufficient access to send messages to the target. The attacker must also have the ability to observe the target application's log and/or error messages in order to collect information about the target.
Impact
What does a successful attack lead to?
Affected scopes: Confidentiality
Defence
How is it prevented and mitigated?
Real world