Android Application
Security Assessment
Антонишин Михаил
Informational security specialist
m.antonishyn@hacken.io
Вид уязвимости по OWASP Top
10 Mobile
M1. Обход архитектурных ограничений
(Improper Platform Usage)
M2. Небезопасное хранение данных
(Insecure Data Storage)
M3. Небезопасная передача данных
(Insecure Communication)
M4. Небезопасная аутентификация
(Insecure Authentication)
M5. Слабая криптостойкость (Insufficient
Cryptography)
M6 Небезопасная авторизация (Insecure
Authorization)
M7 Контроль содержимого клиентских
приложений (Client Code Quality)
M8 Модификация данных (Code
Tampering)
M9 Анализ исходного кода (Reverse
Engineering)
M10 Скрытый функционал (Extraneous
Functionality)
Инструменты тестирования
 Apktool
 Adb
 Dex2jar
 VCG scanner
 JD-GUI
 Genymotion
 Pidcat
 Drozer
 BurpSuite
 MobSF
Декомпиляция приложения
1. Apktool
2. Dex2Jar
3. MobSF
Декомпиляция приложения
1. Apktool
2. Dex2Jar
3. MobSF
Декомпиляция приложения
1. Apktool
2. Dex2Jar
3. MobSF
M1.Обход архитектурных
ограничений (Improper Platform
Usage)
Файл манифеста
M1.Обход архитектурных
ограничений (Improper Platform
Usage)
Уязвимость в WEBVIEW - ПОТЕНЦИАЛЬНАЯ
$ grep -nr 'setAllowUniversalAccessFromFileURLs' java_source
java_source/com/facebook/react/views/webview/ReactWebViewManager.java:227: public void
setAllowUniversalAccessFromFileURLs(WebView webView, boolean bl2) {
java_source/com/facebook/react/views/webview/ReactWebViewManager.java:228:
webView.getSettings().setAllowUniversalAccessFromFileURLs(bl2);
$grep -nr 'setJavaScriptEnabled' java_source
java_source/com/facebook/react/views/webview/ReactWebViewManager.java:242: public void
setJavaScriptEnabled(WebView webView, boolean bl2) {
java_source/com/facebook/react/views/webview/ReactWebViewManager.java:243:
webView.getSettings().setJavaScriptEnabled(bl2);
M2. Небезопасное хранение
данных (Insecure Data Storage)
M2. Небезопасное хранение
данных (Insecure Data Storage)
Вывод чувствительной
информации в лог
M2. Небезопасное хранение
данных (Insecure Data Storage)
Место, которое
выводит в лог
чувствительную
информацию
M3. Небезопасная передача данных
(Insecure Communication)
OTP возвращается в Response
M3. Небезопасная передача данных
(Insecure Communication)
Выполнение транзакций от имени
другого пользователя
M4. Небезопасная аутентификация
(Insecure Authentication)
Эта категория относится к аутентификации конечного пользователя или
неверное управление сеансами. Включает следующие пункты:
• Отсутствие требования проверки идентификации пользователя ;
• Отсутствие проверки контроля сеанса;
• Недостатки управления сессиями.
M5. Слабая криптостойкость
(Insufficient Cryptography
Слабый алгоритм хеширования
M5. Слабая криптостойкость
(Insufficient Cryptography
Хранение пароля в хешированном виде
M5. Слабая криптостойкость
(Insufficient Cryptography
Подбор значения хэш-суммы
M5. Слабая криптостойкость
(Insufficient Cryptography
Использование уязвимой библиотеки
M6. Небезопасная авторизация
(Insecure Authorization)
Категория описывает недостатки авторизации (проверка (валидация) на стороне
клиента, принудительный просмотр и т.д.). Такие события отличаются от проблем
аутентификации (например, устройства регистрации, идентификации пользователей и
т.д.).
Если приложение не проходит проверку подлинности пользователей при
необходимости (например, предоставление анонимного доступа к некоторым ресурсам
или службам, при отсутствии проверки подлинности и запрета несанкционированного
доступа), это является ошибкой проверки подлинности, а не сбоем авторизации.
M7. Контроль содержимого
клиентских приложений (Client
Code Quality)
Статический анализ VCG scanner
Проверка на потенциальную инъекцию в БД
M8. Модификация данных (Code
Tampering)
Попытка модифицировать данные
M8. Модификация данных (Code
Tampering)
M8. Модификация данных (Code
Tampering)
Исходники реализации метода
M9. Анализ исходного кода
(Reverse Engineering)
Реализации метода проверки на включение
Developer mode
Реализации метода проверки на включение
Developer mode
grep -nr "development_settings_enabled"
********_v_0.9.2
Binary file: ********_v_0.9.2/build/apk/classes.dex
matches
********_v_0.9.2/smali/o/xZ$1.smali:49: const-
string v1, "development_settings_enabled"
M9. Анализ исходного кода
(Reverse Engineering)
Место проверки в коде Модифицируем
M9. Анализ исходного кода
(Reverse Engineering)
Developer mode - включён Запуск приложения
M10. Скрытый функционал
(Extraneous Functionality)
Часто разработчики включают в код приложений скрытые функциональные
возможности, бэкдоры или другие механизмы, функциональность которых
предназначена для общего использования. Под эту категорию подходит известное
определение «security through obscurity». Разработчик может случайно
оставить пароль в качестве комментария в гибридном приложении. Либо это может
быть отключение двухфакторной аутентификации во время тестирования.
Выводы
1. OWASP Mobile TOP 10 позволяет в цифрах проанализировать колличество
потенциальных и реальных уязвимостей.
2. Некоторые уязвимости можно одновременно отнести к разным категориям, что
усложняет присвоение статуса критичности.
3. Наглядно продемонстрировал соотношение уязвимостей и инструментов
тестирования
Any questions?
Антонишин Михаил
Informational security specialist
m.antonishyn@hacken.io

Android application security assessment

  • 1.
    Android Application Security Assessment АнтонишинМихаил Informational security specialist m.antonishyn@hacken.io
  • 2.
    Вид уязвимости поOWASP Top 10 Mobile M1. Обход архитектурных ограничений (Improper Platform Usage) M2. Небезопасное хранение данных (Insecure Data Storage) M3. Небезопасная передача данных (Insecure Communication) M4. Небезопасная аутентификация (Insecure Authentication) M5. Слабая криптостойкость (Insufficient Cryptography) M6 Небезопасная авторизация (Insecure Authorization) M7 Контроль содержимого клиентских приложений (Client Code Quality) M8 Модификация данных (Code Tampering) M9 Анализ исходного кода (Reverse Engineering) M10 Скрытый функционал (Extraneous Functionality)
  • 3.
    Инструменты тестирования  Apktool Adb  Dex2jar  VCG scanner  JD-GUI  Genymotion  Pidcat  Drozer  BurpSuite  MobSF
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
    M1.Обход архитектурных ограничений (ImproperPlatform Usage) Уязвимость в WEBVIEW - ПОТЕНЦИАЛЬНАЯ $ grep -nr 'setAllowUniversalAccessFromFileURLs' java_source java_source/com/facebook/react/views/webview/ReactWebViewManager.java:227: public void setAllowUniversalAccessFromFileURLs(WebView webView, boolean bl2) { java_source/com/facebook/react/views/webview/ReactWebViewManager.java:228: webView.getSettings().setAllowUniversalAccessFromFileURLs(bl2); $grep -nr 'setJavaScriptEnabled' java_source java_source/com/facebook/react/views/webview/ReactWebViewManager.java:242: public void setJavaScriptEnabled(WebView webView, boolean bl2) { java_source/com/facebook/react/views/webview/ReactWebViewManager.java:243: webView.getSettings().setJavaScriptEnabled(bl2);
  • 9.
  • 10.
    M2. Небезопасное хранение данных(Insecure Data Storage) Вывод чувствительной информации в лог
  • 11.
    M2. Небезопасное хранение данных(Insecure Data Storage) Место, которое выводит в лог чувствительную информацию
  • 12.
    M3. Небезопасная передачаданных (Insecure Communication) OTP возвращается в Response
  • 13.
    M3. Небезопасная передачаданных (Insecure Communication) Выполнение транзакций от имени другого пользователя
  • 14.
    M4. Небезопасная аутентификация (InsecureAuthentication) Эта категория относится к аутентификации конечного пользователя или неверное управление сеансами. Включает следующие пункты: • Отсутствие требования проверки идентификации пользователя ; • Отсутствие проверки контроля сеанса; • Недостатки управления сессиями.
  • 15.
    M5. Слабая криптостойкость (InsufficientCryptography Слабый алгоритм хеширования
  • 16.
    M5. Слабая криптостойкость (InsufficientCryptography Хранение пароля в хешированном виде
  • 17.
    M5. Слабая криптостойкость (InsufficientCryptography Подбор значения хэш-суммы
  • 18.
    M5. Слабая криптостойкость (InsufficientCryptography Использование уязвимой библиотеки
  • 19.
    M6. Небезопасная авторизация (InsecureAuthorization) Категория описывает недостатки авторизации (проверка (валидация) на стороне клиента, принудительный просмотр и т.д.). Такие события отличаются от проблем аутентификации (например, устройства регистрации, идентификации пользователей и т.д.). Если приложение не проходит проверку подлинности пользователей при необходимости (например, предоставление анонимного доступа к некоторым ресурсам или службам, при отсутствии проверки подлинности и запрета несанкционированного доступа), это является ошибкой проверки подлинности, а не сбоем авторизации.
  • 20.
    M7. Контроль содержимого клиентскихприложений (Client Code Quality) Статический анализ VCG scanner
  • 21.
    Проверка на потенциальнуюинъекцию в БД M8. Модификация данных (Code Tampering)
  • 22.
    Попытка модифицировать данные M8.Модификация данных (Code Tampering)
  • 23.
    M8. Модификация данных(Code Tampering) Исходники реализации метода
  • 24.
    M9. Анализ исходногокода (Reverse Engineering) Реализации метода проверки на включение Developer mode Реализации метода проверки на включение Developer mode grep -nr "development_settings_enabled" ********_v_0.9.2 Binary file: ********_v_0.9.2/build/apk/classes.dex matches ********_v_0.9.2/smali/o/xZ$1.smali:49: const- string v1, "development_settings_enabled"
  • 25.
    M9. Анализ исходногокода (Reverse Engineering) Место проверки в коде Модифицируем
  • 26.
    M9. Анализ исходногокода (Reverse Engineering) Developer mode - включён Запуск приложения
  • 27.
    M10. Скрытый функционал (ExtraneousFunctionality) Часто разработчики включают в код приложений скрытые функциональные возможности, бэкдоры или другие механизмы, функциональность которых предназначена для общего использования. Под эту категорию подходит известное определение «security through obscurity». Разработчик может случайно оставить пароль в качестве комментария в гибридном приложении. Либо это может быть отключение двухфакторной аутентификации во время тестирования.
  • 28.
    Выводы 1. OWASP MobileTOP 10 позволяет в цифрах проанализировать колличество потенциальных и реальных уязвимостей. 2. Некоторые уязвимости можно одновременно отнести к разным категориям, что усложняет присвоение статуса критичности. 3. Наглядно продемонстрировал соотношение уязвимостей и инструментов тестирования
  • 29.
    Any questions? Антонишин Михаил Informationalsecurity specialist m.antonishyn@hacken.io