Содержание статьи
- Инструменты
- Почитать
- Отслеживание смартфона с выключенным GPS
- Пентест для новичков
- Анализ приложения, защищенного упаковщиком Qihoo
- Восстановление истории переписки WhatsApp
- Рантайм-модификация приложений
- Кастомный Project Treble
- Разработчику
- Советы по использованию шифрования
- Распознавание пальцев, лица и голоса
- Изучаем Android KTX
- Автоматизация получения скриншотов
- Библиотеки
Инструменты
- StaCoAn — инструмент для автоматизированного статического анализа приложений для Android; ищет захардкоженные API-ключи, API-эндпойнты, ключи шифрования и ошибки;
- Quiet — не новая, но весьма интересная библиотека для передачи данных (протокол TCP) с помощью звука;
- Electra — jailbreak для iOS 11.0–11.1.2;
- LibScout — инструмент для поиска уязвимых версий библиотек в приложении (может работать с обфусцированным кодом).
Почитать
Отслеживание смартфона с выключенным GPS
PinMe: Tracking a Smartphone User around the World — исследование, посвященное отслеживанию перемещений смартфона (и его владельца) без использования GPS, геолокации по базовым станциям и точкам доступа Wi-Fi. Вместо этого исследователи из Института инженеров электротехники и электроники использовали акселерометр, гироскоп, барометр и компас, которые позволили отследить маршрут перемещений с точностью GPS.
Суть метода в следующем. На смартфон устанавливается приложение PinMe. В момент запуска оно получает информацию о последнем IP-адресе смартфона и таким образом определяет его приблизительное местоположение. Затем начинается сбор информации с датчиков, который позволяет определить скорость движения, периодичность остановок и высоту над уровнем моря. Эта информация используется для определения способа передвижения (ходьба, автомобиль, общественный транспорт, самолет) с помощью нейросети. Другая нейросеть используется для определения точного местоположения по косвенным признакам, таким как высота, расписание рейсов и другие данные.
Результат оказался весьма впечатляющим. Исследователям удалось добиться точности, сопоставимой с GPS. Однако есть и ограничения: PinMe не будет работать в лесу и других местах, где нет дорог, он плохо работает в плоской негористой местности с похожей топологией улиц (например, Манхэттен с его квадратными улицами). Также PinMe не сработает, если на смартфоне активирован Tor-туннель (IP-адрес отправной точки будет неправильным).
Пентест для новичков
A Virgil’s Guide to Pentest: Operation Android — основы пентеста для начинающих. Статья довольно сумбурно написана, но из нее можно вынести многие интересные вещи. Например:
- два главных инструмента — jadx-gui (декомпилятор) и apktool (позволяет разобрать APK и собрать его обратно);
- самый простой способ обойти SSL pinning — Android-SSL-TrustKiller;
- самый удобный инструмент автоматического поиска уязвимостей — Drozer;
- значения
ro.build.version.release
,ro.product.model
иro.product.brand
в эмуляторе стоит изменить. Некоторые приложения используют их для идентификации эмулируемой среды; - если в эмуляторе есть root-доступ и приложение отказывается работать, просто переименуй файлы
/system/app/SuperUser.apk
(SuperSU.apk
) и/system/bin/su
.
Анализ приложения, защищенного упаковщиком Qihoo
Dissecting mobile native code packers. A case study — анализ приложения, защищенного с помощью упаковщика Qihoo. В статье приведено огромное количество деталей, остановимся на некоторых из них.
- DEX-файл приложения весит больше четырех мегабайт, однако при его анализе становится ясно, что там просто нет столько кода: все, что он делает, — это передает управление нативной библиотеке. Так происходит потому, что большую часть файла занимает дописанный в его конец зашифрованный фрагмент.
- Загруженная нативная библиотека выполняет несколько проверок на то, не работает ли она под отладчиком, а затем расшифровывает и загружает в память вторую библиотеку. Кроме проверок на присутствие отладчика, библиотека также использует другой метод защиты — виртуальную машину, которая исполняет байт-код вместо нативного кода ARM.
- Вторая нативная библиотека — это загрузчик DEX-файлов. Он извлекает из конца оригинального DEX-файла зашифрованный фрагмент, расшифровывает его, подготавливает рантайм для исполнения, а затем передает ему управление.
Используемые техники защиты от дебаггинга:
- чтение файла
/proc/self/status
и проверка, что значение TracerPid равно нулю; - чтение бинарного файла линкера (
/system/bin/linker
) и проверка первого байта функцииrtld_db_activity
(если отладчик не подключен — эта функция будет пустой заглушкой); - мониторинг файла
/proc/PID/cmdline
всех процессов (к которым есть доступ) в поисках определенных строк (android_server, gdb, gdbserver и других); - проверка файла
/proc/net/tcp
на содержание строки00000000:23946
(это означает, что к устройству подключен IDA); - мониторинг файлов
/proc/self/mem
и/proc/self/pagemap
, чтобы узнать, что никакое другое приложение не прочитало их.
Восстановление истории переписки WhatsApp
WhatsApp Forensics: Decryption of Encrypted Databases and Extraction of Deleted Messages on Non-Rooted Android Devices — простая, но в ряде моментов интересная статья о том, как извлечь историю переписки WhatsApp из Android-смартфона. Три основных метода:
- Сделать бэкап переписки с помощью самого WhatsApp. Бэкап будет зашифрован, и авторы не рассказывают, как извлечь ключ, зато обещают выпустить фирменную утилиту для автоматического дампа бэкапа.
- Получить права root и скопировать базу данных WhatsApp из приватного каталога (файл
msgstore.db
). Она не зашифрована, поэтому ее легко просмотреть с помощью любого SQLite-вьюера. - Сделать бэкап средствами Android. Некоторые производители добавляют в свои смартфоны функцию бэкапа, и многие из них даже не заботятся о том, чтобы его зашифровать. На примере смартфона компании Oppo авторы делают бэкап данных установленных приложений, а затем без всяких проблем извлекают из него данные WhatsApp (включая
msgstore.db
).
В качестве бонуса авторы рассказывают, как в ряде случаев можно восстановить удаленные сообщения. Дело в том, что перед записью сообщения в базу данных WhatsApp сначала пишет его в кеш (файл msgstore.db-wal
), а затем переносит в msgstore.db
. При удалении сообщения оно будет удалено из основной базы, но иногда может остаться в кеше, откуда его легко извлечь.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»