Reverse Engineering and Securing iOS Apps
Luke Reichold
Vulnerability Analysis - Techniques
Goals
Analyzing other apps:
Network Analysis - Benefits
Recognize that ANY user with MITM can...
Network Analysis - Benefits
Transport Security - Best Practices
What is it?
2. Static Analysis
What is it?
Inspect code / binary to seek out coding flaws, back doors, and vulnerabilities without execution.
2. Static Analysis
2. Static Analysis - Targets
2. Static Analysis - Attack Vectors
Xcode Demo
2. Static Analysis
2. Static Analysis - Defense Techniques
unsigned char myApiKey[] = {0xDE, 0xAD, 0xBE, 0xEF }
String Obfuscation
String Obfuscation - Better Technique
2. Static Analysis - Defense Techniques
2. Static Analysis - Defense Techniques
2. Static Analysis - Defense Techniques
Built into Xcode!
3. Runtime Analysis - Attack Vectors
3. Runtime Analysis - Attack Vectors
3. Runtime Analysis - Attack Vectors
Implementing Jailbreak Detection
Implementing Jailbreak Detection
Implementing Jailbreak Detection
Runtime Debugging
Runtime Debugging - Defenses
Runtime Debugging - Defenses
Runtime Debugging - Defenses
Unvalidated User Input
Buffer overflows:
Unvalidated User Input
String formatting:
Unvalidated User Input
// BAD
NSLog(self.userInputTextField);
[mString appendFormat:[NSString stringWithFormat:@"value: ", _myField.text]];
String Formatting
URL Schemes:
myapp://use_template?template=/../../../../../../some/other/file
Unvalidated User Input
URL Schemes:
Unvalidated User Input
3. Runtime Manipulation - Mitigation
Inlining Functions
Inlining Functions
Inlining Functions
#define isJailbroken() asdfghz()
static inline bool asdfghz() _attribute__((always_inline)) {
...
}
4. Storing Data at Rest
4. Storing Data at Rest
4. Storing Data at Rest
4. Storing Data at Rest
4. Storing Data at Rest
4. Storing Data at Rest
Big Ideas
Big Ideas
Big Ideas
Big Ideas
Big Ideas
Big Ideas