Дмитрий Евдокимов «Выживаем в недоверенной среде iOS»
-
Upload
yandex -
Category
Technology
-
view
1.567 -
download
0
Transcript of Дмитрий Евдокимов «Выживаем в недоверенной среде iOS»
Выживаем в недоверенной среде iOS
Дмитрий Евдокимов, Аудитор по ИБ Digital Security
© 2002—2013, Digital Security
#whoami
Выживаем в недоверенной среде iOS
• Исследователь информационной
безопасности в Digital Security.
• Редактор рубрик в журнале
Xakep.
• Один из организаторов
конференций DEFCON Russia и
ZeroNights.
Специализируюсь на поиске уязвимостей
в бинарных приложениях без исходного
кода.
© 2002—2013, Digital Security
Agenda
Выживаем в недоверенной среде iOS
- Мир jailbreak
- Что делает jailbreak
- Механизмы безопасности iOS
- Обнаружение jailbreak
- Советы по защите приложений
© 2002—2013, Digital Security
Что такое Jailbreak?
Выживаем в недоверенной среде iOS
Jailbreak – специальная программа для снятия
некоторых ограничений безопасности
системы посредством эксплойтов.
Нужен:
- Разработчикам
- Обычным пользователям
- Исследователям ИБ
© 2002—2013, Digital Security
Apple о jailbreak
Выживаем в недоверенной среде iOS
http://support.apple.com/kb/HT3743
© 2002—2013, Digital Security
Сообщество о jailbreak
Выживаем в недоверенной среде iOS
© 2002—2013, Digital Security
Cat and mouse game
Выживаем в недоверенной среде iOS
© 2002—2013, Digital Security
Истории jailbreak-сцены
Выживаем в недоверенной среде iOS
Лица: iPhone Dev Team, Chronic Dev Team, George
Hotz, comex, pod2g, evad3rs + saurik
JB: PwnageTool, redsn0w, purplera1n, Spirit,
JailbreakMe, Absinthe, evasi0n
Jailbreak зависит от hardware и software
Jailbreak:
- Tethered
- Untethered
© 2002—2013, Digital Security
Жизнь после Jailbreak
Выживаем в недоверенной среде iOS
- Возможность доступа к ФС - Копирование/редактирование любого файла в системе
- Обход ограничений sandbox - Выход за пределы директории приложения
- Запуск неподписанных приложений - Запуск приложений не из App Store
© 2002—2013, Digital Security
Механизмы безопасности iOS на пути JB
Выживаем в недоверенной среде iOS
• Code Signing
- X.509v3 сертификат
• Sandboxing (Seatbelt)
- /var/mobile/Applications/<app-GUID>
- Нет доступа к другим процессам
- Отсутствие прямого доступа к железу устройства
- Невозможность динамически генерировать код
• Разделение привилегий
- Приложениями с правами mobile + Entitlements
© 2002—2013, Digital Security
Цепочка загрузки iOS
Выживаем в недоверенной среде iOS
Bootrom
LLB
iBoot
Kernel
System
Software
Apps
Режимы загрузки:
• Normal Boot
• DFU Mode
• Recovery Mode
© 2002—2013, Digital Security
Атака на цепочку iOS
Выживаем в недоверенной среде iOS
Bootrom
LLB
iBoot
Kernel
System
Software
Apps
Проверка подписи
Атака
sandbox
© 2002—2013, Digital Security
Общие этапы JB
Выживаем в недоверенной среде iOS
Попадание на
устройство
Запуск
неподписанного
кода
Поднятие
привилегий
Патчинг ядра Закрепление в
системе
© 2002—2013, Digital Security
Последствия: Изменения в ФС
Выживаем в недоверенной среде iOS
Изменение /etc/fstab
До: /dev/disk0s1 / hfs ro 0 1
/dev/disk0s2 /private/var hfs rw, nosuid, nodev 0 2
После: /dev/disk0s1 / hfs rw 0 1
/dev/disk0s2 /private/var hfs rw 0 2
NAND
FTL
Block device
/ /private/var
© 2002—2013, Digital Security
Последствия: Дополнительные утилиты
Выживаем в недоверенной среде iOS
Новые утилиты на устройстве: - Утилиты для работы JB
- Файлы самого JB
- Bundle
- Cydia
- Mobile Substrate
- …
+ Изменение: /var/mobile/Library/Caches/com.apple.mobile.installation.plist
© 2002—2013, Digital Security
Последствия: Прячем приложения
Выживаем в недоверенной среде iOS
© 2002—2013, Digital Security
Последствия: Ломаем песочницу
Выживаем в недоверенной среде iOS
Убирает проверки в Apple Mobile File Integrity Daemon Отвечает за проверку подписей
Вносит изменения в ядро iOS // выключаем MAC для процессов
security.mac.proc_enforce=0
// выключаем MAC для Vnode
security.mac.vnode_enforce=0
© 2002—2013, Digital Security
Последствия: Итоги
Выживаем в недоверенной среде iOS
• Появление новых файлов/директорий
• Измененные свойства
• Измененное поведения
© 2002—2013, Digital Security
Последствия: Угроза безопасности!
Выживаем в недоверенной среде iOS
• Проект iPhone-Espionage (https://github.com/milo2012/iPhone-Espionage)
• Keylogger
• Захват снимков экрана
• Перенаправление SMS
• Записи микрофона
• Отправка GPS-координат
• Вредоносное ПО из Cydia (?!)
• ZitMo, SpitMo, CitMo для JB iOS (?!)
© 2002—2013, Digital Security
Обнаружение JB: Зачем?
Выживаем в недоверенной среде iOS
1) Снизить риски
• Запретить запуск приложения
• Ограничить некоторый функционал
2) Не допустить обход ограничений, внесенных в код
3) Усложнить анализ приложения
© 2002—2013, Digital Security
Обнаружение JB: API
Выживаем в недоверенной среде iOS
- Jailbreak detection API с iOS 4.0
• Часть MDM API
• Данная возможность удалена с 4.2.1 (< 6 месяцев)
© 2002—2013, Digital Security
Обнаружение JB: Новые файлы
Выживаем в недоверенной среде iOS
- Cydia: /Applications/Cydia.app/
URI-схема cydia://
- Файлы за песочницей: /bin/bash
/Application/Preferences.app/General.plist
К другим приложениям типа /Applications/MobileMail.app
- Файлы от jailbreak: /private/var/stash
…
- Экзотика: SSH loopback connection
Обращение на 127.0.0.1 порт 22
© 2002—2013, Digital Security
Обнаружение JB: Изменение свойств
Выживаем в недоверенной среде iOS
- Права доступа на запись
- Размер /etc/fstab
- Обнаруживаем символические ссылки на /var/stash с:
/Applications
/Library/Ringtones
/Library/Wallpaper
/usr/arm-apple-darwin9
/usr/include
/usr/libexec
/usr/share
© 2002—2013, Digital Security
Обнаружение JB: Измененное поведение или целостность Sandbox
Выживаем в недоверенной среде iOS
- Пытаемся создать процесс за пределами jail fork()
popen()
…
- Вызов system()
0 – sandbox работает
1 – jailbreak
- Использование _dyld_image_count() и _dyld_get_image_name()
© 2002—2013, Digital Security
Пример
Выживаем в недоверенной среде iOS
DEMO
© 2002—2013, Digital Security
Обходы обнаружения jailbreak
Выживаем в недоверенной среде iOS
1) Редактирование бинарного файла
2) Использование MobileSubstrate
1) Проект XCon (http://theiphonewiki.com/wiki/XCon)
3) Игры во время выполнения программы (gdb, Cycript)
© 2002—2013, Digital Security
Рекомендации разработчикам
Выживаем в недоверенной среде iOS
- Техники антиотладки - ptrace(PT_DENY_ATTACH, 0, 0, 0);
- Флаг P_TRACED
- Техники анти-hooking - dladdr() вызов & Dl_info структура
- Inline функции __attribute__((always_inline));
- Обфускация кода/данных
- Переименовывать имена классов и методов
- Шифровать/динамически генерировать строки
- Обнаруживать jailbreak
- Использование различных техник обнаружения
Общие моменты:
- Распыление проверок по коду
- Использовать Си для критичных функций и функций безопасности
© 2002—2013, Digital Security
Рекомендации разработчикам: Защита от пиратства
Выживаем в недоверенной среде iOS
1) Проверка целостности исполняемого файла
• LC_ENCRYPTION_INFO
2) Проверка целостности метаданных приложения • iTunesMetadata.plist
• SC_Info
• Code Signing
• Info.plist
© 2002—2013, Digital Security
Материалы по теме
Выживаем в недоверенной среде iOS
1) Hacking and Securing iOS Applications, Jonathan
Zdziarski
2) iOS Hacker's Handbook, Charlie Miller, Dion
Blazakis, Dino DaiZovi, Stefan Esser, Vincenzo
Iozzo, Ralf-Philipp Weinmann
3) Mac OS X and iOS Internals: To the Apple's Core,
Jonathan Levin
© 2002—2013, Digital Security
Выводы
Выживаем в недоверенной среде iOS
1) Jailbreak – это великолепная цепочка эксплойтов
и техник
2) Jailbreak – это большая угроза безопасности
3) Наличие Jailbreak можно детектировать
4) Можно обходить методы детектирования
Jailbreak
© 2002—2013, Digital Security
Вопросы
Выживаем в недоверенной среде iOS
Контакты:
@evdokimovds