В этом выпуске: большое исследование безопасности загрузчиков Android-смартфонов, гайд по криминалистическому анализу iOS, инструменты исследования безопасности и руководство по взлому приложений для Android и iOS, рассказ о способах обойти ограничения фонового исполнения в Android 8 и сравнение трех альтернатив SQLite: Realm, ObjectBox и Room. А также: новые приложения, инструменты взлома и библиотеки.
 

Почитать

 

Как работает Face ID

Face ID Security — официальный документ Apple, посвященный безопасности Face ID. Основные моменты из него:

  • смартфон потребует ввести PIN-код в следующих ситуациях: 1) устройство только что включено; 2) с момента прошлой разблокировки прошло более 48 ч; 3) PIN-код не использовался больше чем шесть с половиной суток (156 ч), а смартфон не был разблокирован с помощью Face ID более четырех часов; 4) устройство заблокировано удаленно; 5) пять неудачных попыток отсканировать лицо; 6) был активирован режим SOS;
  • шанс разблокировать смартфон с помощью чужого лица — один к миллиону (в случае Touch ID — один к 50 тысячам);
  • эта вероятность отличается для близнецов и внешне похожих братьев или сестер, а также для детей до 13 лет, поскольку у них могут еще не сформироваться окончательно черты лица;
  • смартфон будет разблокирован только в том случае, если человек смотрит на него;
  • для считывания лица Face ID использует около 30 тысяч точек;
  • данные, считанные в процессе обучения, хранятся в Secure Encave в форме математической модели и никуда не передаются;
  • для распознавания лица используется нейронная сеть, обученная на миллиардах изображений и моделей лиц;
  • на работу Face ID не влияют шляпы, шарфы, очки, контактные линзы;
  • Face ID может работать при любом освещении, даже в полной темноте;
  • нейронная сеть способна выявлять попытки обмана с помощью маски и фотографии;
  • нейронная сеть может быть обновлена без необходимости повторно сканировать лицо;
  • Face ID подстраивается под изменения в лице и периодически обновляет математическую модель;
  • приложения, поддерживающие Touch ID, будут из коробки работать с Face ID.
 

Как работает Touch ID

Demystifying Apple’s Touch ID — статья о другом биометрическом сенсоре iPhone, датчике отпечатков пальцев, а точнее о том, как реализована система безопасного хранения отпечатков. Три ключевых момента из него:

  • «Хеширование» отпечатка. Как и в случае Face ID, система не хранит изображение отпечатка. Она сохраняет только математическую модель, с помощью которой можно подтвердить, что два отпечатка совпадают, но нельзя восстановить оригинальный отпечаток. Концептуально такой подход схож с тем, что применяется для хранения паролей в современных системах аутентификации: пароль хранится в виде SHA-хеша, который можно только сравнить с хешем другого пароля, но не восстановить оригинал.
  • Безопасная передача «хеша» в Secure Enclave. iPhone сохраняет математическую модель отпечатка в зашифрованную область памяти, контролируемую процессором Secure Enclave. Канал коммуникации между датчиком отпечатка и Secure Enclave защищен с помощью ключа шифрования, прошитого еще на заводе. Это значит, что установленный в кустарных условиях датчик отпечатка не сможет получить доступ к Secure Enclave, а пользователь увидит знаменитую ошибку 53.
  • Secure Enclave — центральная часть системы безопасности продуктов Apple. Это выделенный процессор со своей операционной системой, оперативной и постоянной памятью, к которой не может получить доступ основной процессор. И та и другая память зашифрованы, а единственный способ общения с Secure Enclave — через систему сообщений. В iPhone Secure Enclave отвечает за все криптографические операции, в том числе шифрование данных и хранение ключей шифрования, а также математической модели отпечатка и лица.
 

Исследование и взлом приложений для Android

Android application reverse engineering — хорошее введение в реверс-инжиниринг приложений для Android на примере простого CrackMe, которое показывает окно с предложением ввести пароль. Пароль сравнивается с зашифрованным паролем внутри предложения, и, если они совпадают, на экране появляется сообщение об успешном взломе.

