Виявлення секретів і запитів API за допомогою APKLeaks
Ми живемо в такому світі, де мобільні значно переважають традиційні настільні комп’ютери минулих років. Мобільні програми створюються для всього: від побачень до збору даних. Від ігор до азартних ігор. Ваш телефон – це скарбниця доступу до будь-чого. І знаєте що? Для роботи багатьох із цих мобільних додатків використовуються API.
TOOLS FOR FIND VULNERABILITY
Виявлення секретів і API за допомогою APKLeaks
Мобільні додатки всюди
Ми живемо в такому світі, де мобільні значно переважають традиційні настільні комп’ютери минулих років. Мобільні програми створюються для всього: від побачень до збору даних. Від ігор до азартних ігор. Ваш телефон – це скарбниця доступу до будь-чого.
І знаєте що? Для роботи багатьох із цих мобільних додатків використовуються API.
І ми можемо використати це на нашу користь.
Мобільні програми, створені на мобільних операційних системах, таких як Android, роблять для нас тривіальним процес зворотного проектування з їх двійкового формату упаковки в код, який ми можемо переглядати та перевіряти. Навіть краще, є інструменти, які можуть зробити це за нас. Один з таких інструментів має назву apkleaks .
apkleaks
Коли розробники хочуть поширювати та інсталювати мобільну програму в операційній системі Android, вони повинні створити скомпільований комплект пакетів Android (APK).
Цей файл APK містить усі необхідні компоненти для встановлення та запуску програми на пристрої Android. Він містить скомпільований вихідний код програми (перетворений у байт-код Dalvik), ресурси та файл маніфесту, у якому описано дозволи, функції та компоненти програми.
Файли APK можна легко змінити за допомогою таких інструментів, як Jadx , який, по суті, є декомпілятором Dex-to-Java. Для нас більш цікавими є такі інструменти, як apkleaks , які беруть цей декомпільований результат, а потім сканують його на наявність цікавих URI, кінцевих точок і секретів.
Використання apkleaks
Установка apkleaks проста. Більшість менеджерів пакетів, таких як apt, yum і brew, уже проіндексували його та зробили доступним. Ви також можете встановити його за допомогою pip за допомогою команди
pip3 install apkleaks
Після встановлення використовувати його так само легко.
Використовуйте опцію -f , щоб вказати на файл APK, який ви бажаєте просканувати, а потім опцію -o , щоб установити назву вихідного файлу, який зберігатиме результати.
Але як взагалі отримати файл APK? Це чудове запитання.
Давайте скористаємося реальним прикладом пошуку та сканування програми для Android, щоб отримати важливі розвідувальні дані для використання в зламі API.
Сканування додатку охорони здоров’я
Давайте підготуємо Середовище. Останнім часом, знаю сильно почали користуватися додатком TEMU для купівлі товарів з китаю, де ви оплачуєте своїми картками ці товари, через транзакції можуть бути видні ваші дані. Одним із постачальників, який пропонує ці послуги, є Telus Health. Останім часом почали писати статі про те що через цей додаток крадуть дані карток, а виток міг відбутися саме через не правильну реалізацію додатку та API методів.
Ну що Цікаво?
Мене цікавить поверхнева перевірка на безпеку програми TEMU, оскільки цікаво на скільки все добре в цьому додатку. Отже, давайте використаємо це, щоб продемонструвати, як покращити нашу розвідку за допомогою таких інструментів, як apkleaks.
Крок 1. Отримайте джерело APK
Перш ніж ми зможемо щось зробити, нам потрібно отримати справжній мобільний додаток TEMU. Хоча його можна завантажити безпосередньо на телефон Android, я хочу показати вам техніку, як це зробити без доступу до телефону.
Причина №1: доступ до старих версій із застарілими кінцевими точками
Неправильне управління змінами існує як клас уразливості в OWASP API Security Top 10, оскільки розробникам важко фіксити різні версії API . Це не рідкість, коли кінцеві точки застарівають досить швидко, якщо компанія веде постійну розробку. Це можливість для нас.
Ви можете сканувати старішу версію програми. Це може бути корисним для пошуку застарілих кінцевих точок, які більше не відображаються в останній програмі, але все ще можуть існувати на сервері API програми.
Причина №2: Вибіркове та умовне блокування
Деякі мобільні програми доступні лише в певних країнах або регіонах, певними мовами або для певних версій пристрою Android. Таким чином, вам може знадобитися знайти спосіб, щоб програмі здавалось, що ви находитесь з іншого регіону або завантажуєте на інший пристрій.
Причина №3: Анонімність
Коли ви завантажуєте програму з магазину Google Play, вам потрібно ввійти в обліковий запис Google. Це стає метаданими для відстеження того, які програми ви завантажуєте та використовуєте.
Хоча ми тут не злі, це не означає, що ми не хочемо бути анонімними під час наших перевірок.
Відвідайте магазин Google Play за допомогою TOR
Відкрийте нове закрите вікно за допомогою улюбленого браузера TOR. Я використаю Brave для цього прикладу, але ви можете використовувати будь-який браузер, який хочете. Просто переконайтеся, що він успішно підключений до TOR і має вузол виводу в регіоні.
Тепер перейдіть до Google Play Store за адресою https://play.google.com/store/apps .
Знайдіть потрібну програму
У Play Store скористайтеся функцією пошуку, щоб знайти свою програму. Клацніть на ньому, щоб перейти на сторінку з детальною інформацією.
Зверніть увагу на параметр id в URL-адресі. Це те, що унікально визначає APK. У моєму випадку це com.einnovation.temu.
Використовуйте завантажувач APK
Коли ви дізнаєтесь ідентифікатор APK (ID), ви можете надіслати запит на його завантаження. Для цього є багато різних інструментів, онлайн-завантажувач , який може завантажувати різні версії безпосередньо, або ви просто на просторах інтернету можете скачати, де для Android, можуть валятися старі версії додатку.
Після того як ми скачали apk, ми тепер можемо запустити розпаковку цього додатку за допомогою apkleaks
apkleaks -f temu-v2-97-0.apk -o temu.txt
Ви почнете бачити, як він сканує програму та намагається знайти секрети та служби, які використовуються:
Незабаром після цього ви побачите посилання, що витягуються, вказуючи на потенційні кінцеві точки API:
Ви також можете побачити, що він витягує повні шляхи до зовнішніх серверів, від яких залежить мобільний додаток. У моєму випадку я бачу зовнішні служби, такі як Google Maps, Facebook_Secret_Key, Google_Cloud_Platform_OAuth, Password_in_URL, Twitter_Secret_Key, а також деякі тестові та проміжні екземпляри внутрішніх служб.
Додаткова порада: якщо ви ненажерливі до покарання, запустіть jadx безпосередньо на APK і дослідіть вихідний код додатку. Звідти ви можете досліджувати код у VS Studio або JD GUI. У моєму випадку я дізнався про позначки спеціальних функцій, які змушують мобільний додаток працювати по-іншому для доступу до різних API, що дає мені певну ясність щодо деяких шляхів кінцевих точок, які я побачив через apkleaks.
Крок 3. Перевірте, чи дійсні секрети, кінцеві точки та сервери
Отримавши дамп з apkleaks, ви повинні переконатися, що витягнуті дані дійсно дійсні. Я залишу це як вправу для вас. Для посилань ви можете використовувати щось таке просте, як curl. Для секретів ви можете використовувати щось на кшталт ядер і використати шаблони розпилення символів.
Як приклад, у моєму випадку я міг побачити пару ключів Google API. Перевіримо їх ядрами.
nuclei -t http/tokenspray -var token=AIzaSyCI0wS69-6XAxCVDKBozccalLz6fRIaCfc
Звичайно… це дійсні ключі Google Static Maps API, жорстко закодовані в додатку.
Висновок
Лише за кілька хвилин ви зможете знайти нові сервери API, секрети та кінцеві точки, яких ви не знайшли під час звичайного тестування додатку.
Використання таких інструментів, як apkleaks, у процесі розвідки може швидко повернути цінні оперативні дані. Навіть якщо ви не плануєте зламувати саму мобільну програму, це варто зробити, щоб отримати більше потенційних розвідувальних даних, щоб бути впевненим що ваші API є захищеними.