Безопасность мобильных приложений:
специфика нападения и защиты
Чемёркин Юрий
ЗАО «Перспективный мониторинг»
Основы доверия
• Безопасная платформа
• Безопасный софт
• Безопасность данных
• Безопасные инструменты
управления платформой
2
Анализ кросс-платформенного ПО
3
Проблемы безопасности обработки данных
• Защита кода
• Защита передаваемых данных
• Защита хранимых локально данных
• Криптографическая защита
4
Dropbox
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<data>
YnBsaXN0MDDUAQIDBAUIYWJUJHRvcFgkb2JqZWN0c1gk
dmVyc2lvblkkYXJjaGl2ZXLRBgdUcm9v
dIABrQkKNztCRUlPUlVYW1xVJG51bGzfEBYLDA0ODxARE
hMUFRYXGBkaGxwdHh8gISIjJCUkJCgp………
5
App in the Air
<array>
<string>user_education_history</string>
<string>basic_info</string>
<string>user_work_history</string>
<string>installed</string>
<string>user_location</string>
<string>user_friends</string>
<string>user_about_me</string>
<string>public_profile</string>
<string>email</string>
<string>user_birthday</string>
</array> <key>aita_achievement_aircrafts5</key><true/>
<key>aita_achievement_airports5</key><true/>
<key>aita_achievement_country_russia</key><true/>
<key>aita_achievement_country_usa</key><true/>
<key>aita_achievement_earlybird</key><true/>
<key>aita_achievement_newbie</key><true/>
<key>aita_achievement_premium</key><true/>
<key>facebook_email</key>
<string>yury.chemerkin@gmail.com</string>
<key>facebook_nick</key>
<string>Yury Chemerkin</string>
<key>facebook_username</key>
<string>100001827345335</string>
<key>first_session</key>
<string>Researcher at Перспективный
Мониторинг</string>
6
App in the Air
<key>com.crashlytics.insights.lastmaintenancedate</key>
<date>2014-09-20T08:48:45Z</date>
<key>com.crashlytics.insights.lastsessionidentifier</key>
<string>541D3EEF038E-0001-01BA-
666463653832</string>
<key>com.crashlytics.insights.lastsessionmetadata</key>
<data>
eyJqYWlsYnJva2VuIjpmYWxzZSwidmVuZG9yX2lkIjoiNjM2Q0RENTAtMjI4Ri
00QTlCLTk1MTYtQjY0Qzc1MEZFQzYwIiwiaW5zdGFsbF9pZCI6IjMyNjFGNTF
BLURDN0YtNEM3MS1CMTRBLUQzOTE4ODcxMUFBOSIsIm9zX21pbiI6MCw
icGxhdGZvcm1fY29kZSI6MSwiYnVuZGxlX3ZlcnNpb24iOiI0LjAuMS41Iiwic3R
hcnRlZF9hdCI6MTQxMTIwMjc5OSwibG9jYWxlIjoiZW5fVVMiLCJjb21waWxl
ciI6InVua25vd24iLCJidW5kbGVfaWQiOiJjb20uYWl0YS5hcHAiLCJtYWNoaW
5lIjoiTjQ5QVAiLCJvc192ZXJzaW9uIjoiOC4wIiwibW9kZWwiOiJpUGhvbmU1L
DQiLCJvc19idWlsZCI6IjEyQTM2NSIsIm9zX21heCI6MCwiYnVuZGxlX3Nob3J
0X3ZlcnNpb24iOiI0LjAuMSIsImFwaV9rZXkiOiJmZGM3YzFhNDhiNWJmOGI3
ZDcxNjg4Y2ZkOTg2ZGQ3ZTg4YjJlMTBjIiwiY29yZXMiOjIsImdlbmVyYXRvciI6I
kNyYXNobHl0aWNzIGlPUyBTREtcLzIuMi40Iiwic2Vzc2lvbl9pZCI6IjU0MUQz
RUVGMDM4RS0wMDAxLTAxQkEtNjY2NDYzNjUzODMyIiwicGxhdGZvcm0iO
iJpT1MiLCJhcmMiOmZhbHNlLCJjb25maWciOiJ1bmtub3duIiwiZGVidWciO
mZhbHNlfQ==
</data>
{"jailbroken":false,"vendor_id":"636CDD5
0-228F-4A9B-9516-
B64C750FEC60","install_id":"3261F51A-
DC7F-4C71-B14A-
D39188711AA9","os_min":0,"platform_c
ode":1,"bundle_version":"4.0.1.5","starte
d_at":1411202799,"locale":"en_US","co
mpiler":"unknown","bundle_id":"com.ait
a.app","machine":"N49AP","os_version":
"8.0","model":"iPhone5,4","os_build":"12
A365","os_max":0,"bundle_short_version
":"4.0.1","api_key":"fdc7c1a48b5bf8b7d7
1688cfd986dd7e88b2e10c","cores":2,"ge
nerator":"Crashlytics iOS
SDK/2.2.4","session_id":"541D3EEF038E
-0001-01BA-
666463653832","platform":"iOS","arc":fal
se,"config":"unknown","debug":false}
7
Особенности платформо-зависимого ПО
• Безопасность хранимых данных в keychain
• Безопасность данных приложений
• Доверие к системным механизмам данных
• Доверие к PC/Mac-устройству, где установлен iTunes
8
Snapshots in iOS
9
Особенности платформо-зависимого ПО
• Системное защищённое хранилище? N/A
• Проблема хранения данных
• Недоверенная среда
• Доступ к данным приложений с PC
10
Aeroexpress
/data/data/ru.lynx.aero/shared_prefs/activities.main.MainActivity.xml
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="phone">9xxxxxxxx2</string>
<long name="cardExpiryDate" value="1472723015507" />
<long name="scheduleChangesDate" value="1411638096257" />
<long name="scheduleLastUpdateDate" value="1411638096692" />
<string name="password">XXXXXXX</string>
<string name="cardHolder">Yury Chemerkin</string>
<string name="email">xxxxxxxxxxxxxx@gmail.com</string>
<string name="userId">7-7011656</string>
<string name="layout">phone</string>
<string name="login">xxxxxxxxxxxxxx</string>
<string name="language">ru</string>
<string
name="deviceId">bEBDPM1dCdDAPA9……K7iF9_lnAFKLgEE7VHdDCXbyww</string>
<string name="cardNumber">1234567890123456</string>
</map>
11
Особенности платформо-зависимого ПО
• WinRT-приложения популярны больше,
чем сама платформа
• jailbreak/root ?
• Windows 8 Pro + WinRT
для исследования кода
• Windows 8 Pro и доступ к данным
12
Viber (WinRT) / Viber (PC)
13
Проблемы криптомеханизмов мобильного ПО
• Пароли
• Защита vs. Шифрование
• Криптография
• Хеширование
• Артефакты
• Секретная часть ключа
14
Проблемы сетевого взаимодействия
• Отсутствие защиты
• MITM
• Self-signed сертификаты
• Неправильное управление ключами
• Известные технологии защиты данных
15
MITM
16
Sberbank
Регистрация приложения (запрос)
operation=register&appVersion=5.1.2%20%28142%29&logi
n=4xxx1xxxx5&devID=xxxxxxxx-2xxF-xxxxx-xxxxx-
xxxxxxxx6&deviceName=iPhone5%2C4&version=7.00&app
Type=iPhone
Регистрация приложения (ответ)
<response>
<loginCompleted>false</loginCompleted>
<confirmRegistrationStage>
<mGUID>xxxxxxx758xxxxxxx53b4exxxxx</mGUID>
</confirmRegistrationStage>
<confirmInfo>
<type>smsp</type> <smsp>
<lifeTime>597</lifeTime>
<attemptsRemain>3</attemptsRemain>
</smsp>
</confirmInfo>
<registrationParameters>
<minimumPINLength>5</minimumPINLength>
</registrationParameters>
</response>
Проверка пароля из смс (запрос)
appType=iPhone&operation=confirm&smsPassw
ord=60206&mGUID=
xxxxxxx758xxxxxxx53b4exxxxx&version=7.00
Проверка пароля из смс (ответ)
<response>
<status>
<code>0</code>
</status>
<loginCompleted>false</loginCompleted>
</response>
Установка пин-кода (запрос)
operation=createPIN&appVersion=5.1.2%20%28
142%29&password=47098&isLightScheme=false
&devID=xxxxxxxx-2xxF-xxxxx-xxxxx-
xxxxxxxx6&deviceName=iPhone5%2C4&version=
7.00&appType=iPhone&mGUID=
xxxxxxx758xxxxxxx53b4exxxxx
Проверка пин-кода
operation=check&password=44444
17
Yandex.Disk
Регистрация приложения (запрос)
client_id=6cxxxxxxxxxxxxxxxxxxxxxx16&client_secret=8xxxx
xxxxxxxxxxx0&grant_type=password&password=R%40mf0r
D%23&username=xxxxxxxxxxxxxxxx%40yandex.ru
Регистрация приложения (ответ)
{"token_type": "bearer", "access_token":
"5xxxxxxxxxxxxxxxxxxxae", "expires_in": 31536000, "uid":
1xxxxxxxxxxxx24}
Авторизация (запрос)
access_token=5xxxxxxxxxxxxxxxxxxxxxxe&client_
id=f6xxxxxxxxxxxxxxxxxxxxxxxxx65&client_secret
=2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxe&g
rant_type=x-token
Проверка пароля из смс (ответ)
{"token_type": "bearer", "access_token":
"41xxxxxxxxxxxxxxxxb", "expires_in": 31536000,
"uid": 1xxxxxxxxxxx24}
18
• Поставщик платформы
– Статический анализ?
– Оперативность работы по отзывам и жалобам?
– Контроль источника APK, IPA, etc?
• Автор приложения
– Безопасная разработка?
– Безопасность аккаунта и инфраструктуры
разработки?
– Воровство/взлом приложения?
• Внешний арбитр
– Необходимость верификации ПО
– Актуализация угроз данных
– Итеративный процесс работ
Рекомендации
19
Спасибо за внимание!
Вопросы?
20

