Мобильный Пентест не для Программистов [ Часть 1 ]

D2

Администратор
Регистрация
19 Фев 2025
Сообщения
4,380
Реакции
0

<?xml version="1.0" encoding="utf-8"?>​

Это первая статья нашего курса eMAPT, я проверил отзывы об экзамене, пока я не вижу никаких больших проблем. Мы подготовимся к экзамену и получим сертификат. Почему "не для программистов"? Потому что я далеко не программист, я живу за счет знаний русского и английского. То что я не знаю программирование не означает что так нужно, если по продолжению какие то навыки понадобястя, мы их получим.

Цель: Иметь какие то знания в мобильном пентесте приложений
Знания: +- Линукс, веб, программирование - я сам не знаю

Содержание​

  1. Что такое eMAPT?
  2. Процесс Пентестирования Мобильных Приложений (Разведка)
  3. Архитектура Android
  4. Создаем Лабораторию
  5. Предлаборатория
  6. ЛАБ
Что я вам советую прочитать:
https://habr.com/ru/articles/16770/

Если я написал что-то неправильно, пожалуйста, прокомментируйте и дайте мне знать!

Что такое eMAPT?​

eMAPT - eLearnSecurity Mobile Application Penetration Tester - это сертификация безопасности мобильных приложений, разработанная INE. На этом экзамене у нас будет 2 APK, мы должны обнаружить уязвимости в этих приложениях, а затем написать наше собственное приложение, которое позволит нам использовать эти уязвимости.

Каковы предварительные требования?
Я не видел никаких предварительных требований на веб-сайте INE, но есть некоторые вещи, которые упоминались в обзорах. Согласно отзывам, предпочтительнее обладать знаниями Java.

Согласно одной из статей:
Джоас, как разработать apk-файл, который использует другие уязвимости? Это примерно тот же apk, он будет взаимодействовать с другими уязвимыми apk, то есть заходить в ваши папки и т.д., и вы запрограммируете, apk, который открывает Google Chrome или собирает информацию из другого apk и так далее. - https://www.linkedin.com/pulse/emaptv2-exam-elearnsecurity-overview-joas-antonio/

Что такое тестирование на проникновение мобильных приложений?
Тестирование мобильных приложений на проникновение - это процесс тестирования безопасности мобильных приложений, целью которого является выявление уязвимостей. В принципе, это то же самое, что и веб-пентест, но на этот раз мы делаем это для мобильных приложений.
Я прочитал несколько статей, одна из них - /threads/99358/ - которую я перевел, но я думаю, что начинать непосредственно с объяснения инструментов - не самый лучший "101". Я постараюсь объяснить все с самых азов.

Процесс Пентестирования Мобильных Приложений​

Разведка
Разведка (в нашем случаи) это процесс нахождения информации о приложении/приложениях какой либо компании. Начинаем с посещения веб-сайта, чтобы собрать информацию о доступных мобильных приложениях. После этого найдём эти мобильные приложения в App Store или Play Market. При этом изучим другие приложения, разработанные тем же разработчиком. Кроме того, ознакомимся с отзывами пользователей, поскольку они могут непреднамеренно указать на потенциальные уязвимости.

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

Динамический анализ
Этот шаг включает в себя активный запуск приложения и манипулирование им. Мы перехватываем трафик приложения, проверяем доступ к памяти, просматриваем хранилище памяти, пытаемся обойти закрепление SSL (SSL Pinning) и обходим механизмы обнаружения root (Root Detection).

Отчет
Процесс составления отчетов для мобильного пентестинга, похож на процесс создания отчетов для веб-приложений, но в данном случае мы объединяем результаты как веб-, так и мобильного OWASP TOP 10, чтобы обеспечить всестороннюю оценку.

Разведка​

Для понимания этой части, давайте воспользуемся практическим примером - приложения компании "Bolt". Я начал с проверки приложения "Bolt" в магазине Google Play. В приложении вы увидите раздел "App Support", который выполняет ту же функцию, что и страница "Свяжитесь с нами" на веб-сайтах. Здесь вы найдете электронную почту и контактные данные компании. Ниже этого раздела находится раздел "More by Bolt Technology", в котором представлены приложения, разработанные компанией "Bolt". Это хорошая идея провести тестирование на безопасность на менее популярных приложениях, так как вероятно будет легче обнаружить в них уязвимости. Далее, вы увидите раздел "Similar Apps", который можно рассматривать как список конкурентов приложения "Bolt". В разделе "About this app" вы найдете информацию о дате последнего обновления, которая показывает, когда приложение было последний раз изменено. Это может дать представление о версиях, которые, возможно, все еще имеют некоторые проблемы. Обычно компании здесь не предоставляют много информации. Раздел "Ratings and Reviews" позволяет клиентам оставить свой отзыв о приложении. В этом разделе может содержаться информация о возможных уязвимостях в приложении или, по крайней мере, он может предоставить информацию о проблематичных функциях.

