Pull to refresh

Статический анализ мобильных приложений

Reading time 3 min
Views 8.5K


Одним из этапов тестирования мобильного приложения — это статический анализ. Статический анализ приложения — это анализ приложения без выполнения каких либо функций приложения. Наиболее удобным для меня из open source фреймворков есть MobSF. Кому интересно, добро пожаловать под кат.

MobSF выполняет статический анализ приложений: Android, Apple iOS и Windows Phone и динамический анализ: только приложения для Android. Как проводить динамический анализ расскажу в следующей статье посвящённой MobSF. Более подробное описание и мануал по установке можно прочитать по ссылке.

После установки MobSF — выполним следующий батничек для запуска сервера (писал для себя, поэтому диск D).

d:
cd .\MobSF\
python .\manage.py runserver

Дальше нужно перейтипо адресу http[:]//127.0.0.1:8000 и открывается главная страница(Рис. 1). Здесь функционала не много:

  • загрузка файла;
  • просмотреть отчеты по прошедшим сканам;
  • переход на документацию API;
  • переход на GitHub проекта.


Рис. 1. Главная страница

После того как файл был загружен и проанализирован, появляется страница с результатом анализа (Рис. 2). Слева меню, которое позволит переходить быстро по всей странице (результат объёмный просто). Какая полезная информация находится на этом скриншоте:

  • хэш-сумма приложения;
  • поддерживаемые версии OS Android;
  • количество и типы компонентов (экспортированный или нет), это важно, так как экспортированные компоненты могут привести к критическим уязвимостям;
  • возможность просмотреть и скачать java- и smali-файлы, которые можно проанализировать другими инструментами или вручную;
  • просмотреть файл манифеста, для анализа.


Рис. 2. Результат анализа

Идем далее. На рис. 3 показана информация по сертификату, которым было подписано приложение.


Рис. 3. Информация о сертификате

Далее идёт описание анализа permissions, которые описаны в файле AndroidManifest.xml (Рис. 4). MobSF анализирует permissions приложения, определяет его статус, на предмет критичности и описание permissions. Здесь нужно понимать архитектуру OS Android для действительной критичности приложения.


Рис. 4. Анализ Android Permissions

На вкладке Security Analysis -> Code Analysis (Рис. 5) показывается результат анализа java-кода статическим анализатором, который определяет потенциальные уязвимости, определяет их критичность и файлы в которых этот тип уязвимости был найден. Во многом эти результаты является являются false positive, но нужно это всё перепроверять.


Рис. 5. Анализ кода

Следующая вкладка (Рис. 6) — это анализ файлов, на сервисе virustotal.com. В данном случае файл не определялся как заражённый.


Рис. 6. Анализ файла

Вкладка URLs (Рис. 7) выводит список URL-адресов, IP-адресов и файлов в которых они хранятся или вызываются. В этом разделе анализируются куда приложение отправляет данные или куда сохраняет информацию.


Рис. 7. Вкладка URLs

Вкладка “Strings” (Рис. 8) проводит анализ текстовых файлов, которые находятся в директории res. При анализе приложения эти файлы могут содержать захардкодженые учетки и другие чувствительные данные. Хотя на моей памяти такого не было.


Рис. 8. Анализ текстовых файлов

Вкладка “Components” (Рис. 9) выводит полный список компонентов (activity, service, content provider и receives), импортированные библиотеки и файлы без определения расширения.


Рис. 9. Список компонентов

Дополнительно анализ исходного кода можно провести с помощью статического анализатора VCG scanner. Для VCG нужен исходный код. Исходный код можно загрузить через кнопку Download Java Code (Рис. 10). Файл скачивается в ZIP-архиве. Дальше нужно извлечь папку с файлами из архива (Рис. 11).


Рис. 10. Скачивание исходного кода


Рис. 11. Извлечение исходного кода

Сканирование исходного кода делается следующим образом:

  1. Во вкладке “Settings” выбираем пункт “Java” — рисунок 12.
  2. Во вкладке “File” выбираем “New Target Directory” — рисунок 13.
  3. Во вкладке “Scan” выбираем “Full scan” — рисунок 14.


Рис. 12. Выбор исходного кода


Рис. 13. Подгрузка директории с файлами


Рис. 14. Запуск сканирования

После завершения сканирования сканер выдаёт названия уязвимости, её критичность, краткое описание и место в исходном коде (Рис. 15). Можно получить полный список уязвимостей и сортировать по их критичности (Рис. 16).


Рис. 15. Описание уязвимостей


Рис. 16. Полный список уязвимостей

Вывод

Статический анализ приложения и исходного кода даёт базовые понятия об архитектуре приложения и потенциальных векторов атак. Согласно методологии применяемой в компании ByteCode именно с него начинается анализ любых приложений от клиента пришедших на пентест.
Tags:
Hubs:
+9
Comments 1
Comments Comments 1

Articles