Ярослав Воронцов - security

49
(Non)security of mobile applications Yaroslav Vorontsov Senior Software Engineer/Tech Lead M.Sc, PhD [email protected]

Upload: dataart

Post on 12-Aug-2015

57 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Ярослав Воронцов - Security

(Non)security of mobile applications

Yaroslav Vorontsov

Senior Software Engineer/Tech Lead

M.Sc, PhD

[email protected]

Page 2: Ярослав Воронцов - Security

Agenda

Page 3: Ярослав Воронцов - Security

Agenda

u Генеральная информация (General words)

u Немного про безопасность iOS

u Четыре почти реальные ситуации

u Векторы атак

u Инструменты начинающего хакера/пентестера

u Атаки на приложения IRL

Page 4: Ярослав Воронцов - Security

Теоретический криптоминимум: AES

Page 5: Ярослав Воронцов - Security

AES-CBC

Page 6: Ярослав Воронцов - Security

SSL Handshake

Page 7: Ярослав Воронцов - Security
Page 8: Ярослав Воронцов - Security

Cipher suite

u Key exchange/agreement

u RSA, Diffie-Hellman, ECDH, SRP, PSK

u Authentication

u RSA, DSA, ECDSA

u Bulk ciphers

u RC4, Triple DES,AES, IDEA, DES, or Camellia.

u Message authentication for

u TLS, a Hash-based Message Authentication Code usingMD5 or one of the SHA hash functions is used.

u For SSL, SHA, MD5, MD4, and MD2 are used.

Page 9: Ярослав Воронцов - Security

Модель безопасностиu Device security

u Passcode/PIN lock and wipe policy

u Forced security policy setup via configuration profiles

u Data security

u Remote device wipe

u Built-in and hardware-accelerated FS encryption features

u Network security

u SSL certificate validation

u SSL/TLS secured connections and WPA2 wireless authentication

u Application security

u Sandboxing – chroot jail

u Custom data encryption by the applications

Page 10: Ярослав Воронцов - Security

Что же на самом деле?

u iOS сертифицирована (FIPS 140-2)

u Это всего лишь значит, что приложение удовлетворяет набору требований, не более

u В iOS есть функциональность по hardware-accelerated шифрованию

u Которая, конечно же, не работает, если у вас не установлен passcode

u iOS можно централизованно сконфигурировать с помощью Configuration profiles

u Но кому охота портить свой ЛИЧНЫЙ девайс какими-то глупыми настройками!

u В iOS встроены механизмы проверки сертификатов

u Но некоторые разработчики с дырявыми головами забывают убрать дебажный код, который принимает ЛЮБОЙ сертификат вообще.

u В iOS есть безопасное хранилище для паролей – Keychain

u Но и оно компрометируется, если вы забыли про passcode

Page 11: Ярослав Воронцов - Security

Trust nobody! (Траст ноубади!)

Page 12: Ярослав Воронцов - Security

Даже ему

Page 13: Ярослав Воронцов - Security

“Со мной такого не случится!”Четыре (почти) реальных сценария

Page 14: Ярослав Воронцов - Security

“Это может случиться и с вами”Серия 1: “Иде я нахожусь?”

u - «Идея?» - «Какая, Леонид Ильич?» - «Иде я нахожусь?»

u Вы проснулись не пойми где после бурной ночи. Рядом тигр и курица, а Вашего телефона нет –похоже, кто-то его взял (ну или вы его где-то забыли)

u Что самое плохое, из-за жуткой головной боли вы даже не в состоянии вспомнить свой Apple ID, чтобы выполнить удалённое стирание данных

Page 15: Ярослав Воронцов - Security

“Это может случиться и с вами”Серия 2: “Приспичило”

u - «Вась, я на минутку, пригляди за моим ифоном, он вон там на стойке» - «Окей, присмотрю»

u Через минуту вы всё ещё пудрите носик, Вася танцует с длинноногой блондинкой, а в это время…

u Ваш девайс меняют. На точно такой же, с таким же контентом и приложениями. Но есть невидимые нюансы – в таком телефоне полно дыр

Page 16: Ярослав Воронцов - Security

“Это может случиться и с вами”Серия 3: “Их разыскивает полиция”

u «Ой, а ты тоже любишь ДжастинаБибера? Неужели? А ты не слышала его новый альбом? Серьёзно? Дай-ка телефончик, я тебе его загуглю»

u Друг подруги друга открывает Safari и устанавливает «левый» сертификат как корневой с максимальным уровнем доверия

u Теперь он знает, в каком банке у вас счёт и сколько денег на нём

Page 17: Ярослав Воронцов - Security

“Это может случиться и с вами”Серия 4: “Котики Вконтактике”

u После долгого стояния в очереди в «Макдак» вы садитесь попить кофе, почитать ленту новостей и полюбоваться котиками

u «Открытый Wi-Fi как-то подозрительно хорошо ловит на этом месте, вчера такого не было?»

u «А этот парень с немытыми длинными волосами, какого он так смотрит на меня, что-то печатает и смеётся?»

Page 18: Ярослав Воронцов - Security

Что это было? – You’ve been PWNED