Bolt 1.png


Изображение [1]: Bolt​

Когда мы переходим в раздел "More by Bolt Technology", мы снова увидим список приложений, разработанных компанией "Bolt".

bolt 2.png


Изображение [2]: Bolt​

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

Исходя из этих отзывов, части приложения, которые следует проверить, включают возможность оставления чаевых в программе, отменa заказов и изменение местоположения в программе для водителя.

customer 1.png


Изображение [3]: Отзывы


customer 2.png


Изображение [4]: Отзывы​

Сейчас пришло время проверить App Store, он в основном аналогичен Play Market, с небольшими различиями.

Мы видим название корпорации, и если нажать на него, мы увидим список приложений, принадлежащих "BOLT TECHNOLOGY OU". Также мы видим "Путешествия: № 29 в этой категории", что также дает нам информацию о конкурентах Bolt. Есть раздел "Что нового", который показывает список обновлений, внесенных в приложение. Также обратите внимание, что компания не предоставляет описания исправлений ошибок. Ниже находится "Оценки и отзывы", но вернемся к этому позже.

bolt ios 1.png


Изображение [5]: Bolt

bolt fixes.png


Изображение [6]: Bolt​

Также мы видим "Конфиденциальность приложения", который показывает, какие данные приложение собирает с устройства и какую информацию от пользователя. Остальное вы можете посмотреть сами, мне нет смысла повторять.

bolt ios 2.png


Изображение [7]: Bolt​

Что касается отзывов, русскоязычные отзывы касаются в основном денег, а не самого приложения, а именно платежей. Что я могу сказать, похоже, "Яндекс" победил в этом аспекте, наверное.

customer ios 1.png


Изображение [8]: Отзывы​

Архитектура Android​

architecture.jpg


Изображение [9]: Архитектура Android​

Linux Kernel / Ядро Linux​

Ядро Linux - это самый низкоуровневый компонент операционной системы Android.

Так что же оно делает?
Оно напрямую взаимодействует с аппаратной частью устройства. Android может работать на разных смартфонах, планшетах и других устройствах, при условии наличия совместимого/подходящего (compatible) ядра Linux для этой аппаратуры. Ядро управляет процессами и обеспечивает возможность одновременного выполнения нескольких приложений. Android-приложения требуют памяти для работы, и за эффективное управление системной памятью отвечает ядро Linux. Ядро Linux предоставляет функции безопасности, такие как права пользователей и групп, контроль доступа и изоляцию процессов; мы будем с ними работать при добавлении сертификата BurpSuite. Android также использует файловую систему, предоставляемую ядром Linux, для хранения и управления файлами; разрешения для файлов такие же, как в Linux. Android-приложения взаимодействуют с аппаратной частью и ядром через системные вызовы; эти системные вызовы позволяют приложениям выполнять задачи, такие как работа с файлами, сетевое взаимодействие, управление процессами и другие.

Platform Libraries and Android Runtime / Библиотеки платформы и среда выполнения Android​

Платформенные библиотеки предоставляют разработчикам предварительно скомпилированный (pre-compiled) код и интерфейсы прикладного программирования (API - Application Programming Interface), упрощая разработку приложений для Android. Эти библиотеки исключают необходимость для разработчиков писать сложный код низкого уровня, позволяя им более легко получать доступ к системным функциям и службам.

Media / Mедиа
Эта библиотека предоставляет поддержку различных операций с аудио и видео, таких как воспроизведение, запись и кодирование. Она позволяет разработчикам интегрировать мультимедийные функции беспрепятственно в свои приложения.

SQLite
SQLite - это базовый механизм для управления данными приложений и важная часть системы хранения и управления данными Android.

OpenGL
OpenGL отвечает за отрисовку 2D и 3D графики. Он предоставляет API для аппаратного ускорения графики, позволяя приложениям взаимодействовать с графическим процессором (GPU) для более быстрой и эффективной отрисовки.

FreeType
FreeType - это механизм рендеринга шрифтов, используемый для отображения текста в приложениях Android.

SSL/TLS Libraries / Библиотеки
Эти библиотеки для обеспечения безопасности сетевых коммуникаций в приложениях Android. Они обеспечивают низкоуровневое шифрование. (SSL Pinning - это методика повышения безопасности в сетевых коммуникациях. - не путать с библиотеками)

