Аналіз взаємодії мобільних Android-додатків з API соціальних мереж Facebook, Instagram, ВКонтакте

Не секрет, що більшість великих сервісів на серверній стороні використовують який-небудь API (Application Programming Interface) для взаємодії з різними клієнтами.

«очній ставці» NeoQUEST-2016 Максим Хазов розповів про різні підходи до визначення та використання прихованого серверного API-функціоналу на прикладі таких популярних сервісів, як ВКонтакте, Instagram, Facebook.

У даній статті зупинимося на основних моментах доповіді і поділимося усіма електронними матеріалами: відеозаписом виступи, презентації, а також демонстраціями атак для кожної розглянутої соціальної мережі (все під катом).

Натякніть: «прогулянки» по соціальним мережам ще чекають учасникам NeoQUEST-2017, реєстрація на online-етап якого йде повним ходом!

Як це звучало на NeoQUEST?
Одразу ж, як і обіцяли, ділимося презентацією (тик) і доповіддю:



Навіщо визначати API?



Основні цілі в даному випадку дві:

  1. Шукати уразливості (на серверній стороні або в протоколі взаємодії).
  2. Автоматизувати дії в соціальних мережах (всіма улюблені «боти»).
Таких роботів можна назвати «хамелеонами», так як вони будуть мімікрувати під офіційне мобільний додаток сервісу, виконуючи такі ж запити з такою ж структурою. На серверній стороні буде непросто відрізнити такого бота від цього користувача мобільного додатку.

Як вивчати API?
Є 3 головних напрямки:

  • Вивчення документації (добре, якщо вона є!);
  • Аналіз мережевого трафіку (найбільш простий спосіб, далі обраний в якості основного);
  • Реверс-інжиніринг мобільного додатка (найбільш «хардкорних» спосіб, але іноді без нього не обійтися).
Приклади і демонстрації


Для демонстрацій була використана контрольована Wi-Fi точка, а також проксі для HTTP запитів Burp Suite. В даному випадку всі тестовані додатки взаємодіяли з API за допомогою протоколу HTTP і його модифікацій.

ВАЖЛИВО!

Дослідження проводилося навесні-влітку 2016 року, на даний момент в архітектурі додатків і протоколів взаємодії можуть бути зміни (наприклад, з листопада 2016 додаток ВКонтакте для Android більше не підтримує протокол HTTP).

ВКонтакте і незахищений протокол HTTP
Мобільний додаток ВКонтакте під Android за замовчуванням використовує протокол HTTP, а значить (як було показано у першій частині доповіді, відеозапис якого в кінці статті):

  1. Додаток вразливим для атак типу Man in the Middle (MITM). Тим не менш, API передбачає деякі заходи захисту від модифікації і повторення запитів.
  2. Не складає ніяких труднощів проаналізувати API, що використовується додатком (хоча до нього і так існує відкрита документація).
У демонстрації показана перехоплення незашифрованого трафіку і знаходження в ньому запиту до API, що відповідає за відправку повідомлення.



Instagram і HTTPS
У другій частині доповіді було розглянуто додаток Instagram під Android, для взаємодії з API воно використовує захищений протокол HTTPS (HTTP + SSL). Це означає, що в загальному випадку (при відсутності доступу до пристрою у дослідника і досить сучасною версією TLS) протокол взаємодії не уразливий до атак MITM.

Але, маючи доступ до телефону, можна встановити на нього свій кореневий сертифікат і легко розшифровувати трафік, підміняючи сертифікати для HTTPS сполук (BurpSuite вміє це робити в автоматичному режимі). У демонстрації показано перехоплення паролю трафіку після установки на телефон контрольованого кореневого сертифіката і знаходження в ньому запиту до API, що відповідає за лайк до фотографії.



У Instagram існує публічне документований API для розробників. У ньому задані досить суворі ліміти для ключових функцій (лайки, підписки, постинг і т. д.). Як з'ясувалося, додаток Instagram використовує інше, приватне API, в якому, зрозуміло, подібних лімітів немає.

Чим цікаве це приватне API в плані «ботоведения»? Головна відмінність приватного API: підпис всіх важливих запитів секретним ключем (унікальним для версії програми). Так як ключ зберігається всередині програми, можна дістати його з допомогою реверс-інжинірингу програми.

Facebook і SSL Pinning
У третій частині доповіді було розглянуто додаток Facebook під Android. Цей додаток для взаємодії з API використовує захищений протокол HTTPS + надбудову під назвою SSL Pinning.

SSL Pinning – впровадження в код мобільного додатка SSL-сертифіката сервера API. Ця технологія призначена для захисту від перехоплення трафіку шляхом встановлення кореневого сертифіката на пристрій і підміни сертифікатів.

Тим не менш, SSL Pinning можна відключити (і навіть різними способами):

  1. За допомогою декомпіляції та модифікації програми (складний спосіб).
  2. Модифікуючи низькорівневі SSL функції на пристрої (вимагає root-доступ, не завжди працює стабільно). Програми Android SSL Bypass, iOS SSL KillSwitch працюють саме за цим принципом.
У доповіді було продемонстровано спосіб відключення SSL Pinning в мобільному додатку Facebook під Android (з допомогою видалення однієї з бібліотек, використовуваних додатком – libsslx.so) і подальший успішний перехоплення трафіку.

Як з'ясувалося при аналізі трафіку, мобільний додаток Facebook використовує деякі недокументовані методи API (в тому числі, для реєстрації акаунтів і входу в систему).

Також був знайдений недокументовані метод API, що дозволяє отримати ID користувача Facebook за номером телефону. Ось як виглядає демонстрація можливого автоматизованого використання отриманих недокументованих методів:



висновок
При належному бажанні завжди можна проаналізувати протокол взаємодії між мобільним додатком і сервером. Використання додаткових засобів захисту (таких, як SSL Pinning) може лише дещо ускладнити роботу дослідника. Тому розробникам слід уникати використання привілейованих недокументованих методів API в додатку (особливо якщо є публічне і документований API).

Крім того, є можливість зробити бота, який буде відправляти точно такі ж запити, як офіційне мобільний додаток. Для боротьби з подібними ботами можна порекомендувати ускладнювати структуру запитів до API і ретельно аналізувати всі параметри запитів на серверній стороні.

На «очній ставці» NeoQUEST-2017, яка пройде 29 червня в Пітері, як і завжди, будуть класні доповіді про найбільш актуальні тенденції кібербезпеки, сучасних механізмах захисту і способи їх обходу.

Якщо ти не з Пітера, сміливо плануй свою відпустку на червень і приїжджай! Білі ночі, розвідні мости, нескінченні дощі і NeoQUEST-2017 космічної тематики з доповідями, демонстраціями, конкурсами і призами — все це чекає на тебе. Також ти можеш відвідати «очну ставку» як учасник hackquest і поборотися за головний приз — поїздку на одну з міжнародних конференцій з інформаційної безпеки! Для цього — реєструйся тут і з 1 по 10 березня проходь завдання online-етапу. Можливо, саме ти опинишся кращим? Дізнаємося 10 березня…
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.