Сегодня в выпуске: отслеживание смартфона с выключенным 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

DDoS на Bluetooth. Разбираем трюк, который поможет отключить чужую колонку

На свете существует не так много вещей, которые бесят практически всех без исключения. Это…

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

  1. Аватар

    r0uly

    11.03.2018 at 19:34

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

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