Page 19: Ярослав Воронцов - Security

Jailbreak и его последствия

u Самый страшный вирус в UNIXсистеме – прокладка между стулом и экраном

u После jailbreak-а открыт доступ к следующему:

u Direct data copying

u Remote debugging

u Attaching to processes’ memory

u Full UNIX toolchain

u Runtime manupulations

Page 20: Ярослав Воронцов - Security

Побег из песочницы

Page 21: Ярослав Воронцов - Security

Атака «человек посередине»(Man-in-the-middle, MITM)

Page 22: Ярослав Воронцов - Security

Атака типа «злой близнец»(Evil Twin)

u “Evil twin” attack – точка доступа WiFi маскируется другой точкой доступа, которую создаёт злоумышленник на своём компьютере

u Выпуск и рассылка конфигурационного профиля –самоподписанный профиль с настройками прокси/сертификатов рассылается по почте от якобы имени Apple

u БУДЬТЕ БДИТЕЛЬНЫ!

Page 23: Ярослав Воронцов - Security

Атака типа «злой близнец»(Evil Twin)

Page 24: Ярослав Воронцов - Security

Методы социальной инженерии(Social Engineering)

u Тоже методы

u Особенно это касается активных пользователей соцсетей

u И тех, кто ставит один пароль на много разных аккаунтов в различных сервисах

u Основаны на склонности человеческой натуры доверять «своим»

u Основная задача – стать «своим», остальное – дело техники

Page 25: Ярослав Воронцов - Security

Другие источники уязвимостей

u Camera – геотеги

u Фоновый режим работы – система делает скриншот

u Pasteboard – глобальный кэш

u Auto-completion/auto-correction –также глобальный кэш

u AES encryption – не передан IV (вектор инициализации)

u Хранение ключа шифрования только на девайсе/сервере

u …

Page 26: Ярослав Воронцов - Security

ToolsСредства для анализа и тестирования на уязвимости

Page 27: Ярослав Воронцов - Security

Proxy

u Burp Suite (Cross-platform)

