hacktricks/src/mobile-pentesting/android-checklist.md

79 lines
9.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Android APK Checklist
{{#include ../banners/hacktricks-training.md}}
### [Learn Android fundamentals](android-app-pentesting/index.html#2-android-application-fundamentals)
- [ ] [Основи](android-app-pentesting/index.html#fundamentals-review)
- [ ] [Dalvik & Smali](android-app-pentesting/index.html#dalvik--smali)
- [ ] [Точки входу](android-app-pentesting/index.html#application-entry-points)
- [ ] [Активності](android-app-pentesting/index.html#launcher-activity)
- [ ] [URL-схеми](android-app-pentesting/index.html#url-schemes)
- [ ] [Постачальники контенту](android-app-pentesting/index.html#services)
- [ ] [Сервіси](android-app-pentesting/index.html#services-1)
- [ ] [Приймачі трансляцій](android-app-pentesting/index.html#broadcast-receivers)
- [ ] [Інтенти](android-app-pentesting/index.html#intents)
- [ ] [Фільтр інтента](android-app-pentesting/index.html#intent-filter)
- [ ] [Інші компоненти](android-app-pentesting/index.html#other-app-components)
- [ ] [Як використовувати ADB](android-app-pentesting/index.html#adb-android-debug-bridge)
- [ ] [Як модифікувати Smali](android-app-pentesting/index.html#smali)
### [Static Analysis](android-app-pentesting/index.html#static-analysis)
- [ ] Перевірте використання [обфускації](android-checklist.md#some-obfuscation-deobfuscation-information), перевірки на те, чи був мобільний пристрій рутований, чи використовується емулятор та перевірки на антивандалізм. [Читати тут для отримання додаткової інформації](android-app-pentesting/index.html#other-checks).
- [ ] Чутливі програми (наприклад, банківські додатки) повинні перевіряти, чи рутований мобільний пристрій, і діяти відповідно.
- [ ] Шукайте [цікаві рядки](android-app-pentesting/index.html#looking-for-interesting-info) (паролі, URL, API, шифрування, бекдори, токени, Bluetooth uuids...).
- [ ] Особлива увага до [firebase ](android-app-pentesting/index.html#firebase)API.
- [ ] [Прочитайте маніфест:](android-app-pentesting/index.html#basic-understanding-of-the-application-manifest-xml)
- [ ] Перевірте, чи програма знаходиться в режимі налагодження, і спробуйте "експлуатувати" її
- [ ] Перевірте, чи дозволяє APK резервні копії
- [ ] Експортовані активності
- [ ] Постачальники контенту
- [ ] Відкриті сервіси
- [ ] Приймачі трансляцій
- [ ] URL-схеми
- [ ] Чи зберігає програма дані ненадійно всередині або зовні](android-app-pentesting/index.html#insecure-data-storage)?
- [ ] Чи є [пароль, закодований або збережений на диску](android-app-pentesting/index.html#poorkeymanagementprocesses)? Чи використовує програма [ненадійні криптоалгоритми](android-app-pentesting/index.html#useofinsecureandordeprecatedalgorithms)?
- [ ] Усі бібліотеки скомпільовані з використанням прапора PIE?
- [ ] Не забувайте, що є безліч [статичних Android-аналітиків](android-app-pentesting/index.html#automatic-analysis), які можуть дуже допомогти вам на цьому етапі.
- [ ] `android:exported` **обов'язковий на Android 12+** неправильно налаштовані експортовані компоненти можуть призвести до виклику зовнішніх інтенцій.
- [ ] Перегляньте **Конфігурацію безпеки мережі** (`networkSecurityConfig` XML) на `cleartextTrafficPermitted="true"` або специфічні для домену переопределення.
- [ ] Шукайте виклики до **Play Integrity / SafetyNet / DeviceCheck** визначте, чи можна обійти/зловити кастомну атестацію.
- [ ] Перевірте **App Links / Deep Links** (`android:autoVerify`) на проблеми з перенаправленням інтенцій або відкритими перенаправленнями.
- [ ] Визначте використання **WebView.addJavascriptInterface** або `loadData*()`, які можуть призвести до RCE / XSS всередині програми.
- [ ] Аналізуйте крос-платформенні пакети (Flutter `libapp.so`, React-Native JS пакети, активи Capacitor/Ionic). Спеціалізовані інструменти:
- `flutter-packer`, `fluttersign`, `rn-differ`
- [ ] Скануйте сторонні рідні бібліотеки на наявність відомих CVE (наприклад, **libwebp CVE-2023-4863**, **libpng**, тощо).
- [ ] Оцініть **правила SEMgrep Mobile**, **Pithus** та останні результати сканування **MobSF ≥ 3.9** з підтримкою AI для додаткових знахідок.
### [Dynamic Analysis](android-app-pentesting/index.html#dynamic-analysis)
- [ ] Підготуйте середовище ([онлайн](android-app-pentesting/index.html#online-dynamic-analysis), [локальна VM або фізична](android-app-pentesting/index.html#local-dynamic-analysis))
- [ ] Чи є [небажане витікання даних](android-app-pentesting/index.html#unintended-data-leakage) (логування, копіювання/вставка, журнали аварій)?
- [ ] [Конфіденційна інформація, що зберігається в SQLite dbs](android-app-pentesting/index.html#sqlite-dbs)?
- [ ] [Експлуатовані експортовані активності](android-app-pentesting/index.html#exploiting-exported-activities-authorisation-bypass)?
- [ ] [Експлуатовані постачальники контенту](android-app-pentesting/index.html#exploiting-content-providers-accessing-and-manipulating-sensitive-information)?
- [ ] [Експлуатовані відкриті сервіси](android-app-pentesting/index.html#exploiting-services)?
- [ ] [Експлуатовані приймачі трансляцій](android-app-pentesting/index.html#exploiting-broadcast-receivers)?
- [ ] Чи передає програма [інформацію у відкритому тексті/використовує слабкі алгоритми](android-app-pentesting/index.html#insufficient-transport-layer-protection)? Чи можливий MitM?
- [ ] [Перевірте HTTP/HTTPS трафік](android-app-pentesting/index.html#inspecting-http-traffic)
- [ ] Це дійсно важливо, тому що якщо ви зможете захопити HTTP-трафік, ви зможете шукати загальні веб-уразливості (Hacktricks має багато інформації про веб-уразливості).
- [ ] Перевірте можливі [ін'єкції на стороні клієнта Android](android-app-pentesting/index.html#android-client-side-injections-and-others) (можливо, деякий статичний аналіз коду допоможе тут)
- [ ] [Frida](android-app-pentesting/index.html#frida): Просто Frida, використовуйте її для отримання цікавих динамічних даних з програми (можливо, деякі паролі...)
- [ ] Тестуйте на **Tapjacking / атаки, що керуються анімацією (TapTrap 2025)** навіть на Android 15+ (дозвіл на накладення не потрібен).
- [ ] Спробуйте **накладення / SYSTEM_ALERT_WINDOW clickjacking** та **зловживання службою доступності** для підвищення привілеїв.
- [ ] Перевірте, чи `adb backup` / `bmgr backupnow` все ще можуть скинути дані програми (програми, які забули вимкнути `allowBackup`).
- [ ] Досліджуйте **LPE на рівні Binder** (наприклад, **CVE-2023-20963, CVE-2023-20928**); використовуйте фуззери ядра або PoC, якщо це дозволено.
- [ ] Якщо Play Integrity / SafetyNet застосовується, спробуйте хуки часу виконання (`Frida Gadget`, `MagiskIntegrityFix`, `Integrity-faker`) або повторну передачу на рівні мережі.
- [ ] Інструментуйте сучасними інструментами:
- **Objection > 2.0**, **Frida 17+**, **NowSecure-Tracer (2024)**
- Динамічне трасування на системному рівні з `perfetto` / `simpleperf`.
### Some obfuscation/Deobfuscation information
- [ ] [Читати тут](android-app-pentesting/index.html#obfuscating-deobfuscating-code)
{{#include ../banners/hacktricks-training.md}}