Android Backup (.ab) - DeepSec

4 downloads 212 Views 10MB Size Report
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