Android Runtime
Android Runtime / Среда выполнения Android (ART) - это основной компонент, отвечающий за выполнение (execution) и управление приложениями Android.

Zygote
Zygote загружает часто используемые общие библиотеки и ресурсы в память, что ускоряет запуск новых приложений. При запуске приложения Android создается новый процесс путем практически полного дублирования процесса Zygote. Этот новый процесс наследует состояние памяти, ресурсы и код от процесса Zygote. Поскольку новый процесс является копией процесса Zygote, он также разделяет загруженные библиотеки и ресурсы из Zygote. Это совместное использование ресурсов позволяет приложениям Android запускаться быстрее и использовать меньше памяти.
По сути, этот процесс загружает библиотеки в память, и при запуске нового приложения этот процесс клонируется, и приложение получает возможность использовать уже загруженные библиотеки, таким образом потребляя меньше места и энергии.

Dalvik VM
Dalvik Virtual Machine (Виртуальная машина) был первоначальным исполнительным механизмом для Android перед ART. Он отвечал за выполнение и управление приложениями Android.

Core Libraries / Основные библиотеки
Эти библиотеки предоставляют фундаментальные функции для разработки приложений Android, служа основой для создания различных функциональных возможностей.

Android Application Framework / Фреймворк приложений Android​

Фреймворк приложений Android - это компонент, который предоставляет широкий спектр услуг как для разработки, так и для запуска приложений. Он служит в качестве высокоуровневой основы (high-level framework), которую разработчики могут использовать в качестве фундамента для своих приложений.

Activity Manager / Менеджер активности
Менеджер активности играет роль в контроле жизненного цикла приложений, обязанности включают в себя запуск, возобновление, приостановку и завершение активностей внутри приложений.

Content Provider / Поставщики контента
Поставщики контента позволяют приложениям извлекать и сохранять данные из других приложений.

Window Manager / Менеджер окон
Менеджер окон отвечает за управление отображением пользовательских интерфейсов на экране. Он занимается позиционированием окон и обеспечивает их взаимодействие.

Package Manager / Менеджер пакетов
Менеджер пакетов отвечает за установку и удаление приложений. Он следит за установленными приложениями и связанными с ними разрешениями.

Notification Manager / Менеджер уведомлений
Менеджер уведомлений позволяет приложениям создавать и управлять уведомлениями.

View System / Система представлений
Система представлений - управляет элементами пользовательского интерфейса (UI) и виджетами, обеспечивая их отображение, расположение (layout) и обработку событий (event handling).

Создаем Лабораторию​

Здесь мы настроим лабораторию, которую в дальнейшем будем использовать при пентестировании Android приложений.
Многие источники утверждают, что пентестинг мобильных приложений Android - это то же самое, что и пентестинг Android. Я не мастер в этом, но есть большая разница между приложениями для тестирования на проникновение и всей операционной системой в целом. Android - это ОС, и все, что мы делаем, - это тестируем приложения, которые работают в этой ОС.

JADX-GUI​

JADX-GUI - это инструмент, предназначенный для декомпиляции и проверки файлов приложений Android (APK). Он декомпилирует файлы APK в исходный код Java и обладает базовыми функциями анализа кода, такими как поиск строк и вызов методов(method call) в коде.

Я использую MAC, я знаю, что не все это делают, поэтому я добавлю видео с YouTube для пользователей Windows о том, как вы можете загружать инструменты. Для пользователей MAC это будет актуально, для других, если у вас возникнут какие-либо вопросы / проблемы при установке, не стесняйтесь комментировать, я постараюсь ответить.


Код: Скопировать в буфер обмена
Код:
brew install jadx
jadx-gui

brew jadx.png


Изображение [10]: jadx


jadx.png


Изображение [11]: jadx​

APKTool​

APKTool - это инструмент для декомпиляции, модификации и перекомпиляции APK-файлов. Во время декомпиляции мы можем извлекать ресурсы из APK- изображения, XML-файлй и т.д., Мы также можем редактировать исходный код приложения и перекомпилировать его.


apktool.png


Изображение [12]: apktool​

Android Studio​

Android Studio - это IDE для разработки приложений для Android. В основном он используется разработчиками для отладки и повышения производительности кода. Мы будем использовать его в качестве эмулятора Android. Мы также можем использовать другие приложения, такие как Genymotion. В курсах, которые я проверил, установлена Android Studio, поэтому я думаю, что лучше иметь ее. Из того, что я вижу, это выглядит более удобным.

Вы можете Скачать
View hidden content is available for registered users!
 
Сверху Снизу