Автор предлагает четыре способа взломать CrackMe.

  1. Dex2jar, JD-GUI и Frida. Метод заключается в том, чтобы найти в декомпилированном коде приложения ID нужной зашифрованной строки, затем с помощью Frida внедрить в приложение гаджет, написанный на JS. Гаджет вытащит строку, дешифрует ее с помощью функции дешифровки самого приложения и передаст серверу Frida, работающему на ПК.
  2. Xposed, Inspeckage и APKStudio. С помощью Inspeckage можно отлавливать обращения к SQLite, функциям шифрования и доступа к памяти устройства. Иногда этой информации достаточно, чтобы перехватить расшифрованную строку, но в данном случае пришлось также модифицировать само приложение с помощью APKStudio (код дешифровки в нем был, но приложение не вызывало его).
  3. Патчинг с помощью APKStudio. Самый примитивный метод. Достаточно дизассемблировать приложение и поменять в нем одну строку, чтобы CrackMe принимал любую строку как правильную.
  4. Статический анализ с помощью ByteCodeViewer. Вместо того чтобы запускать или модифицировать приложение, его можно изучить, извлечь из него зашифрованную строку, а также декомпилировать код расшифровки. Затем достаточно создать новое приложение, вставить в него код дешифровки и скормить ему зашифрованную строку. Вуаля, приложение выводит на экран оригинальную строку.
Веб-интерфейс Inspeckage
Веб-интерфейс Inspeckage
 

Исследование приложений для iOS с помощью отладчика

iOS Debug Hacks — большая статья, посвященная отладке приложений, а если быть точным — исследованию приложений с помощью отладчика LLDB. Первая половина статьи посвящена введению в язык ассемблер, вторая — пример отладки приложения с закрытым кодом.

 

Криминалистический анализ iOS

iOS forensics — огромная статья о криминалистическом анализе устройств на базе iOS. Покрывает практически все аспекты анализа, начиная от того, что делать в первую очередь (вынуть SIM, включить режим полета и засунуть девайс в клетку Фарадея), и заканчивая описанием структуры файловой системы и мест расположения самых интересных данных.

Некоторые приведенные в статье инструкции, такие как, например, описание взлома PIN-кода и получение джейлбрейка, уже устарели, но сведения, связанные со структурой файловой системы, еще актуальны.

 

Как работает функция отключения Wi-Fi в Android

Does disabling Wi-Fi prevent my Android phone from sending Wi-Fi frames? — интересное исследование на тему того, как на самом деле работает функция отключения Wi-Fi в Android. Авторы взяли несколько смартфонов на разных версиях Android, расположили их в помещении с точкой доступа и сниффером и поиграли с настройками.

Выводы: при отключении Wi-Fi смартфон продолжает слать широковещательные запросы, чтобы выяснить, есть ли поблизости точка доступа. Смартфон использует MAC-адреса точек доступа для определения своего местоположения (у Google есть список точек доступа и их примерное положение). Проблема только в том, что периодические сканы сетей могут выдать эту информацию третьим сторонам (например, торговый центр может использовать Wi-Fi-роутеры для трекинга посетителей).

Чтобы полностью исключить утечку информации, необходимо также отменить периодические сканы сетей. В Android 6–7 для этого необходимо перейти в «Настройки → Location → Scanning» и выключить соответствующую опцию. В более старых версиях эта опция находится в Wi-Fi → Advanced.

 

Эволюция мобильного ransomware

Android Mobile Ransomware: Bigger, Badder, Better? — статья об эволюции ransomware. Основные тезисы:

  • Первый шифровальщик (именно шифровальщик, а не локер) был обнаружен в мае 2014 года и получил имя Simple Locker (ANDROIDOS_SIMPLOCK.AXM). Все, что он делал, — шифровал файлы на карте памяти.
  • Большинство шифровальщиков используют имена Adobe Flash Player, Video Player и названия популярных игр.
  • Многие шифровальщики используют имя пакета, похожее на имена пакетов встроенных в Android приложений: почтового клиента, календаря и браузера.
  • Большинство шифровальщиков нацелены на жителей Ближнего Востока.
  • Основной алгоритм шифрования — AES, место хранения ключа — в настройках приложения (ранние версии), на сервере (сейчас).
  • Для связи с CC-сервером могут использоваться HTTP/S, Tor и XMPP.
  • Нередко в качестве вспомогательного средства заработка создатели шифровальщиков встраивают в них средства отправки СМС и звонков на платные номера.
  • Часто шифровальщики получают права администратора на устройстве, но только для того, чтобы затруднить свое удаление.
Имена приложения, пакета, иконка и размер семплов ransomware
Имена приложения, пакета, иконка и размер семплов ransomware
 

