Неделя мобильной безопасности (9-15 апреля)

Привет, Хабр!

Меня зовут Юрий Шабалин, как вы помните из предыдущих статей, я один из основателей компании Стингрей Технолоджиз, разработчика платформы анализа защищенности мобильных приложений iOS и Android.

А здесь вы найдете мини-дайджест новостей из мира мобильной безопасности, как я и обещал в статье «Подборка материалов по мобильной безопасности «Awesome Mobile Security». Рассказываю о том, что нового произошло, какие уязвимости были обнаружены, что нового почитать и какие новые инструменты появились (или нашлись) за прошлую неделю.

8c4e7e7ba97a82e32d02a1fc146bf9fa.jpg

Введение

Если формат понравится, выпуски будут публиковаться каждую пятницу-субботу и включать в себя новости за последние 7 дней (включая субботу и воскресение предыдущей недели). Итак, встречайте первый выпуск недели!

Новости

Google начнет скрывать приложения, собранные с устаревшей версией TargetSDK

Компания Google предупредила разработчиков, что будут усилены требования к уровню Target API (Android API), для которого собираются приложения.

На практике это означает, что с 1 ноября 2022 года приложения в магазине Google Play не будут доступны для поиска и установки, если при их создании использовался устаревший TargetSDK (срок давности которого превышает два года). По мере выхода новых релизов Android, окно версий, в рамках которого можно указывать целевой уровень, будет меняться соответствующим образом.

Говорят, это только одно из нововведений в политике, так что ожидаем и других новостей. Но, как мне кажется, следующим логичным шагом будет аналогичное «окно» для установки минимальной версии SDK, которое позволит отсечь совсем уж старые устройства.

Обход RASP (Runtime Application Security Protection)

Совсем недавно на одной из конференций был сделан доклад под названием «Forging golden hammer against Android app protections». Он посвящен проверкам различных инструментов защиты в рантайме, включая шифрование кода приложения, поиск отладчика, Frida и многое-многое другое.

Доклад очень крутой, технически глубокий и проработанный! Есть видеозапись выступления и репозиторий со слайдами и скриптами (активно наполняется). Сейчас там скрипты для Ghidra, но предполагается, что все остальное автор тоже добавит. Выглядит очень круто, особенно часть про Frida и способ хуков с многопоточностью и хуками на ещё не загруженные классы.

CVE-2021–30737 (Memory corruption in ASN.1 decoder) — Writeup по writeup«у

Довольно интересная статья — эдакое описание на описание уязвимости или writeup на writeup.

Оригинальный баг был найден в 2021 году и по нему написано достаточно увлекательное описание, как он был найден и в чем заключалась проблема.

Новый пост — это, скорее, заметки, дополнения и размышления, как мог произойти баг в парсинге и обработке ASN.1 в iOS, а также где ещё можно поискать подобные уязвимости.

На самом деле читать такие статьи очень полезно, даже безотносительно самой уязвимости в iOS. Например, чтобы побольше узнать об ASN.1 и способах работы с ним, учитывая, что немногие сталкиваются с ним в рамках своей работы.

Ещё немного про WebView и ошибки при проверке URL

Если вы по какой-то причине пропустили шикарную статью от OverSecured про уязвимости в WebView и способы эксплуатации, то очень рекомендую прочитать ее!

Ну, а для тех, кто хочет начать с чего-то попроще и в принципе понять, почему конструкции вида url.startsWith и url.endsWith иногда бывает недостаточно для валидации ссылок, которые вы открываете в вашем приложении, подойдет статья от автора фреймворка Medusa на базе Frida (кстати, довольно неплохой инструмент).

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

Обход SSL Pinning для Flutter-приложений с использованием Ghidra

Статья представляет из себя последовательность действий: что делал автор, как искал и что заменял в libflutter.so. Интересно узнать, как он прошел этот путь, чем руководствовался и что в итоге получилось. Как обычно бывает, достаточно много референсов на другие не менее интересные статьи.

Можно попробовать это повторить или попробовать скачать уже модифицированный файл и заменить его в анализируемом приложении.

Обход проверок на jailbreak, решение CTF от r2con2020

На прошедшей в прошлом году конференции r2con было множество крутых докладов и, конечно, интересных CTF.

Небольшая статья о прохождении одного из CTF, а именно о втором задании в iOS, где необходимо было обойти проверку на jailbreak и, как минимум, запустить приложение.

Само собой, обычные решения, вроде objection не работают, поэтому приходится реверсить и смотреть, что произойдет и какие проверки есть. Именно об этом и пишет автор статьи, рассказывая, как прошел этот квест с помощью только лишь radare2 и Frida.

Интересно почитать, особенно прикольная штука небольшой снипет-хак для SpringBoard, который предотвращает убийство процесса, если не запустился вовремя (чтобы успеть отловить или захукать нужные вещи).

С github пропал репозиторий с reFlutter

По непонятным (а может и понятным), на текущий момент, причинам, с Github пропал репозиторий reFlutter. Благодаря автору (кстати, наш соотечественник), теперь у reFlutter-а новый дом. Очень надеюсь, что он останется на месте и будет продолжать развиваться!

Хуки для Frida напрямую из декомпилятора Jeb

Недавно, после очередного релиза jadx, в его возможности добавили создание Frida-хуков на нужный класс или метод напрямую из интерфейса.

Вот и декомпилятор Jeb тоже недалеко ушел. Ну, вернее, не совсем он, а написанный для этого плагин. Интеграция давно напрашивалась, и здорово, что такие крутые инструменты начинают взаимодействовать друг с другом!

iOS Hacking — гайд для новичков

Автор не обманул: это гайд, и действительно для новичков. Хорошо структурированный, описывающий основные концепции, рассказывающий, что и где можно поискать, но не сильно подробный. Мне намного больше понравился гайд на русском, от нашего соотечественника, куда более тщательно и основательно подготовленный.

Что полезного: можно позаимствовать некоторые регекспы и команды для поиска нужной информации, как, например, строка для поиска IBAN:

IBAN: [a-zA-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}[0-9]{7}([a-zA-Z0-9]?){0,16}

Так что вывод простой: даже в кажущихся на первый взгляд простых статьях всегда можно получить что-то полезное (ну или освежить знания).

Заключение

Ну что же, первый впуск подошел к концу, надеюсь, что вы узнали что-то новое и полезное для себя. Почти все эти материалы публикуются в Telegram канале про мобильную безопасность Mobile Appsec World, а также добавляются в репозитории, где всегда можно найти интересующие темы по безопасности:

И если у вас есть, что добавить, прошу в личные сообщения, комментарии под постами, а может быть даже и в Pull Request.

Всем спасибо и хороших выходных!

© Habrahabr.ru