Mobile Application Security Testing
ASSES SESSMENT NT & CODE REVIEW EW
Sept.
- t. 31
31st
st 2014
Mobile Application Security Testing ASSES SESSMENT NT & CODE - - PowerPoint PPT Presentation
Mobile Application Security Testing ASSES SESSMENT NT & CODE REVIEW EW st 2014 Sept. t. 31 31 st Presenters ITAC 2014 Bishop Fox Francis Brown Partner Joe DeMesy Security Associate 2 2 Int ntrodu roductions ctions
ASSES SESSMENT NT & CODE REVIEW EW
Sept.
31st
st 2014
2
Bishop Fox
Partner
Security Associate
ITAC 2014
Presenters
2
3
from such hacks as:
Suite
Hacking
FRANCIS CIS BROW OWN
Int ntrodu roductions ctions
4
Fox
JOE DEME MESY
Int ntrodu roductions ctions
5
Breaking eaking iOS App pps s –
Breaking eaking Andro droid id App pps s –
COVERED RED TODAY AY
Age gend nda
6
Scenar narios ios
Management (MDM)
OUR TARG RGETS TS
App Se Secur curity ity Requir equiremen ements ts
THE GO GOLDEN DEN RULE
APPL PLICATION ICATION SECURITY URITY
8
control
and APIs accordingly
EVERY LAST ONE OF ‘EM EM
Us User ers s are e Evil
IOS OS DYNAMIC YNAMIC ANALYSIS ALYSIS
BREAKING REAKING IOS APPL PLICATIONS ICATIONS
10 10
WHAT T YOU NEED TO START ART
iOS OS Prerequisites erequisites
INTERCEP TERCEPTIN TING G HTTP TP TRAFFIC AFFIC
BREAKING REAKING MOBIL ILE APPL PLICATIONS ICATIONS
12 12
PROXY XY SETT TTIN INGS
HT HTTP TP Proxy xy Se Setup tup
13 13
INTE TERCE RCEPT PTIN ING HTTP TPS TRAFFIC IC
HT HTTP TP Proxy xy Se Setup tup
14 14
INTE TERCE RCEPT PTIN ING HTTP TPS TRAFFIC IC
HT HTTP TP Proxy xy Se Setup tup
15 15
Root Intermediate Leaf
CERTIF RTIFICATE ICATE VALI LIDAT DATION ION
Th The e SS SSL L Ce Certi tificat ficate e Ch Chain ain
16 16
Root Intermediate #1 Intermediate #2 Intermediate #3 Leaf
CERTIF RTIFICATE ICATE VALI LIDAT DATION ION
SS SSL Ce Certi tificat ficate e Ch Chain in
17 17
ADDING DING A TRUS USTE TED ROOT CERTI RTIFICATE ICATE
Bur urp p Su Suite te Pro
18 18
ADDING DING A TRUS USTE TED ROOT CERTI RTIFICATE ICATE
Bur urp p Su Suite te Pro
19 19
ADDING DING A TRUS USTE TED ROOT CERTI RTIFICATE ICATE
Bur urp p Su Suite te Pro
20 20
ADDING DING A TRUS USTE TED ROOT CERTI RTIFICATE ICATE
Bur urp p Su Suite te Pro
21 21
INTE TERCE RCEPT PTIN ING HTTP TPS TRAFFIC IC
HT HTTP TP Proxy xy Se Setup tup
22 22
SECURE URE TRAF AFFIC IC INTE TERCEP CEPTION TION
HT HTTP TP Proxy xy Se Setup tup
23 23
INTE TERCE RCEPT PTIN ING HTTP TPS TRAFFIC IC
HT HTTP TP Proxy xy Se Setup tup
24 24
ACME Root ACME Intermediate Application Leaf
NON-BROWS ROWSER R CERTIF TIFICATE ICATE VALID IDATI ATION
ACM CME E Ce Certificate tificate Pinning nning
IOS OS DYNAMIC YNAMIC ANALYSIS ALYSIS
BREAKING REAKING IOS APPL PLICATIONS ICATIONS
26 26
WHY WE NEED TO JAIL ILBRE REAK AK
Op Operating erating Sy System stem Se Secur curity ity Model del
DEMONST MONSTRATION RATION
CODE INJ NJECTION CTION TECHN HNIQ IQUE UES
APP P ST STOR ORE E ENCRYP CRYPTION TION
BREAKING REAKING IOS APPL PLICATIONS ICATIONS
29 29
GETT TTIN ING G PLAIN AINTEXT XT BIN INS
Binary nary Enc ncryption yption
30 30
DECRY CRYPT PTIN ING G IOS BINARIE INARIES
Cl Clut utch ch Us Usage ge
31 31
plist
NOT DELI LICIO CIOUS US BEER
Th The e IPA PA Arch chiv ive e Fo Format mat
32 32
SOFTWARE WARE VERSION ION BUNDLE ID
iTu Tune nes s Metadat etadata
33 33
I AM IN YOUR BIN INARIES ARIES CHANGING GING YOUR CODE
ARM M Disass sassemb embly ly
34 34
I AM IN UR BINARIES MODIF’IN UR UR CODE DEZ
ARM M Dec ecompiler
35 35
JAIL ILBREAK AK DETEC TECTION TION BYPAS YPASSES
XO XOR is s Not t Ob Obfusc uscation ation
36 36
ASSEMBLE INSTRUCT TRUCTION ION
Modify difying ing ARM M Ass ssem embly bly
37 37
PRODU ODUCE CE NEW W EXECUT UTAB ABLE
Modify difying ing ARM M Ass ssem embly bly
OB OBJECTIVE ECTIVE-C HEADER ADERS
STATI ATIC C ANAL ALYSIS YSIS
39 39
OBJECTIVE CTIVE-C CLAS ASS INTE TERF RFACES ACES
Cl Class ss Dum ump
#import <XXUnknownSuperclass.h> // Unknown library @class NSString; @interface XXasymEncryptor : XXUnknownSuperclass { NSString* _publicKeyID; NSString* _privateKeyID; } @property(copy, nonatomic) NSString* privateKeyID; @property(copy, nonatomic) NSString* publicKeyID;
@end
#import <XXUnknownSuperclass.h> // Unknown library @class NSString; @interface XXasymEncryptor : XXUnknownSuperclass { NSString* _publicKeyID; NSString* _privateKeyID; } @property(copy, nonatomic) NSString* privateKeyID; @property(copy, nonatomic) NSString* publicKeyID;
@end
Hmmmm…
MOB OBILE ILE SU SUBSTRAT STRATE
CODE INJ NJECTION CTION TECHN HNIQ IQUE UES
43 43
MESSAGE AGE PASSIN ING
Th The e Ob Objective ective-C C Runtime untime
iOS App Call Type? Native C Obj C
Execute Code
44 44
MESSAGE AGE PASSIN ING
Th The e Ob Objective ective-C C Runtime untime
iOS App Call Type? Native C Execute Code Obj C
Mobile Substrate
(Our code runs here)
45 45
BYPASSIN PASSING G COMMON ON DETE TECTION CTION METH THOD ODS
Jailbr break eak Det etec ection tion Co Code de
46 46
BYPASSING COMMON DETECTION METHODS
Jailbr break eak Det etec ection tion Co Code de
@class NSString; @interface DeviceSecurity: { BOOL _jbstatus; } @property(assign, nonatomic) BOOL jbstatus; +(BOOL)isJailbroken; @end
47 47
CLASS AND METHOD HOOKING
Th Theos eos + Lo + Logos gos + Mo + Mobi bile le Su Substrat bstrate
#import "substrate.h" %hook DeviceSecurity
%log; // Logos built-in logging return NO; // Return FALSE } %end
48 48
“TRUST ME” BYPASS
Ce Certifi tificat cate e Bypasse passes
#import "substrate.h" /* New function definition */ OSStatus new_SecTrustEvaluate(SecTrustRef trust, SecTrustResultType *result) { *result = kSecTrustResultProceed; return errSecSuccess; } %ctor { /* Hook the function */ MSHookFunction((void *)SecTrustEvaluate, (void *)new_SecTrustEvaluate, (void **)&original_SecTrustEvaluate); }
CY CYCR CRIPT PT
RUNT NTIM IME MODI DIFICATION ICATION
50 50
language extensions
is merged into the REPL
apps
RUNTIM TIME MODI DIFICATION ICATION TECHNIQUE HNIQUES
Cy Cycr cript pt is s Black ck Magic gic
51 51
ATTACHING TO A PROCESS
Cy Cycr cript pt Basics sics
iphone:~root# cycript –p AlienBlue cy# UIApp @"<UIApplication: 0x8ba2c0>" cy# UIApp.keyWindow.delegate @"<CustomNavigationController: 0x836900>" cy# ui(UIApp.keyWindow, "Foobar") <UILabel: 0x82f0d0; frame = (132 12; 55 21); text = 'Foobar'; clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x82f190>>
52 52
ATTACHING TO A PROCESS
Cy Cycr cript pt Basics sics
cy# var label = new Instance(0x82f0d0) @"<UILabel: 0x82f0d0; frame = (132 12; 55 21); text = 'Reddits'; clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x82f190>>” cy# label.text @"Foobar" cy# label.text = @"Barfoo" @"Barfoo"
DEMONST MONSTRATION RATION
CYCRIPT RIPT IN ACTIO ION
ISP SPY
WELCO LCOME ME TO THE FUTURE RE
56 56
Under Activ tive Develo lopme pment nt
tracking
bypasses
pinning bypasses
vulnerable function calls
YOUR ONE-STOP-SHO HOP P FOR IOS HACKIN ING
iSp Spy Ass ssess essmen ent t Fr Framework mework
DEMONST MONSTRATION RATION
ISPY IN ACTIO ION
58 58
GITHUB REPOS
iSp Spy
https://github.com/BishopFox
CO COUNTER NTER- MEASURES SURES
PROTEC TECTIN TING IOS APPL PLICATIONS ICATIONS
60 60
1. Security code
1. Assembly and/or C 2. Inline functions 3. Objective-C obfuscation
2. Certificate pinning
1. Whitelist root authorities
3. Change release
a) http://appminder.nesolabs.de/
ON DISK K & IN MEMORY RY
Defense efense Aga gains inst t th the e Dark rk Arts ts
61 61
FREE ‘N EASY OBFUSCATION
AppMind Minder er
ANDROID DROID APP P SE SECU CURITY RITY
JAVA VA JAVA VA JAVA A JAVA VA JAVA VA JAVA
63 63
WHAT T YOU NEED TO START ART
And ndroid
erequisites
64 64
GOOGLE LE PLAY AY STORE RE
And ndroid
ication
ckages
65 65
GETT TTIN ING G SOURCE CE CODE DE
Dec ecompili
ng Dalvi lvik Bytecode tecode
66 66
TWO STEP DECO COMP MPIL ILATI ATION
Dex ex2jar 2jar + + Procyon cyon
$ dex2jar Foobar.apk dex2jar foobar.apk -> Foobar-dex2jar.jar $ procyon –jar Foobar-dex2jar.jar –o src/ Decompiling com/foobar/Parser... Decompiling com/foobar/XMLWriter...
67 67
SOURCE RCE SORTA TA
Dec ecompiled
ndroid
Code de
DYNAMIC NAMIC ANALYS ALYSIS IS
ON ANDRO DROID ID
69 69
APPL PLICATION ICATION INSTANTIAT TANTIATION ION
Th The e And ndroi roid d Zy Zygot gote
70 70
ANDR DROID ID FUNCTION CTION HOOKIN ING
Cy Cydi dia Su Subs bstra tration tion
Method to hook Class to hook
71 71
ANDR DROID ID FUNCTION CTION HOOKIN ING
Cy Cydi dia Su Subs bstra tration tion
72 72
ANDR DROID ID FUNCTION CTION HOOKIN ING
Cy Cydi dia Su Subs bstra tration tion
73 73
ANDR DROID ID FUNCTION CTION HOOKIN ING
Cy Cydi dia Su Subs bstra tration tion
74 74
ANDR DROID ID FUNCTION CTION HOOKIN ING
Cy Cydi dia Su Subs bstra tration tion
75 75
ANDR DROID ID FUNCTION CTION HOOKIN ING
Cy Cydi dia Su Subs bstra tration tion
76 76
ANDR DROID ID FUNCTION CTION HOOKIN ING
Cy Cydi dia Su Subs bstra tration tion
77 77
RESUL ULTS
And ndroid
gCat
Filter by tag
CO COUNTER NTER- MEASURES SURES
PROTEC TECTIN TING ANDRO DROID ID APPL PLICATIONS ICATIONS
79 79
possible
DREAM AMIN ING G OF ELECT CTRIC RIC SHEEP
And ndroid
ication
Secu curity rity
CO CONCL CLUSION SIONS S
MOBIL ILE APPL PLICAT CATION N SECUR CURITY ITY
81 81
Device Management
lie
BYOD OD VERTICAL RTICAL CLOUD UD INTE TEGRAT RATION WITH H APT SYNE NERGY RGY
Manag nagemen ement t Not t Se Secur curity ity
82 82
that instead
you must…
depends on it
legacy code
reason for on-device security
IN A NUT SHELL …
Mobil bile e Se Secu curity rity
83 83
YOU CAN TRY, BUT IT IS NOT GOING TO WORK …
Client-side Enforcement
83
Go Good d Hunt nting ng!
bishopfox.com contact@bishopfox.com @bishopfox on the Twitters github.com/BishopFox We’re hiring!
Contact Us
nternet ernet Imag age: e: Lob
toR/Wikimed Wikimedia ia
age: Zach ch Vega ga/Wikim /Wikimedi dia
Hacke ker r Imag age: e: cha hanpipat/FreeD npipat/FreeDigi igitalP talPhotos. hotos.net net
mage ge: : Stuart rt Miles les/Fre FreeD eDigi igitalP talPhotos.n hotos.net et
nary Imag age: e: no noegr grana anado do/Flic Flickr kr Creative eative Com
mons
Image age Ci Citati tations