Сегодня в выпуске: отслеживание смартфона с выключенным GPS, взлом продвинутого упаковщика Qihoo, восстановление истории переписки и удаленных сообщений WhatsApp, модификация приложений в рантайме. А также: советы по использованию шифрования в своих приложениях, обзор библиотеки 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-адрес отправной точки будет неправильным).

Черным отмечен маршрут, построенный с использованием GPS, желтым и зеленым — при помощи PinMe
Черным отмечен маршрут, построенный с использованием GPS, желтым и зеленым — при помощи PinMe

Каков технический принцип работы PinMe?

Загрузка ... Загрузка ...
 

Пентест для новичков

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. В статье приведено огромное количество деталей, остановимся на некоторых из них.

  1. DEX-файл приложения весит больше четырех мегабайт, однако при его анализе становится ясно, что там просто нет столько кода: все, что он делает, — это передает управление нативной библиотеке. Так происходит потому, что большую часть файла занимает дописанный в его конец зашифрованный фрагмент.
  2. Загруженная нативная библиотека выполняет несколько проверок на то, не работает ли она под отладчиком, а затем расшифровывает и загружает в память вторую библиотеку. Кроме проверок на присутствие отладчика, библиотека также использует другой метод защиты — виртуальную машину, которая исполняет байт-код вместо нативного кода ARM.
  3. Вторая нативная библиотека — это загрузчик 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-смартфона. Три основных метода:

  1. Сделать бэкап переписки с помощью самого WhatsApp. Бэкап будет зашифрован, и авторы не рассказывают, как извлечь ключ, зато обещают выпустить фирменную утилиту для автоматического дампа бэкапа.
  2. Получить права root и скопировать базу данных WhatsApp из приватного каталога (файл msgstore.db). Она не зашифрована, поэтому ее легко просмотреть с помощью любого SQLite-вьюера.
  3. Сделать бэкап средствами Android. Некоторые производители добавляют в свои смартфоны функцию бэкапа, и многие из них даже не заботятся о том, чтобы его зашифровать. На примере смартфона компании Oppo авторы делают бэкап данных установленных приложений, а затем без всяких проблем извлекают из него данные WhatsApp (включая msgstore.db).

В качестве бонуса авторы рассказывают, как в ряде случаев можно восстановить удаленные сообщения. Дело в том, что перед записью сообщения в базу данных WhatsApp сначала пишет его в кеш (файл msgstore.db-wal), а затем переносит в msgstore.db. При удалении сообщения оно будет удалено из основной базы, но иногда может остаться в кеше, откуда его легко извлечь.

Удаленное сообщение, оставшееся в кеше
Удаленное сообщение, оставшееся в кеше

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

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Вариант 2. Открой один материал

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


Check Also

Развертывание Chrome 79 для Android временно остановлено: баг удалял данные пользователей

Разработчики Google обнаружили, что из-за бага часть пользовательских данных терялась при …

2 комментария

  1. Аватар

    r0uly

    11.03.2018 at 19:34

    Отличная подборка! Наконец-то в Хакере начали раскрывать тему пентеста мобильных приложений… Примеры на Kotlin тоже понравились и появилось желание ознакомиться с ним, т.к. выглядит более продуманным, чем Android SDK на Java.

Оставить мнение