Большое исследование безопасности загрузчиков

Android Bootloader Vulnerabilities in Vendor Customizations — большое исследование загрузчиков различных смартфонов на предмет уязвимостей и скрытых функций fastboot. Последний представляет собой интерфейс/протокол для управления загрузчиком и часто используется для таких операций, как разблокировка загрузчика и установка прошивок. Однако многие вендоры добавляют в него свои собственные команды, которые могут скомпрометировать механизм безопасной загрузки (verified boot), активировать небезопасные функции ОС или дать злоумышленникам возможность разблокировать загрузчик без сброса смартфона до заводских настроек.

Наиболее интересные находки исследователей:

Root shell с отключенным SELinux на большинстве устройств Motorola

Загрузчик Motorola поддерживает несколько специальных команд, которые после загрузки превращаются в аргументы ядра Linux. Например, после выполнения команды

$ fastboot oem config carrier abc

и последующей загрузки смартфона с помощью fastboot continue ядру будет передан аргумент carrier=abc. Пока ничего криминального. Но, конечно же, здесь есть проблема валидации входных данных, то есть возможность передать ядру дополнительные параметры с помощью особым образом сформированной команды. Например, выполнение такой команды:

$ fastboot oem config carrier "a rdinit=/sbin/foo"

приведет к передаче ядру параметров carrier=a и rdinit=/sbin/foo. Это уже намного интереснее. С помощью того же параметра rdinit можно заставить ядро запустить любой бинарник из initramfs (RAM-диск Android). Но есть другая проблема: в initramfs нет бинарных файлов, подходящих для получения root-шелла.

Исследователи выкрутились и из этой ситуации. Дело в том, что с помощью fastboot можно не только прошивать и разлочивать смартфон, но и загружать в его оперативку любой код. Эта функция используется для прошивки, но если сама прошивка невозможна в случае залоченного загрузчика, то загрузка кода — вполне.

Чтобы использовать эту возможность, достаточно собрать debug-версию initramfs, которая включает в себя работающий с правами root ADB, не требующий авторизации. Загрузить этот initramfs в смартфон, дампнуть оперативную память смартфона, чтобы узнать адрес загрузки, и передать этот адрес ядру с помощью аргумента initrd:

$ fastboot oem config fsg-id "a initrd=0x11000000,1518172"
$ fastboot flash aleph malicious.cpio.gz
... загрузчик сообщит, что прошить файл не удалось, но файл останется в памяти ...
$ fastboot continue
$ adb shell
shamu:/ # id
uid=0(root) gid=0(root) groups=0(root),[...] context=u:r:su:s0
shamu:/ # setenforce permissive
shamu:/ # getenforce
Permissive
shamu:/ #

Получив права root, атакующий также может перезаписать boot-раздел, внедрив в него эксплоит (на Nexus 6 такое возможно из-за неполной реализации verified boot), произвести даунгрейд загрузчика, раздела TrustZone, разблокировать загрузчик, если такая процедура уже проводилась, и перезаписать некоторые разделы.

Разблокировка загрузчика и отключение verified boot в OnePlus 3/3T

Здесь все намного проще, с помощью такой команды разблокируем загрузчик без сброса до заводских настроек:

$ fastboot oem 4F500301

С помощью такой — отключаем механизм verified boot:

$ fastboot oem disable dm verity

Дамп оперативной памяти Nexus 5X

Загрузчик смартфона позволяет вызвать kernel panic с помощью команды fastboot oem panic. В результате появляется возможность снять дамп оперативной памяти с помощью интерфейса serial over USB.

Доступ к скрытым функциям

Некоторые модели смартфонов позволяют получить доступ к функциям отладки и диагностики. Например, в Nexus 6 можно получить доступ к интерфейсу диагностики модема и в результате прослушивать телефонные разговоры, снифать трафик, получать информацию о звонках и совершать их, читать СМС.

Процесс загрузки смартфона
Процесс загрузки смартфона

Продолжение статьи доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.


1 комментарий

Подпишитесь на ][, чтобы участвовать в обсуждении

Обсуждение этой статьи доступно только нашим подписчикам. Вы можете войти в свой аккаунт или зарегистрироваться и оплатить подписку, чтобы свободно участвовать в обсуждении.

Check Also

Мобильные приложения ряда крупных банков уязвимы перед MitM-атаками

Исследователи из университета Бирмингема предупредили, что приложения многих крупных банко…