Спеціаліст з безпеки компанії HeadLight Security Михайло Фирстов опублікував код скрипта, що дозволяє обробляти перехоплену листування користувачів додатка «ВКонтакте» для Android і iOS, що належать тій самій мережі з хакером. Про це він повідомив в своєму мікроблозі.
Приклад роботи скрипта
Код утиліти під назвою vkmitm (від MITM - «man in the middle», тип атаки) Фирстов опублікував на GitHub. Її виконується частина є скриптом на Python, який шукає в локальній мережі запити додатків «ВКонтакте» для Android або iOS на оновлення списку повідомлень.
[Reclam]
В описі роботи утиліти сказано, що запити мають однаковий вигляд. У них різниться тільки параметр key, який оновлюється не рідше разу на дві години і не частіше одного разу на добу, тому використовувати його можна тривалий час. На думку Фирстова, таким чином можна дізнаватися не тільки текст відправлених і отриманих повідомлень конкретним користувачем, а й службові повідомлення на кшталт «Набирає текст» і «Прочитано».
Щоб мати можливість прослуховувати трафік, влаштуванню зловмисника досить перебувати в одній локальній мережі з жертвою - наприклад, відкритому Wi-Fi в кафе. «Слухати» повідомлення в режимі реального часу необов'язково: можна створювати дампи трафіку через PCAP і розбирати їх по заданій масці пізніше.
Приклад перехопленого трафіку
Як розповів Фирстов, можливість отримувати повідомлення в незашифрованому вигляді закладена в мобільних додатках «ВКонтакте». З якоїсь причини вони передають їх через протокол HTTP, навіть якщо в настройках аккаунта стоїть галочка «Завжди використовувати захищене з'єднання (HTTPS)».
На думку дослідника, HTTPS був відключений спеціально, так як в мобільних додатках прийнято економити трафік, тому представникам «ВКонтакте» він про виявлений способі сніффінга, не повідомляв: «Це не вразливість, а" фіча ", яка спочатку була закладена розробниками».
Навіть при включеній галочці «HTTPS» в налаштуваннях програми дані про повідомлення (вхідні / отримані / різні івенти) передаються все одно по HTTP. Я потестувати і написав невеличкий скрипт, який отримує ці дані з проходить трафіку і розшифровує їх - навіть, скоріше, розставляє по місцях, так як в «сирому» вигляді повідомлення малочитабельні.
Щоб пропустити через себе чужий трафік, достатньо застосувати навіть найпростішу атаку - ARP-спуфінга. Перебуваючи в одній мережі, ми зможемо бачити всі зв'язки, що від чужого пристрою до роутера, а від роутера в інтернет, ну і як наслідок зможемо бачити дані від «ВКонтакте», що проходять по незашифрованому HTTP і виводити їх в легкотравному вигляді.
Параметр key береться з сніффінга всього обсягу трафіку за певною масці. Визначати особу користувача за цим параметром Фирстов поки не навчився, проте вважає, що це можна зробити за непрямими ознаками - наприклад, по IP-адресою або за текстом самої листування.
TJ повідомив представників «ВКонтакте» про спосіб читання чужої листування. Поки невідомо, що стало причиною невикористання HTTPS при передачі особистих повідомлень.
Як уточнив Фирстов, в останньому оновленні програми VK App для iOS передача повідомлень по HTTP була виправлена, але тільки в тому випадку, якщо користувач вказав на сайті «Завжди використовувати захищене з'єднання (HTTPS)».
Прес-секретар «ВКонтакте» Георгій Лобушкін заявив, що клієнт для iOS використовує HTTPS вже більше року (в ньому немає можливості вимкнути захищене з'єднання), а в разі Android трафік шифрується при включеній опції на сайті або в додатку. Коли саме соцмережа повністю збирається перейти на HTTPS, він не уточнив.
Результати перевірки наших фахівців з безпеки повністю спростували доводи, наведені в статті. Захищене з'єднання HTTPS завжди використовується в нашому додатку на iOS (його не можна відключити). Також воно може бути включено користувачем в настройках в додатку на платформі Android. В такому випадку отримати доступ до листування користувача перехопленням Wi-Fi-трафіку неможливо. У найближчому майбутньому ми плануємо повністю відмовитися від використання HTTP.
Георгій Лобушкін, прес-секретар «ВКонтакте»
За словами Фирстова, користувачі «ВКонтакте» часто не використовують HTTPS, і повідомлення передаються в незашифрованому вигляді: «З Android точно відомо, що якщо в настройках аккаунта не варто галочка поруч з HTTPS, то в додатку все передається у відкритому вигляді - як у більшості , якщо судити по трафіку в публічних мережах ».
джерело