What is penetration testing (pentesting)?
the process of attacking a piece of software with the purpose of finding security vulnerabilities.
aka
hacking with permission
What is automated pen testing?
- a systematic and repeatable approach to pentesting,
What is the aim of penetration testing?
To find vulnerabilities
What is a vulnerability?
A security hole in the hardware or software (including operating system) of a system that provides the possibility to attack that system
What are examples of vulnerabilities?
What is an SQL injection?
(answer this mentally)
What is a buffer overflow attack?
when data is written into a buffer (in memory) that is too small to handle the size of the data.
In some languages, the additional data simple overwrites the memory that is located immediately after the buffer. If carefully planned, attacker-generated data and code can be written here.
What are some ways to prevent security attacks?
What are examples of verification techniques?
fuzz testing
What is fuzz testing?
a (semi-)automated approach for penetration testing that
involves the randomisation of input data to locate vulnerabilities.
How does fuzz testing work?
What are the 3 techniques for fuzzing?
What is random testing?
tests generated randomly according to some probability distribution (possible uniform) to permit a large amount of inputs to be generated in an fast and unbiased way.
What are the advantages of random testing?
What are the disadvantages of random testing?
Why is it hard to achieve good coverage with random testing?
If you have a series of conditions, e.g. x==y, then the probability of being able to generate that case can be very very low.
What is Mutation based fuzzing?
starting with a well-formed input and randomly modifying (mutating) parts of that input rating (possibly invalid) test inputs.
- can be random or based on some heuristics.
What are the advantages of fuzzing?
What are the disadvantages of fuzzing?
What is generation based fuzzing?
using some specification of the input data, such as a grammar of the input to generate input as opposed to mutating existing input
What are the advantages of generation based fuzzers?
generally giving higher coverage as knowledge of the input protocol means that valid sequences of inputs can be generated that explore parts of the program (tricky branches)
What are the disadvantages of generation based fuzzers?
What is a memory debugger?
a tool for finding memory leaks and buffer overflow
Why are memory debuggers important?
because anomalies such as buffer overflows are difficult to observe using system behaviour
e.g. in stack buffer overflow, if the overflow is just by a few characters, it would be difficult to detect unless that particular part of memory is accessed again, which may not be the case.