u Fiddler (Windows, C#, freeware)

u Proxy.app (Mac OS X, native)

u Charles (Cross-platform, Java)

u mitmproxy (Cross-platform, CLI)

u sslstrip (Cross-platform, CLI)

u Custom-written TCP/UDP proxy (for non-HTTP protocols)

Page 28: Ярослав Воронцов - Security

Proxy.app – Example of captured packets

Page 29: Ярослав Воронцов - Security

Сниффер

Page 30: Ярослав Воронцов - Security

Сниффер, он же анализатор трафика

u Наиболее известные

u aircrack-ng

u tcpdump

u dsniff

u Wireshark

u Cocoa Packet Analyzer

u Используется «белыми»

u Анализ проблем сети

u Поиск «бутылочных горлышек»

u Мониторинг сети

u Используется «чёрными»

u Поиск открытых паролей

u Перехват личной информации

u Анализ сетевого трафика

Page 31: Ярослав Воронцов - Security

Wireshark, проводная и беспроводная акула

Page 32: Ярослав Воронцов - Security

Принцип работы

Page 33: Ярослав Воронцов - Security

Command line tools, или консоли бояться – в лес не ходить

u Ps – process monitor

u Lsof – list opened files

u Tcpdump - sniffer

u Ifconfig – network interface configuration tool

u Route – change you default gateway and redirect the traffic

u Sysctl – read and modify system/kernel parameters

u Nmap – network scanning

u Ssh – connection to the device

u Netstat – opened ports

u Otool – information about executables/shared&dynamiclibraries/object files

u LLDB/gdb – no comments

u Nm – display symbol table

u Cycript – runtime manipulations

u OpenSSL to generate self-signed certificates…

Page 34: Ярослав Воронцов - Security

Основные требования при тестировании на уязвимости

u Black-box

u Девайс должен быть рутованный(c jailbreak’ом)

u Пароль root – alpine

u Одна WiFi-сеть, один broadcast-домен

u White-box

u Полный доступ к исходному коду для его анализа и аудита

u Работа с симулятором (ввиду доступности FS, хорошо эмулирует «взломанный» iPhone)

Page 35: Ярослав Воронцов - Security

IRL, или примеры из практикиС доказательствами

Page 36: Ярослав Воронцов - Security

Offline-атаки

u Offline attacks

u Breaking Keychain

u Stealing unencrypted data

u Looking for browser caches

u If your device’s secured with a passcode…

u Every kind of a file protection level has its own key. These keys are used to encrypt actual file system content

u This encryption is transparent; keys are stored ON THE DEVICE!

u The passcode is the only guard of your data

u DeviceEncryptionKeys.plist

Page 37: Ярослав Воронцов - Security

Offline-атака: первый улов, файл конфигурации

Page 38: Ярослав Воронцов - Security

Offline-атака: о, переписка! Это уже интереснее…

Page 39: Ярослав Воронцов - Security

Offline-атака: открываем двери ударом ноги с разворота

u Keychain - SQLite база данных с шифрованными колонками

u Используется для паролей, ключей, сертификатов…

u Утилита https://github.com/ptoomey3/Keychain-Dumper

u Compile using latest SDK and self-signed certificate

u Copy to device via SSH

u Run and enjoy

Page 40: Ярослав Воронцов - Security

Подготовка к runtime-атакеu Otool – лучший друг пентестера

u Otool –L – linked libraries

u Otool –f – информация о файле (архитектура CPU, offsets…)

u Otool –l – метаданные

u Otool –arch – информация по выбранной архитектуре CPU в файле

u Утилита class-dump-z

u https://code.google.com/p/networkpx/wiki/class_dump_z

u Восстанавливает заголовочные файлы на основе метаданных

u Nm – просмотр таблиц символов

u Просмотр вызываемых библиотечных методов/функций

u Чаще всего используется для поиска вызовов NSLog

u Otool –arch –l | grep crypt – проверка на то, зашифрован ли файл

Page 41: Ярослав Воронцов - Security

Runtime-атака: cycriptu http://www.cycript.org - JavaScript-based approach

u Ставится дебиановским DPKG

u Поддерживает и C, и Objective-C

u Ps aux | grep <appname> - поиск процесса по pid

u Cycript –p <pid> - смотрим, что можно найти

u Var app = [UIApplication sharedApplication]

u App.delegate – адрес app делегата в памяти

u Var delegate = new Instance (0x2f34…) – доступ к «сырой» памяти

u [delegate dismissPinPadScreenAnimated] – вызов метода

u Ivar values – ls(delegate) – дамп класса

u Method swizzling – modifying isa.messages[‘…’] in runtime

u Breaking device policy

Page 42: Ярослав Воронцов - Security

Online-атаки

u Man-in-the-middle

u Stolen credentials

u MITM mechanism

u Ordinary communication in a plain network (top picture)

u An attacker makes both sides think that they are communicating with each other. However, it’s wrong (bottom picture)

u The most common attack initiation – two-way ARP spoofing + IP forwarding

u If hosts are located in different networks, attack is initiated by 2-way ARP spoofing between host and router

Page 43: Ярослав Воронцов - Security

Перехваченный трафик

Page 44: Ярослав Воронцов - Security

Итоги взломаu Найдены незашифрованные чаты

u Найдены пароли и явки от SSH/web/MySQL

u Связка otool+class-dump-z помогла найти библиотеку liblinphone

u Приложение могло соединяться с Linphone iOS по незашифрованному соединению

u У приложения своя цепочка доверенных сертификатовu Добавление самоподписанного

сертификата позволило продолжить непотребства

u Используется шифрование SIP трафикаu Взломано с помощью самописного

TCP proxy

Page 45: Ярослав Воронцов - Security

Другие примеры

u Mobile banking application

u Цель: “confirm that application has no data cached on the disk”

u Результаты:

u Передача username/password открытым текстом

u Source code audit: neither username nor password are stored in memory

u A number of web service vulnerabilities

u Secure documents application

u Purpose: “try to steal any personal data and/or PDF documents”

u Results

u Almost no vulnerabilities in the application (except Pasteboard which was not disabled)

u Web part: username/password transferred in plaintext

Page 46: Ярослав Воронцов - Security

Рекомендации по защите

u Разработчики

u ТОЛЬКО HTTPS

u Откажитесь от принципа «неуловимого Джо» при разработке приложений

u Выбирая между SSL v2/v3 и TLS 1.0/1.1, вы обречены, ну или очень рискуете (weak MD5/no handshake protection/POODLE/BEAST/etc)

u Используйте только проверенные криптобиблиотеки

u Пользователи

u Поставьте, наконец, на свой телефон passcode!

u Установите auto-lock таймаут

u Включите стирание контента после 10 неверных попыток пасскода

u Регулярно обновляйте iOS – в обновлениях действительно фиксят security issues

u Выключите всё то, что может быть доступно без passcode

Page 47: Ярослав Воронцов - Security

Further reading

u In-depth introduction to SSL (https://timnash.co.uk/guessing-ssl-questions/)

u Обзор способов и протоколов аутентификации в веб-приложениях(http://habrahabr.ru/company/dataart/blog/262817/)

u McAfee whitepapers

u K.Shah “Penetration testing for iPhone/iPad applications” (McAfee)

u K.Shah “Top 10 iPhone security tips” (McAfee)

u www.slideshare.net - презентации по Web/Mobile App Security, тысячи их

u Хаб «Информационная безопасность», http://habr.ru

u Coursera – Cryptography I and Cryptography II by Dan Boneh

Page 48: Ярослав Воронцов - Security

Further reading

u Jonathan Zdziarski “Hacking and Securing iOS Applications”

u C.Whiller “iOS Hacker’s handbook”

u J.Ericksson “Hacking: the art of exploitation” (мужик с топором)

u WWDC 2011 Session 202 – Security Overview

u WWDC 2011 Session 208 – Securing iOS Applications

u WWDC 2012 Session 704 – Security Framework

u WWDC 2012 Session 714 – Protecting the User’s Data

Page 49: Ярослав Воронцов - Security

Thnx!

Yaroslav Vorontsov

Senior Software Engineer/Tech Lead

M.Sc, PhD

[email protected]