Ярослав Воронцов - Security
-
Upload
dataart -
Category
Technology
-
view
57 -
download
2
Transcript of Ярослав Воронцов - Security
(Non)security of mobile applications
Yaroslav Vorontsov
Senior Software Engineer/Tech Lead
M.Sc, PhD
Agenda
Agenda
u Генеральная информация (General words)
u Немного про безопасность iOS
u Четыре почти реальные ситуации
u Векторы атак
u Инструменты начинающего хакера/пентестера
u Атаки на приложения IRL
Теоретический криптоминимум: AES
AES-CBC
SSL Handshake
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.
Модель безопасности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
Что же на самом деле?
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
Trust nobody! (Траст ноубади!)
Даже ему
“Со мной такого не случится!”Четыре (почти) реальных сценария
“Это может случиться и с вами”Серия 1: “Иде я нахожусь?”
u - «Идея?» - «Какая, Леонид Ильич?» - «Иде я нахожусь?»
u Вы проснулись не пойми где после бурной ночи. Рядом тигр и курица, а Вашего телефона нет –похоже, кто-то его взял (ну или вы его где-то забыли)
u Что самое плохое, из-за жуткой головной боли вы даже не в состоянии вспомнить свой Apple ID, чтобы выполнить удалённое стирание данных
“Это может случиться и с вами”Серия 2: “Приспичило”
u - «Вась, я на минутку, пригляди за моим ифоном, он вон там на стойке» - «Окей, присмотрю»
u Через минуту вы всё ещё пудрите носик, Вася танцует с длинноногой блондинкой, а в это время…
u Ваш девайс меняют. На точно такой же, с таким же контентом и приложениями. Но есть невидимые нюансы – в таком телефоне полно дыр
“Это может случиться и с вами”Серия 3: “Их разыскивает полиция”
u «Ой, а ты тоже любишь ДжастинаБибера? Неужели? А ты не слышала его новый альбом? Серьёзно? Дай-ка телефончик, я тебе его загуглю»
u Друг подруги друга открывает Safari и устанавливает «левый» сертификат как корневой с максимальным уровнем доверия
u Теперь он знает, в каком банке у вас счёт и сколько денег на нём
“Это может случиться и с вами”Серия 4: “Котики Вконтактике”
u После долгого стояния в очереди в «Макдак» вы садитесь попить кофе, почитать ленту новостей и полюбоваться котиками
u «Открытый Wi-Fi как-то подозрительно хорошо ловит на этом месте, вчера такого не было?»
u «А этот парень с немытыми длинными волосами, какого он так смотрит на меня, что-то печатает и смеётся?»
Что это было? – You’ve been PWNED
Jailbreak и его последствия
u Самый страшный вирус в UNIXсистеме – прокладка между стулом и экраном
u После jailbreak-а открыт доступ к следующему:
u Direct data copying
u Remote debugging
u Attaching to processes’ memory
u Full UNIX toolchain
u Runtime manupulations
Побег из песочницы
Атака «человек посередине»(Man-in-the-middle, MITM)
Атака типа «злой близнец»(Evil Twin)
u “Evil twin” attack – точка доступа WiFi маскируется другой точкой доступа, которую создаёт злоумышленник на своём компьютере
u Выпуск и рассылка конфигурационного профиля –самоподписанный профиль с настройками прокси/сертификатов рассылается по почте от якобы имени Apple
u БУДЬТЕ БДИТЕЛЬНЫ!
Атака типа «злой близнец»(Evil Twin)
Методы социальной инженерии(Social Engineering)
u Тоже методы
u Особенно это касается активных пользователей соцсетей
u И тех, кто ставит один пароль на много разных аккаунтов в различных сервисах
u Основаны на склонности человеческой натуры доверять «своим»
u Основная задача – стать «своим», остальное – дело техники
Другие источники уязвимостей
u Camera – геотеги
u Фоновый режим работы – система делает скриншот
u Pasteboard – глобальный кэш
u Auto-completion/auto-correction –также глобальный кэш
u AES encryption – не передан IV (вектор инициализации)
u Хранение ключа шифрования только на девайсе/сервере
u …
ToolsСредства для анализа и тестирования на уязвимости
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)
Proxy.app – Example of captured packets
Сниффер
Сниффер, он же анализатор трафика
u Наиболее известные
u aircrack-ng
u tcpdump
u dsniff
u Wireshark
u Cocoa Packet Analyzer
u Используется «белыми»
u Анализ проблем сети
u Поиск «бутылочных горлышек»
u Мониторинг сети
u Используется «чёрными»
u Поиск открытых паролей
u Перехват личной информации
u Анализ сетевого трафика
Wireshark, проводная и беспроводная акула
Принцип работы
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…
Основные требования при тестировании на уязвимости
u Black-box
u Девайс должен быть рутованный(c jailbreak’ом)
u Пароль root – alpine
u Одна WiFi-сеть, один broadcast-домен
u White-box
u Полный доступ к исходному коду для его анализа и аудита
u Работа с симулятором (ввиду доступности FS, хорошо эмулирует «взломанный» iPhone)
IRL, или примеры из практикиС доказательствами
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
Offline-атака: первый улов, файл конфигурации
Offline-атака: о, переписка! Это уже интереснее…
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
Подготовка к 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 – проверка на то, зашифрован ли файл
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
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
Перехваченный трафик
Итоги взломаu Найдены незашифрованные чаты
u Найдены пароли и явки от SSH/web/MySQL
u Связка otool+class-dump-z помогла найти библиотеку liblinphone
u Приложение могло соединяться с Linphone iOS по незашифрованному соединению
u У приложения своя цепочка доверенных сертификатовu Добавление самоподписанного
сертификата позволило продолжить непотребства
u Используется шифрование SIP трафикаu Взломано с помощью самописного
TCP proxy
Другие примеры
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
Рекомендации по защите
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
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
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