Nov 26, 2013 - Mobile Fail ::: Cracking open âsecureâ Android Containers. @ChrisJohnRiley > ... Chris John Riley
@ChrisJohnRiley > whoami IT Security Analyst / Security Consultant Raiffeisen Informatik GmbH R-IT CERT Team Regular conference speaker DEF CON | Bsides | Hashdays | SecZone… blog http://blog.c22.cc Abject Failure (See Life for reference)
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 2
THE WISEST MAN, IS HE WHO KNOWS, THAT HE KNOWS NOTHING SOCRATES: APOLOGY, 21D Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 3
Why Scenario How Closer Look Making it easy Review Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 5
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 6
WHY? Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 7
too much information 01100100 01100101 01110010 01110000 01100100 01100101 01110010 01110000 01111001 01100100 01100101 01110010 01110000 01101001 01100101 01110011 01110100
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 9
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 12
Containers Multiple uses Pa$$w0rd >
0
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 87
That looks interesting! Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 88
(THEORY) Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 89
if reprompt_tries < 5: prompt_for_pin() else drop_the_DBass() end
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 90
Theory • reprompt_tries as iterator • increases till it reaches 5 • Sounds reasonable
• edit the XML and restore it • Let's set “reprompt_tries” to -9999 then ;)
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 91
Proposed Attack • Backup app >0 0
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 104
PROFIT! Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 105
Easier Attack • Backup app data • Edit XML • remove PIN
• Repackage • Restore • WIN!
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 106
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 107
for points... Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 108
Persistence Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 109
Persistence • Backup LastPass from device A • Edit backup to remove PIN • Rebuild backup
• Restore backup to device B • Close & restart to re-sync changes from device A • Profit?
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 110
...but I RESET my password! Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 111
++ PROFIT Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 112
... Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 113
GOOD for enterprise
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 114
GOOD • Enterprise email solution • Email | Contacts | intranet Browser | … • Secured with a PIN or password • enterprise policy • Wipes data/device after 10 false logons
https://www.good.com Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 115
Adv. security features • Double encryption • SSL Tunnel + Encrypted contents
• Full MDM solution • Password Policies •…
• r00t detection • emulator detection • advanced detection https://www.good.com Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 116
Lost device (BYOD) • Can an attacker prevent secure wipe • Can an attacker access cached data
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 117
PROBLEM
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 118
unlike LastPass Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 119
preferences are
encrypted Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 120
PROBLEM
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 121
auto-wipe …after 10 false logons
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 122
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 123
Disable PIN Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 124
auto-wipe counter
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 125
brute-force Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 126
but… Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 127
AndroidManifest.xml
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 128
THEORY
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 130
Theory • Auto-wipe counter • Stored IN app data somewhere
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 131
THEORY
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 132
adb restore Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 133
over write
auto-wipe counter Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 134
#facepalm
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 135
brute-force Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 136
Naïve Attack • Backup app data • until good.unlock? • Try 9 PINS • Restore app data
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 137
PROBLEM
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 138
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 139
Naïve Attack timing • 4 digit PIN • est. 4.5 hours*
• 6 digit PIN • est. 18.5 days*
• 8 digit PIN • est. 5 years*
* 18.75 ppm ~ 50% keyspace Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 140
Naïve Attack timing • 4 lower alphanum • est. 31 days*
• 6 lower alphanum • est. 3 years*
• 8 lower alphanum • est. 110 years*
* 18.75 ppm ~ 50% keyspace Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 141
Naïve Attack timing • 4 mixed alphanum • est. 1 year*
• 6 mixed alphanum • est. 46.5 years*
• 8 mixed alphanum • est. 2880 years*
* 18.75 ppm ~ 50% keyspace Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 142
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 143
CONTAINER
Device Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 144
CONTAINER
Device Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 145
CONTAINER
Device Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 146
#facepalm
#facepalm Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 147
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 148
Adv. Attack • Automate PIN + restore • adb shell input text • adb shell input keyevent • adb shell input tap
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 151
Minimize keyspace • Password Rules • No sequenced numbers (e.g. 4567) • No duplicate numbers (e.g. 1111)
• Result • Reduced keyspace
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 152
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 153
PROFIT! Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 154
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 155
Making it easy Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 156
methodology • Common methodology • Backup (adb) • Extract • Examine ← here be dragons • Edit ← bypass all the things • Repack • Restore (adb)
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 157
remember this process? Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 158
0 - adb backup com.lastpass.lpandroid -f lpass.ab 1 - dd if=lpass.ab bs=24 skip=1 | openssl zlib -d > lpass.tar
2 - tar -tf lpass.tar > lpass.list 3 - tar -xvf lpass.tar 4 - edit apps/com.lastpass.lpandroid/sp/LPandroid.xml
5 - star -c -v -f lpass_new.tar -no-dirslash list=lpass.list apps/ 6 - dd if=lpass.ab bs=24 count=1 of=lpass_new.ab 7 - openssl zlib -in lpass_new.tar >> lpass_new.ab 8 - adb restore lpass_new.ab
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 159
Say that 10 times fast! Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 160
automation Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 162
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 163
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 164
ab_unpacker.py
https://github.com/ChrisJohnRiley/Random_Code Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 165
ab_packer.py
https://github.com/ChrisJohnRiley/Random_Code Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 166
Makes 0wning things Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 167
o
200 /o quicker o 1000 /o funner Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 168
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 169
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 172
REVIEW Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 173
“secure”containers
!= SECURE containers Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 174
Physical access Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 175
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 177
IT Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 178
Developers Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 179
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 180
android.allowBackup
http://developer.android.com/guide/topics/data/backu Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 181
Some devs GET it! Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 182
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 183
pref files Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 184
Securing Apps • Preference files are NOT secret • Encrypt preference data • ONLY store encrypted passwords • No XOR / base64 please • Don’t TRUST the config • HMAC | Sign | Encrypt
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 185
android backup Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 186
Securing Apps • Disallow Android Backup • if you don’t absolutely need it!
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 187
extra security Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 188
Extra Security • USB Debugging • Disable app when activated
• Root makes these hack easier still • edit/read preference files on device itself • ROOT detection is too basic • easy to fool
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 189
end
users Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 190
Users • Encrypt your device • Encrypts ADB backups • Need to enter same passcode on backup screen
• Disable USB Debugging • protects against adb pull/push attacks
• Don’t loose your phone ;)
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 191
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 192
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 193
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 194
Question time
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 195
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 196
Thank you for your attention! Vielen Dank für Ihre Aufmerksamkeit!
Raiffeisen Informatik GmbH Lilienbrunngasse 7-9 A-1020 Wien
T +43 1/99 3 99 - 0 F +43 1/99 3 99 - 1100 E
[email protected] www.raiffeiseninformatik.at
Mobile Fail ::: Cracking open “secure” Android Containers
Chris John Riley | 26.11.2013 | 197