analysing ios apps - recon · 2019-03-05 · analysing ios apps: road from appstore to security...

42
Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, Lenar Safin, Yaroslav Alexandrov SmartDec REcon, Brussels, 2017

Upload: others

Post on 24-Jun-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Analysing iOS apps: road from AppStore to security analysis report

Egor Fominykh, Lenar Safin, Yaroslav AlexandrovSmartDec

REcon, Brussels, 2017

Page 2: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

What we do at SmartDec• Decompilation, deobfuscation– x86/x64– ARM/AArch64– JVM, Android– Custom (VMs, less known archs, …)

• Code analysis (sources and binaries)– Manual static analysis– Pentesting– Analysis tools development

Page 3: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

iTunes linkhttps://itunes.apple.com/us/app/balloonist-travellers-world/id1070769999?mt=8

Security report Pseudocode

Page 4: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Plan• Get an application binary

• Translate application binary into some IR

• Analyse IR for security flaws

• Translate IR into human-readable pseudocode

Page 5: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

1:

Getting binary

Page 6: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

A problemApplications are encrypted. Decryption:

1. Launch an app on an iOS device.2. iOS decrypts it and loads it to RAM.3. Dump decrypted binary from RAM.

Jailbroken iOS device is needed.

Page 7: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Jailbreak• SSH• Bash•Cydia Substrate (call/hook any method)•Clutch

Page 8: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Approach• Figure out chain of method calls / GUI decisions

to initiate the download• Figure out how to make needed GUI decisions

programmatically, using Cydia Substrate

Page 9: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Main applications• Springboard.app (GUI) • AppStore.app

Page 10: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Process1. Unlock device — SpringBoard

2. Uninstall all apps — SpringBoard

3. Open iTunes page — SpringBoard

4. Press GET button — AppStore

5. Sign in (detect sign in alert, fill login/password, press ok) — SpringBoard

6. Wait OPEN button — AppStore

7. Decrypt — Clutch

Page 11: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

2: Translation into IR

Page 12: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

iOS application recovery challenges

• Lots of things to recover– Functions– Program CFG– Call site arguments and function signatures– Objective-C/Swift interfaces (even C++)– Data flow of the program

• AArch64– ARM32 is not supported anymore

Page 13: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Why LLVM?• Nice and useful• Bunch of algorithms–Alias Analysis–Dominators–Loops–Transformations and optimizations• Pass Manager• Ok for C-family apps

Page 14: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Ideas• Fast automatic translation into LLVM• Functions and function calls recovery• CFG reconstruction• Types and variables recovery• Objective-C/Swift3 support

Page 15: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Architecture

Page 16: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Image parsing• Unpacking Fat (Universal) binaries• Mach-O• Symbols• Function starts• Objective-C runtime (__objc_*)• Swift virtual tables

Page 17: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

CFG reconstruction• Entry point• Function starts• Vtables• Call sites• __TEXT section inspection• Tail calls and trampolines

Page 18: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Trampolines

Page 19: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Tail calls

Page 20: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Interface recovery• Objective-C interface– Classes– Protocols– Method names– Ivars– Demangling

• Swift interface– Vtables– Class hierarchy– Demangling

Page 21: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Objective-C runtime

Page 22: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Objective-C runtime

Page 23: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Swift runtime

Page 24: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Variables and types• Memory object reconstruction– Temporary– Variables–Globals– Strings

• Types recovery– Interprocedural arguments recovery– Known function signatures–Objective-C signatures–WIP: arrays and structs (we already have done it

for x86)

Page 25: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Objective-C function signatures parsing example

Page 26: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

LLVM generation• Translation preserving semantics• Simplification– DCE (dead code elimination)– MemProp– ConstProp• CFG region analysis

Page 27: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Example

Page 28: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Example

Page 29: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Example

Page 30: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

3, 4:

Vulnerabilities detection and results presentation

Page 31: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

PseudocodeLLVM to Objective-C/Swift-like pseudocode

(more accurate for Objective-C)– Function names, signatures– Statements– Arguments– Types– Call sites– Structural analysis (WIP)

Page 32: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Pseudocode

Page 33: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Analysis

• Pattern matching on LLVM (detects most of vulnerabilities)

• TBD: deep dataflow analysis (e.g., taint analysis)

• LLVM to pseudocode mapping (for results presentation)

Page 34: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Vulnerabilities: data transfer

Weak SSL

Page 35: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Vulnerabilities: data transfer

No SSL

Page 36: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Vulnerabilities: bad cryptoMD5, SHA1, 3DES, etc…

Page 37: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Vulnerabilities: data storage– Pasteboard usage– NSLog– Background mode

Page 38: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Vulnerabilities: reflection

Page 39: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Vulnerabilities: TBD• Unencrypted sensitive data storage in application directory• Cache of network requests• Data validation (SQLi, XSS, path manipulation, …)• Weak jailbreak detection• Authentication (2fa, password complexity, number of attempts)

Page 40: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Statistics: vulnerabilitiesVulnerabilities

6%7%

9%

9%

14%15%

40%

NSLogDeprecatedReflectionWeak cipherNo SSLWeak SSLPasteboard

Page 41: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Conclusion• Our toolset can:–Find vulnerabilities in iOS app using only its iTunes link–Present these vulnerabilities on pseudocode

• Future work:–Deep analysis (dataflow, etc.)–Less false positives–Objective-C/Swift decompilation

Page 42: Analysing iOS apps - Recon · 2019-03-05 · Analysing iOS apps: road from AppStore to security analysis report Egor Fominykh, ... – Pentesting – Analysis tools development. iTunes

Questions?

[email protected]@smartdec.net