Проверяем защищенность приложений для онлайн-знакомств
Об изнанке онлайн-знакомств, кажется, не писал только ленивый — тему обмана и опасности встречи с незнакомцем раскрывали и журналы по психологии, и криминальная хроника. Но есть и менее очевидная угроза, связанная не с самим знакомством, а с мобильными приложениями, предназначенными для упрощения этого процесса. Речь о перехвате и краже личной информации, а также о деанонимизации пользователя сервиса знакомств, что в перспективе может создать жертве массу проблем — от рассылки сообщений от ее имени в социальной сети до шантажа. Мы взяли наиболее популярные приложения и проанализировали, какие данные о пользователе они готовы отдать злоумышленнику и на каких условиях.
Были изучены следующие приложения для знакомств:
- Tinder для Android и iOS
- Bumble для Android и iOS
- OK Cupid для Android и iOS
- Badoo для Android и iOS
- Mamba для Android и iOS
- Zoosk для Android и iOS
- Happn для Android и iOS
- WeChat для Android и iOS
- Paktor для Android и iOS
Отметим, что под деанонимизацией и определением настоящего имени пользователя мы подразумеваем установление его имени и фамилии по данным профиля в одной из социальных сетей, где использование псевдонима лишено практического смысла.
Возможность отслеживания пользователей
В первую очередь, мы проверили, легко ли отследить пользователей по тем данным, которые доступны в приложениях. Оказалось, что настоящее имя пользователя и его страницу в социальных сетях найти достаточно легко, если в приложении можно указать место работы. В результате злоумышленники могут собрать гораздо больше данных о жертве, отслеживать ее перемещения, составить круг друзей и знакомых. Собранная информация может быть использована для сталкинга, т.е. для преследования жертвы.
Кроме того, обнаружение профиля пользователя в социальной сети позволяет обойти отдельные ограничения приложений для знакомств, например, запрет на написание друг другу сообщений. Некоторые приложения разрешают писать сообщения только владельцам платных аккаунтов, другие запрещают начинать общение мужчинам. В социальных сетях, как правило, таких ограничений нет, и можно написать понравившемуся человеку напрямую.
Если говорить более предметно, то в Tinder, Happn и Bumble пользователь может указать сведения о работе и образовании. Используя эту информацию нам удалось в 60% случаев обнаружить страницы пользователей в других социальных сетях, таких как Facebook и LinkedIn, их имена и фамилии.
Пример аккаунта с указанным местом работы, используя которое удалось найти аккаунты пользователя в других социальных сетях
Кроме того, в версии приложения Happn для Android есть дополнительная возможность для поиска: среди данных о просматриваемых пользователях, которые сервер отправляет приложению, есть параметр fb_id — специально сформированный идентификационный номер аккаунта Facebook. Приложение использует его, чтобы выяснить, сколько общих друзей есть на Facebook с этим пользователем. Для этого применяется аутентификационный токен, полученный приложением от Facebook. Немного модифицировав этот запрос — убрав часть из оригинального запроса и оставив токен, — можно выяснить имя и фамилию пользователя в Facebook-аккаунте, для любых просматриваемых пользователей Happn.
Данные, получаемые Android-версией Happn
В iOS-версии обнаружить аккаунты пользователей еще легче: сервер возвращает приложению настоящий ID пользователя в Facebook.
Данные, получаемые iOS-версией Happn
В остальных приложениях доступно мало информации о пользователях — обычно только фотографии, возраст, имя или никнейм. Используя только эти данные, нам не удалось найти аккаунты людей в других социальных сетях. Не помог даже поиск по фотографии в Google: в одном из случаев поисковик распознал на ней Адама Сэндлера, хотя на фото была запечатлена девушка (совсем не похожая на актера).
Другое приложение – Paktor — позволяет узнать адреса электронной почты, причем не только просматриваемых пользователей. Нужно просто перехватить свой трафик, что на собственном устройстве сделать достаточно просто. В итоге в руках злоумышленника окажутся адреса электронной почты не только тех пользователей, чьи анкеты он просматривал, но и других — приложение получает от сервера список пользователей с данными, среди которых есть и адреса электронной почты. Проблема актуальна для обоих версий приложения — и Android, и iOS, — мы сообщили о ней разработчикам.
Часть данных, содержащая адрес электронной почты пользователя
Некоторые из исследуемых приложений позволяют привязать к своему профилю еще и аккаунт в Instagram. Извлеченная из него информация также помогала нам устанавливать настоящие имена: у многих в Instagram указаны настоящие имя и фамилия, другие включают их в название аккаунта. По этим данным можно найти аккаунт в Facebook или Linkedin.
Местоположение
Перед атакой с целью выявления местоположения любых пользователей уязвимы большинство исследуемых приложений, хотя эта угроза уже упоминалась в нескольких исследованиях. В частности, мы выяснили, что пользователи Tinder, Mamba, Zoosk, Happn, WeChat, Paktor подвержены этой атаке.
Скриншот Android-версии приложения WeChat, на котором видно расстояние до пользователей
Атака основана на функции, которая отображает расстояние до других пользователей, — обычно до тех, чей профиль сейчас просматривается. Несмотря на то, что приложение не показывает направление, местоположение можно узнать, перемещаясь вокруг жертвы и записывая данные о расстоянии до нее. Способ довольно трудоемкий, однако задачу упрощают сами сервисы: злоумышленник может, оставаясь на месте, «скармливать» им поддельные координаты, получая каждый раз в ответ данные о расстоянии до владельца профиля.
Приложение Mamba для Android отображает расстояние до пользователя
Разные приложения показывают расстояние до пользователей с разной погрешностью: от десятков метров до километра. Чем меньше точность, тем большее количество измерений необходимо произвести.
Кроме расстояния до пользователя Happn отображает количество «пересечений» с ним
Передача трафика в незащищенном виде
В ходе нашего исследования мы также проверили, какими данными приложения обмениваются с серверами. Нас интересовало, что можно перехватить, если пользователь, например, присоединится к незащищенной беспроводной сети – для осуществления атаки злоумышленнику достаточно быть в той же сети. Даже в случае, если Wi-Fi трафик зашифрован, его все равно можно перехватывать на точке доступа, если она управляется злоумышленником.
Большинство приложений используют протокол SSL при обмене данными с сервером, но кое-что остается незашифрованным. Например, Tinder, PaktorBumble для Android и iOS-версия Badoo загружают фотографии по HTTP, то есть в открытом виде. Благодаря этому злоумышленник может, к примеру, узнать, какие анкеты в данный момент просматривает жертва.
HTTP-запросы от приложения Tinder для получения фотографий
Android-версия Paktor использует модуль аналитики quantumgraph, который передаёт в незашифрованном виде достаточно много информации, в том числе имя пользователя, дату его рождения и GPS-координаты. Кроме того, модуль передает на сервер сведения о том, какими функциями приложения в данный момент пользуется жертва. Стоит отметить, что в iOS-версии Paktor весь трафик зашифрован.
Данные, которые модуль quantumgraph передает на сервер в незашифрованном виде, включают в себя координаты пользователя
Несмотря на то, что в приложении Badoo используется шифрование, его Android-версия загружает на сервер данные (GPS-координаты, сведения об устройстве и мобильном операторе и т.д.) в незашифрованном виде, если не может соединиться с сервером по HTTPS.
Приложение Badoo передает координаты пользователя в незашифрованном виде
Особняком ото всех стоит сервис знакомств Mamba. Во-первых, Android-версия одноименного приложения включает модуль аналитики flurry, который загружает на сервер данные об устройстве (производитель, модель и т.д.) в незашифрованном виде. Во-вторых, iOS-версия приложения Mamba соединяется с сервером по протоколу HTTP, не используя никакого шифрования вообще.
Приложение Mamba передает данные в незашифрованном виде, в том числе и сообщения
Таким образом злоумышленник может легко просматривать и даже модифицировать все данные, которыми приложение обменивается с сервером, включая личные сообщения. Более того, существует возможность получить доступ к управлению аккаунтом, использовав часть перехваченных данных.
Используя перехваченные данные можно получить доступ к управлению аккаунтом и, например, отправлять сообщения
Mamba: сообщения, отправленные благодаря перехваченным данным
Несмотря на то, что в Android-версии Mamba данные по умолчанию шифруются, приложение иногда соединяется с сервером по незашифрованному HTTP. Перехватив данные, использующиеся при этих соединениях, также можно заполучить управление чужим аккаунтом. Мы сообщили о своей находке разработчикам, и они обещали исправить найденные проблемы.
Незашифрованный запрос приложения Mamba
В приложении Zoosk для обеих платформ нам также удалось обнаружить эту особенность — часть коммуникации между приложением и сервером осуществляется по HTTP, причем в запросах передаются данные, перехватив которые, можно временно получить возможность управлять аккаунтом. Стоит отметить, что эти данные можно перехватить только в тот момент, когда пользователь загружает новые фото или видео в приложение, т.е. далеко не всегда. Мы сообщили разработчикам и об этой обнаруженной проблеме, и они ее исправили.
Незашифрованный запрос приложения Zoosk
Кроме того, Android-версия Zoosk использует рекламный модуль mobup. Перехватывая запросы этого модуля, можно узнать GPS-координаты пользователя, его возраст, пол, модель смартфона — все это передается в незашифрованном виде. В случае, когда злоумышленник управляет точкой доступа Wi-Fi, он может менять рекламу, показываемую в приложении на любую другую, в том числе вредоносную.
Незашифрованный запрос от рекламного модуля mopub содержит в том числе и координаты пользователя
В свою очередь, iOS-версия приложения WeChat соединяется с сервером по протоколу HTTP, но все данные, передающиеся таким образом, остаются зашифрованными.
Данные в SSL
В основном, исследуемые приложения и их дополнительные модули используют для связи со своими серверами протокол HTTPS (HTTP Secure). Безопасность HTTPS базируется на том, что у сервера есть сертификат, достоверность которого можно проверить. Другими словами, в протоколе предусмотрена возможность защиты от MITM-атак (Man-in-the-middle): сертификат должен быть проверен на предмет того действительно ли он относится к указанному серверу.
Мы проверили, насколько успешно приложения для знакомств могут противостоять атакам такого типа. Для чего установили на тестовое устройство «самодельный» сертификат, благодаря которому у нас появился шанс «подглядывать» в зашифрованный трафик между сервером и приложением, если последнее не проверяет достоверность сертификата.
Стоит отметить, что установка стороннего сертификата на Android-устройство — очень простой процесс, и можно обманом вынудить пользователя сделать это. Нужно лишь заманить жертву на сайт, содержащий сертификат (если злоумышленник контролирует сеть, это может быть любой ресурс), и убедить нажать на кнопку скачивания. После этого система сама начнет установку сертификата, единожды запросив PIN-код (если он установлен) и предложив указать имя сертификата.
С iOS все гораздо сложнее. Для начала необходимо установить профиль конфигурации, причем пользователю нужно несколько раз подтвердить это действие и несколько раз ввести пароль или PIN-код устройства. Затем необходимо зайти в настройки и добавить сертификат из установленного профиля в доверенные.
Как оказалось, большая часть исследуемых приложений в той или иной мере уязвимы перед MITM-атакой. Только Badoo и Bumble, а также Android-версия Zoosk используют правильный подход и проверяют сертификат сервера.
Нужно отметить, что приложение Wechat хоть и продолжило работать с поддельным сертификатом, шифровало все передаваемые данные, которые мы перехватили, что можно считать успехом: собранную информацию нельзя использовать.
Сообщение из Happn в перехваченном трафике
Напомним, что большинство исследуемых программ использует авторизацию через Facebook. Таким образом, пароль пользователя оказывается защищен, но токен, позволяющий временно авторизоваться в приложении, может быть украден.
Токен в запросе приложения Tinder
Токен — это ключ, который по запросу пользователя выдается сервисом аутентификации (в нашем примере Facebook) для авторизации. Он выдается на ограниченное время, обычно две-три недели, после чего приложению приходится запрашивает доступ снова. Используя токен, программа получает все необходимые для аутентификации данные и имеет возможность аутентифицировать пользователя на своих серверах просто проверяя достоверность токена.
Пример авторизации через Facebook
Интересно, что приложение Mamba после регистрации с использованием аккаунта Facebook высылает сгенерированный пароль на почту. Этот же пароль используется потом для авторизации на сервере. Таким образом, в приложении можно перехватить токен или даже логин с паролем, что позволит злоумышленнику авторизоваться в приложении.
Файлы приложений (Android)
Мы решили проверить, какие данные приложения хранят на устройстве. Отметим, что хотя данные защищены системой и у других приложений к ним доступа нет, его можно получить, обладая правами суперпользователя (root). В связи с тем, что для iOS нет распространенных вредоносных программ, умеющих получать права суперпользователя, мы считаем, что для владельцев устройств от Apple эта угроза не актуальна. Так что в этой части исследования рассматривались только Android-приложения.
Стоит отметить, что права суперпользователя не такая уж и редкость для Android-устройств. По данным KSN, во втором квартале 2017 они были установлены на смартфонах более 5% пользователей. Кроме того, некоторые троянцы умеют сами получать root-доступ, воспользовавшись уязвимостями операционной системы. Исследования о доступности приватной информации в мобильных приложениях уже проводились пару лет назад и, как мы видим, с тех пор мало что изменилось.
Анализ показал, что большинство приложений для знакомств не готово к подобным атакам. Так, воспользовавшись правами суперпользователя, нам удалось достать токены авторизации (в основном, от Facebook) практически из всех приложений. Отметим, что авторизация через Facebook, когда пользователю не нужно придумывать новые логины-пароли, — это хорошая инициатива, повышающая безопасность аккаунта, но только в том случае, если аккаунт Facebook защищен надежным паролем. При этом сам токен приложения часто хранится недостаточно безопасно.
Файл приложения Tinder с токеном
Используя сгенерированный Facebook токен, можно временно авторизоваться в приложении для знакомств, получив полный доступ к аккаунту. А в случае Mamba нам удалось получить даже пароль и логин: их достаточно легко можно расшифровать, воспользовавшись ключом, хранящимся в самом приложении.
Файл приложения Mamba с зашифрованным паролем
У большинства исследуемых приложений (Tinder, Bumble, OK Cupid, Badoo, Happn и Paktor) в той же папке, что и токен, сохраняется история сообщений. В результате злоумышленник, получив права суперпользователя, получит доступ и к переписке.
База данных приложения Paktor с сообщениями
Кроме того, практически все приложения сохраняют в памяти смартфона фотографии других пользователей. Это происходит из-за того, что приложения используют стандартные методы для открытия веб-страниц: система кэширует открываемые фотографии. Получив доступ к папке кэша, можно узнать, какие анкеты просматривал пользователь.
Заключение
Собрав воедино все найденные уязвимости в изученных приложениях для знакомств, получим следующую таблицу:
App | Location | Stalking | HTTP (Android) | HTTP (iOS) | HTTPS | Messages | Token |
Tinder | + | 60% | Low | Low | + | + | + |
Bumble | — | 50% | Low | NO | — | + | + |
OK Cupid | — | 0% | NO | NO | + | + | + |
Badoo | — | 0% | Middle | NO | — | + | + |
Mamba | + | 0% | High | High | + | — | + |
Zoosk | + | 0% | High | High | — (+ iOS) |
— | + |
Happn | + | 100% | NO | NO | + | + | + |
+ | 0% | NO | NO | — | — | — | |
Paktor | + | 100% emails | Middle | NO | + | + | + |
Location — определение местоположения пользователей («+» — возможно, «-» нет)
Stalking — нахождение имени и фамилии пользователя, а так же их аккаунтов в других социальных сетях, процент обнаруженных пользователей (процент обозначает число удач)
HTTP — возможность перехватить какие-либо данные от приложения, отправляемые в незашифрованном виде («NO» — не удалось обнаружить данные, «Low» — неопасные данные, «Middle» — данные, которые могут представлять опасность, «High» — данные, перехватив которые, можно получить управление аккаунтом).
HTTPS — перехват данных, передаваемых внутри зашифрованного соединения («+» — возможно, «-» нет).
Messages — перехват сообщений пользователя («+» — возможно, «-» нет).
TOKEN — использование токена для получения доступа к аккаунту («+» — возможно, «-» нет).
Как видно из таблицы, некоторые приложения практически не защищают личную информацию пользователей, но в целом ситуация не настолько плохая, какой могла бы быть. Даже с поправкой на то, что мы не стали детально изучать на практике возможность обнаружения местоположения того или иного пользователя сервиса. Само собой, мы не будем кого-то отговаривать от использования приложений для знакомств, однако хотели бы дать несколько рекомендаций, как пользоваться ими более безопасно. Во-первых, наши универсальные советы — избегать публичных точек доступа Wi-Fi, особенно незащищенных паролем, использовать VPN, и установить на смартфон защитное решение, которое обнаружит вредоносное ПО, — весьма актуальны для рассматриваемой ситуации и помогут предотвратить кражу личной информацией. Во-вторых, не стоит указывать место работы, равно как и другую информацию, позволяющую вас идентифицировать. Знакомьтесь безопасно.
Опасные связи