Сегодня в выпуске: исследование эволюции мобильного ransomware от простейших локеров до продвинутых криптошифровальщиков, большое исследование безопасности загрузчиков Android-смартфонов, гайд по криминалистическому анализу iOS, инструменты исследования безопасности Android и приложений для него. А также: плагины для продуктивной Android-разработки, рассказ о DSL в Kotlin, несколько статей о реализации анимации и свежая подборка библиотек.
 

Почитать

 

Криминалистический анализ 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 можно получить доступ к интерфейсу диагностики модема и в результате прослушивать телефонные разговоры, снифать трафик, получать информацию о звонках и совершать их, читать СМС.

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

Инструменты

  • twiga — скрипт для получения исчерпывающей информации об Android-устройстве. Умеет показывать имя устройства, версию Android, версию модема, ядра, запущенные процессы, сетевую статистику, таблицу разделов и многое другое.
  • node-google-play — библиотека и набор примеров для скачивания приложений и получения информации из Google Play с помощью эмуляции Nexus 5X.
  • abootool — инструмент для поиска скрытых (и потенциально небезопасных) fastboot-команд в загрузчиках смартфонов. Все, что нужно, — это скачать образ загрузчика и натравить на него скрипт.
  • objection — инструмент исследования, позволяющий внедриться в приложение iOS или Android и провести анализ его приватного каталога, памяти, классов, методов, извлечь содержимое базы SQLite, обойти SSL-пиннинг. Objection основан на Frida и умеет запускать гаджеты и скрипты, созданные для нее.
Пример просмотра приватного каталога приложения с помощью objection
Пример просмотра приватного каталога приложения с помощью objection

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

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

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

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

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


Комментарии

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

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

Check Also

Windows 10 против шифровальщиков. Как устроена защита в обновленной Windows 10

Этой осенью Windows 10 обновилась до версии 1709 с кодовым названием Fall Creators Update …