2. Устройства на ARM процессорах
● Телефоны
● Планшеты
● Часы
● Автомобили
● Телевизоры и приставки к ним
● IoT
3. OS под управлением ARM процессоров
● iOS, tvOS
● Android, Android TV
● Tizen
● WebOS
● Other Unix-like operating systems
4. 1. Получение физического доступа к устройству.
2. Разборка, выпаивание Flash.
3. Чтение дампа карты памяти.
4. Анализ исполняемых файлов с целью выявления
уязвимостей.
5. Написание эксплойта для атаки удалённых устройств.
6. Profit !
Как атакуют ARM-based устройства
5. Как получить исполняемые файлы
приложения
Приложения сторонних разработчиков должны
каким-либо образом попасть на устройство:
● Установка из market (play market, App Store и аналоги)
Минусы в том, что можно выкачать приложение для дальнейшего анализа.
● Установка на устройство вместе с обновлениями
Небезопасная передача по сети (слабое шифрование либо его отсутствие) позволяет
перехватить трафик и извлечь исполняемые файлы.
● Установка на взломанные устройства (public root exploits, jailbreaks)
С такого устройства легко скопировать исполняемые файлы приложения.
7. Получение исполняемых файлов аппаратно
● Выпаивания flash памяти может оказаться недостаточно, если
применяется шифрование.
● Многие производители не используют шифрование.
● Если даже шифрование используется, нет гарантии, что ваше приложение
будет находиться на зашифрованном разделе.
● Если не получилось извлечь нужные файлы, можно попытаться сделать
hardware root. После включить устройство, удаленно подключиться к нему
с правами root, и попытаться извлечь файлы во время работы устройства,
когда нужный раздел будет расшифрован.
9. Приложение точно будет у атакующих
● Даже если некоторые устройства защищены хорошо, и для них
неизвестны способы получения root доступа, это не говорит о том, что
ваше приложение не будет установлено на устаревшее устройство.
● Шифрование не панацея – перед исполнением файл нужно
расшифровать.
● Рано или поздно будет найдена уязвимость, которая позволит извлечь
ваши исполняемые файлы даже из неуязвимого ранее устройства.
● Нельзя перекладывать вопросы защиты своего приложения на
производителя прошивки.
10. Распространённый сценарий атаки
1. Содержимое выпаянной карты памяти монтируется и становится доступным для
чтения/записи на PC атакующего.
2. Атакующий видит множество бинарных файлов. Если компонент является частью
прошивки, найти его может быть непросто.
3. Для поиска потенциальных целей используется grep.
4. Результаты работы grep анализируются, и предполагаемые цели дизассамблируются.
Сценарий возможен благодаря:
● Наличию строк.
● Наличию отладочных символов.
● Наличию имён, описывающих назначение того или иного бинарного файла.
11. Навесные упаковщики
● Защищают от статического и динамического анализа.
● Не требуют поддержки со стороны прошивки.
● Во время работы упакованный файл всегда остаётся
защищённым.
● Легко расширяются.
● Имеется огромный опыт создания упаковщиков под ОС Windows.
13. Some code
Some data
Some code
Some data
Code
obfuscation
Sensitive Data
Library Code
Original ELF Packed ELF Protection Library
Data
encryption
Общая схема работы упаковщика
Protected Code
14. Внутреннее устройство ELF файлов
ELF Header
Program Header Table
Segment 1
...
Section Header Table
● Сегменты нужны для исполнения,
секции - нет.
● Секции могут полностью
отсутствовать.
● Парсинг ELF-файлов должен
осуществляться только на основе
данных из сегментов.
24. Спасибо, пацаны, что пришли !
“Спасибо” в карман не положишь,
а вот Raspberry PI - можно.
Поэтому для вас есть несколько
девайсов от наших друзей,
задавайте вопросы, подходите
общаться, разбирайте RPi ;)
#NoNameCon
P.S. Вдруг кому интересно посмотреть запакованные
семплы - обращайтесь.