InfoSecurityRussia-_2014_Conferences.pdf

  • 1.
    Безопасность мобильных приложений: спецификанападения и защиты Чемёркин Юрий ЗАО «Перспективный мониторинг»
  • 2.
    Основы доверия • Безопаснаяплатформа • Безопасный софт • Безопасность данных • Безопасные инструменты управления платформой 2
  • 3.
  • 4.
    Проблемы безопасности обработкиданных • Защита кода • Защита передаваемых данных • Защита хранимых локально данных • Криптографическая защита 4
  • 5.
    Dropbox <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPEplist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <data> YnBsaXN0MDDUAQIDBAUIYWJUJHRvcFgkb2JqZWN0c1gk dmVyc2lvblkkYXJjaGl2ZXLRBgdUcm9v dIABrQkKNztCRUlPUlVYW1xVJG51bGzfEBYLDA0ODxARE hMUFRYXGBkaGxwdHh8gISIjJCUkJCgp……… 5
  • 6.
    App in theAir <array> <string>user_education_history</string> <string>basic_info</string> <string>user_work_history</string> <string>installed</string> <string>user_location</string> <string>user_friends</string> <string>user_about_me</string> <string>public_profile</string> <string>email</string> <string>user_birthday</string> </array> <key>aita_achievement_aircrafts5</key><true/> <key>aita_achievement_airports5</key><true/> <key>aita_achievement_country_russia</key><true/> <key>aita_achievement_country_usa</key><true/> <key>aita_achievement_earlybird</key><true/> <key>aita_achievement_newbie</key><true/> <key>aita_achievement_premium</key><true/> <key>facebook_email</key> <string>yury.chemerkin@gmail.com</string> <key>facebook_nick</key> <string>Yury Chemerkin</string> <key>facebook_username</key> <string>100001827345335</string> <key>first_session</key> <string>Researcher at Перспективный Мониторинг</string> 6
  • 7.
    App in theAir <key>com.crashlytics.insights.lastmaintenancedate</key> <date>2014-09-20T08:48:45Z</date> <key>com.crashlytics.insights.lastsessionidentifier</key> <string>541D3EEF038E-0001-01BA- 666463653832</string> <key>com.crashlytics.insights.lastsessionmetadata</key> <data> eyJqYWlsYnJva2VuIjpmYWxzZSwidmVuZG9yX2lkIjoiNjM2Q0RENTAtMjI4Ri 00QTlCLTk1MTYtQjY0Qzc1MEZFQzYwIiwiaW5zdGFsbF9pZCI6IjMyNjFGNTF BLURDN0YtNEM3MS1CMTRBLUQzOTE4ODcxMUFBOSIsIm9zX21pbiI6MCw icGxhdGZvcm1fY29kZSI6MSwiYnVuZGxlX3ZlcnNpb24iOiI0LjAuMS41Iiwic3R hcnRlZF9hdCI6MTQxMTIwMjc5OSwibG9jYWxlIjoiZW5fVVMiLCJjb21waWxl ciI6InVua25vd24iLCJidW5kbGVfaWQiOiJjb20uYWl0YS5hcHAiLCJtYWNoaW 5lIjoiTjQ5QVAiLCJvc192ZXJzaW9uIjoiOC4wIiwibW9kZWwiOiJpUGhvbmU1L DQiLCJvc19idWlsZCI6IjEyQTM2NSIsIm9zX21heCI6MCwiYnVuZGxlX3Nob3J 0X3ZlcnNpb24iOiI0LjAuMSIsImFwaV9rZXkiOiJmZGM3YzFhNDhiNWJmOGI3 ZDcxNjg4Y2ZkOTg2ZGQ3ZTg4YjJlMTBjIiwiY29yZXMiOjIsImdlbmVyYXRvciI6I kNyYXNobHl0aWNzIGlPUyBTREtcLzIuMi40Iiwic2Vzc2lvbl9pZCI6IjU0MUQz RUVGMDM4RS0wMDAxLTAxQkEtNjY2NDYzNjUzODMyIiwicGxhdGZvcm0iO iJpT1MiLCJhcmMiOmZhbHNlLCJjb25maWciOiJ1bmtub3duIiwiZGVidWciO mZhbHNlfQ== </data> {"jailbroken":false,"vendor_id":"636CDD5 0-228F-4A9B-9516- B64C750FEC60","install_id":"3261F51A- DC7F-4C71-B14A- D39188711AA9","os_min":0,"platform_c ode":1,"bundle_version":"4.0.1.5","starte d_at":1411202799,"locale":"en_US","co mpiler":"unknown","bundle_id":"com.ait a.app","machine":"N49AP","os_version": "8.0","model":"iPhone5,4","os_build":"12 A365","os_max":0,"bundle_short_version ":"4.0.1","api_key":"fdc7c1a48b5bf8b7d7 1688cfd986dd7e88b2e10c","cores":2,"ge nerator":"Crashlytics iOS SDK/2.2.4","session_id":"541D3EEF038E -0001-01BA- 666463653832","platform":"iOS","arc":fal se,"config":"unknown","debug":false} 7
  • 8.
    Особенности платформо-зависимого ПО •Безопасность хранимых данных в keychain • Безопасность данных приложений • Доверие к системным механизмам данных • Доверие к PC/Mac-устройству, где установлен iTunes 8
  • 9.
  • 10.
    Особенности платформо-зависимого ПО •Системное защищённое хранилище? N/A • Проблема хранения данных • Недоверенная среда • Доступ к данным приложений с PC 10
  • 11.
    Aeroexpress /data/data/ru.lynx.aero/shared_prefs/activities.main.MainActivity.xml <?xml version='1.0' encoding='utf-8'standalone='yes' ?> <map> <string name="phone">9xxxxxxxx2</string> <long name="cardExpiryDate" value="1472723015507" /> <long name="scheduleChangesDate" value="1411638096257" /> <long name="scheduleLastUpdateDate" value="1411638096692" /> <string name="password">XXXXXXX</string> <string name="cardHolder">Yury Chemerkin</string> <string name="email">xxxxxxxxxxxxxx@gmail.com</string> <string name="userId">7-7011656</string> <string name="layout">phone</string> <string name="login">xxxxxxxxxxxxxx</string> <string name="language">ru</string> <string name="deviceId">bEBDPM1dCdDAPA9……K7iF9_lnAFKLgEE7VHdDCXbyww</string> <string name="cardNumber">1234567890123456</string> </map> 11
  • 12.
    Особенности платформо-зависимого ПО •WinRT-приложения популярны больше, чем сама платформа • jailbreak/root ? • Windows 8 Pro + WinRT для исследования кода • Windows 8 Pro и доступ к данным 12
  • 13.
    Viber (WinRT) /Viber (PC) 13
  • 14.
    Проблемы криптомеханизмов мобильногоПО • Пароли • Защита vs. Шифрование • Криптография • Хеширование • Артефакты • Секретная часть ключа 14
  • 15.
    Проблемы сетевого взаимодействия •Отсутствие защиты • MITM • Self-signed сертификаты • Неправильное управление ключами • Известные технологии защиты данных 15
  • 16.
  • 17.
    Sberbank Регистрация приложения (запрос) operation=register&appVersion=5.1.2%20%28142%29&logi n=4xxx1xxxx5&devID=xxxxxxxx-2xxF-xxxxx-xxxxx- xxxxxxxx6&deviceName=iPhone5%2C4&version=7.00&app Type=iPhone Регистрацияприложения (ответ) <response> <loginCompleted>false</loginCompleted> <confirmRegistrationStage> <mGUID>xxxxxxx758xxxxxxx53b4exxxxx</mGUID> </confirmRegistrationStage> <confirmInfo> <type>smsp</type> <smsp> <lifeTime>597</lifeTime> <attemptsRemain>3</attemptsRemain> </smsp> </confirmInfo> <registrationParameters> <minimumPINLength>5</minimumPINLength> </registrationParameters> </response> Проверка пароля из смс (запрос) appType=iPhone&operation=confirm&smsPassw ord=60206&mGUID= xxxxxxx758xxxxxxx53b4exxxxx&version=7.00 Проверка пароля из смс (ответ) <response> <status> <code>0</code> </status> <loginCompleted>false</loginCompleted> </response> Установка пин-кода (запрос) operation=createPIN&appVersion=5.1.2%20%28 142%29&password=47098&isLightScheme=false &devID=xxxxxxxx-2xxF-xxxxx-xxxxx- xxxxxxxx6&deviceName=iPhone5%2C4&version= 7.00&appType=iPhone&mGUID= xxxxxxx758xxxxxxx53b4exxxxx Проверка пин-кода operation=check&password=44444 17
  • 18.
    Yandex.Disk Регистрация приложения (запрос) client_id=6cxxxxxxxxxxxxxxxxxxxxxx16&client_secret=8xxxx xxxxxxxxxxx0&grant_type=password&password=R%40mf0r D%23&username=xxxxxxxxxxxxxxxx%40yandex.ru Регистрацияприложения (ответ) {"token_type": "bearer", "access_token": "5xxxxxxxxxxxxxxxxxxxae", "expires_in": 31536000, "uid": 1xxxxxxxxxxxx24} Авторизация (запрос) access_token=5xxxxxxxxxxxxxxxxxxxxxxe&client_ id=f6xxxxxxxxxxxxxxxxxxxxxxxxx65&client_secret =2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxe&g rant_type=x-token Проверка пароля из смс (ответ) {"token_type": "bearer", "access_token": "41xxxxxxxxxxxxxxxxb", "expires_in": 31536000, "uid": 1xxxxxxxxxxx24} 18
  • 19.
    • Поставщик платформы –Статический анализ? – Оперативность работы по отзывам и жалобам? – Контроль источника APK, IPA, etc? • Автор приложения – Безопасная разработка? – Безопасность аккаунта и инфраструктуры разработки? – Воровство/взлом приложения? • Внешний арбитр – Необходимость верификации ПО – Актуализация угроз данных – Итеративный процесс работ Рекомендации 19
  • 20.