Какой протокол использует вконтакте

Обновлено: 18.05.2024

Сегодня, ковыряя отснифеный трафик официального приложения ВКонтакте под Android, пытаясь найти особенности, по которым API отсеивает официальные приложения для получения музыки, я наткнулся на запросы довольно интересного содержания.

image

Автор: Владислав Велюга (vlad805)

Disclaimer

Сразу хочу отметить, что я снимаю с себя любую ответственность за возможный ущерб, который Вы можете причинить себе/своим устройствам или другим/чужим устройствам, выполняя действия, которые здесь описаны. Также я не призываю заниматься подобной деятельностью на своих сетях. Информация предоставлена исключительно в ознакомительных целях и крайне не рекомендуется к воспроизведению/повтору на личных устройствах, сетях, а также строго не рекомендуются эксплуатации на пользователях, поскольку снифинг чужих данных - дело незаконное, а свое устройство я промониторить в праве.

И да, для любителей найти рекламу там, где её нет: этот пост/статья -- не является рекламой. Упомянутые ниже приложения приводятся в качестве примеров, не более.

Update 6

А еще давайте сразу, вот что ответил (где-то) Андрей Рогозов про данную информацию.


Предисловие

Года два назад я тоже снифил трафик с помощью Shark for Root, отправляемый ВКонтакте с телефона. Ничего странного я тогда не видел. Сейчас же, когда нас окружают "умные" (именно в кавычках, ибо они идиотские) ленты, машинное обучение и прочее, техника стала, мягко говоря, следить. С одной стороны, это хорошо (мы даем пищу для машин, чтобы они обучались), с другой - плохо (данные о нас сохраняются на серверах).

Результаты

Проснифив только авторизацию, аудиозаписи и вообще первые минуты после авторизации в приложении, уже можно поймать все эти странные запросы. Итак:



Самое странное, что мне показалось - это то, что приложение сливает абсолютно весь список пользовательских приложений, установленных на устройстве. Зачем?! (в центре скрина влепил decoded-строку параметра apps)


Вот опять. wallGetWrapNew - по названию понятно, что это запрос на получение чьей-то стены (пользователя или сообщества). Зачем тут передавать информацию о устройстве? Максимум, что приходит на ум - для статистики. Хорошо, а зачем данные о типе сети? Еще, что не относится к сливу информации: довольно раздражает то, что везде пытаются всунуть рекламу - лишь посмотреть на параметр fields.


Приложение отправляет все действия пользователя: перешел через меню в раздел "аудио", "geo_data" - вероятно, отправлял бы примерное (или даже точное) местоположение устройства. Спрашивается, зачем, если пользователь не просит находить что-то по близости? Нет, облегчать пользователю жизнь, подсказывая релевантные данные в поиске, например - в этом ничего плохого нет, но зачем отправлять геоданные просто так, при открытии поста? Не понятно.


Приложение делает бенчмарки и зачем-то передает время запроса к API и время загрузки изображений. Видимо, усредненные данные.


С видеозаписями обстоят дела еще хуже. Здесь передается информация о таких событиях как "volume_on", "volume_off" (видимо, включение/выключение звука, но это неточно), "fullscreen_on", "fullscreen_off" (переход и выход в/из полноэкранного режима), событие "video_play", которое просто отсылает текущую позицию просмотра видео, где-то с периодичностью 10-20 секунд. upd: хотя вот Андрей подсказал идею, для чего это сделано: для того, чтобы запоминалось место, на котором пользователь остановился при просмотре видео, чтобы он мог переключиться с мобильного на ПК и на ПК продолжить смотреть с места, где был в последний раз на мобильном.


При закрытии страницы (активити) с видео, приложение запрашивает метод video.viewSegments, в параметрах которого передаются рейнжы (отрезки) таймкода, которые были просмотрены пользователем.

Все это - официальное приложение. На момент написания этой статьи (29 июля 2017 года) была версия 4.12.1.

В Kate Mobile таких сливов замечено не было. Единственное, после ввода в эксплуатацию нового алгоритма выдачи аудиозаписей, и Kate, и официальному приложению нужно обращаться к Google Accounts для получения некого receipt-токена. И всё.

О том, как работают приложения на iOS, Windows Phone мне только можно догадываться. Их пакеты не перехватывал, и устройств не имею.

Повторюсь, такие данные, как ближайшие точки доступа Wi-Fi, текущее местоположение пользователя, а также все его действия не отправляются сторонними приложениями, такими как Kate Mobile, VK Coffee (модификация официального, с вырезанными метриками и пр.), моим сайтом-клиентом APIdog и пр.

Update 2

Друг-разработчик Андрей добавил ещё скринов того, что сливается официальным приложением под Android.


Название точки доступа, к которой подключено устройство, а также другие, которые находятся в зоне досигаемости, их сигнал в dB, MAC-адреса.

Плюсом от него же, вот что отправляет официальное приложение для Windows


Только версию системы, версию приложения, метод ввода.

Update 3

Эдуард Безменов, разработчик модификации официального приложения VK Coffee, прокомментировал этот пост так:

Update 4

Григорий Клюшников, бывший разработчик этого самого приложения, как оказывается, был сам против включения сервисов Vigo в приложение:

А вот, что на самом деле представляет Vigo по описанию Григория:

Отправка местоположения, как оказалось, производится только при просмотре отдельного поста. На аудиозаписи это не влияет, как некоторые стали считать, что в зависимости от региона некоторые треки "скрывается".

Update 5: Ответы от ВКонтакте

Мобильная техподдерка


Оказывается, Ваше местоположение, данные для таргетинговой рекламы, список установленных приложений и сети Wi-Fi жизненно необходимы для приложения и сайта в целом.

В ответ на последний вопрос, поддержка решила отойти от темы.


О том, как это было получено

Подручные средства

У нас в распоряжении комп под Linux (Ubuntu 16.04 LTS), два телефона на Android 5.1 (Sony Xperia L) и 6.0.1 (Samsung *какой-то там*). У Sony выпилены Google Play Services. На обоих телефонах последняя версия приложения и стороннее приложение - Kate Mobile (версии 37 и 41 соответственно). Ну, и, естественно, единая локальная сеть, к которой подключен и комп, и два устройства.

Подготовка: создание сертификата SSL

Этой командой создаем сертификат, где key.pem - файл ключа, cert.pem - сертификат.

В phrase key вводим что-то типа пароля. Он нам еще понадобится. Затем его еще раз повторить. Остальные поля можно оставить пустыми/не вводить. По окончанию в текущей директории будет создано два файла.

Подготовка: установка нашего сертификата на устройство

Передаем файл cert.pem на устройство и устанавливаем его в систему. Обращу внимание, что для установки сертификата необходимо, чтобы на телефоне был какая-нибудь защита на экране блокировки (графический ключ, пароль или PIN).



Пошаговая установка сертификата на Android 5.1

Подготовка: переброс портов

Возвращаемся на Linux, вбиваем в терминал:

sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -F
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443
sudo iptables -t nat -A PREROUTING -p tcp --dport 587 -j REDIRECT --to-ports 8443
sudo iptables -t nat -A PREROUTING -p tcp --dport 465 -j REDIRECT --to-ports 8443
sudo iptables -t nat -A PREROUTING -p tcp --dport 993 -j REDIRECT --to-ports 8443
sudo iptables -t nat -A PREROUTING -p tcp --dport 5222 -j REDIRECT --to-ports 8080

Подготовка: Ettercap

После установки его запускаем.

Снифинг данных

Клацаем "Sniff" -> "Unifed sniffing. ". В окне выбора интерфейса обычно выбирается уже нужный (может быть wlan0, wlp1s0, enp5s0), если не тот - выбрать свой. "ОК".


Далее: "Hosts" -> "Scan for hosts". Ожидаем сканирование хостов.


Далее "Hosts" -> "Hosts list". В списке выбираем IP нашего роутера (у меня 192.168.1.1) и жмем "Add to target 1", затем выбираем IP устройства (у меня 192.168.1.222), затем "Add to target 2".


192.168.1.1 - роутер - target 1; 192.168.1.222 - телефон - target 2

Далее "Mitm" (Man in the Middle) -> "ARP Poisoning" -> ставим флаг "Sniff remote connections" -> "OK".


Далее "Start" -> "Start sniffing".

Конец подготовки: SSLSplit

Далее в терминале ставим sslsplit:

Когда установка завершена, создаем директории:

И в текущей директории (где лежат файлы cert.pem и key.pem)

Выходим из аккаунта в приложении на телефоне.

В текущей директории выполняем:

Вводим phrase key, который указывали при создании сертификата.

В logfile.log будут записываться неполные логи (именно домен, адрес, порт), в директорию logs будут записываться подробные запросы, заголовки и ответы.

Далее авторизуемся в приложении и видим, как в терминале, в logfile.log и в директории logs появляются данные. Для остановки снифинга жмем в терминале Ctrl+C.

Логи в директории logs будут записываться под владельцем и группой root без доступа к чтению и записи от текущего пользователя. Поэтому нужно изменить владельца. В директории с сертификатами вводим

Где вместо "vlad805" - имя Вашего пользователя.

Далее можно просматривать файлы с помощью обычного текстового редактора.

Update

Как позже подсказал Антон, снифинг можно выполнить двумя кликами с помощью приложений для Android, и тогда вот эта длиннющая инструкция не понадобится. Но. кому как удобнее.

Благодарности

Также выражается благодарность Константину за наводку и подробную инструкцию по снифингу.

В нашем телеграм канале мы рассказываем о главных новостях из мира IT, актуальных угрозах и событиях, которые оказывают влияние на обороноспособность стран, бизнес глобальных корпораций и безопасность пользователей по всему миру. Узнай первым как выжить в цифровом кошмаре!

Что такое прокси-сервер?

Ни для кого не секрет, что свой IP можно скрыть. Для того, чтобы скрыть свой настоящий IP от разных сайтов, мы и будем использовать прокси.

Прокси – это такой сервер, который является неким посредником во время подключения. В схеме подключения к интернету он находится между нашим компьютером и глобальной сетью.

Давайте разберемся с самой механикой работы юзер-прокси-интернет. Хоть она очень проста, но пару слов мы о ней напишем. Вы (юзер) подключаетесь со своего устройства к прокси-серверу. Далее прокси-сервер подключается к какому-либо сайту или сервису, при этом присваивая вам свой IP адрес. Таким образом, подключение к сайту идёт именно с прокси, а не напрямую.

Какие бывают прокси? Разбираемся с протоколами и типами использования

Например, покупая украинские прокси, вы входите во всемирную сеть с украинским IP из любой точки мира.

Теперь давайте поговорим о протоколах

Существует несколько протоколов, по которым работают прокси-сервера. Если говорить о них тезисно, то ситуация выглядит так:

2) CGI прокси. Один из самых простых протоколов для использования. По данному протоколу человек может зайти на какой-либо сайт прямо с браузера. Т.е. вы подключаетесь к сайту, где стоит CGI прокси, и вводите адрес сайта, который хотите посетить. Данный тип тоже не подходит для арбитража, ведь все данные, которые вы вводите, проходят через сайт владельца CGI, и при желании он может отслеживать все ваши действия, пароли и прочее.

3) FTP прокси. Базовый, распространённый протокол. При помощи его просто передают данные.

5) SOCKS прокси. Один из самых безопасных протоколов передачи данных, вебмастера используют его очень активно, есть несколько версий такого прокси. Запросы и данные передаются в специальном виде – это обеспечивает хорошую анонимность в сети, об этом протоколе мы тоже поговорим более подробно.

Какие бывают прокси? Разбираемся с протоколами и типами использования

В основном такие прокси используются, чтобы получить доступ к запрещенным ресурсам, для фильтрации данных (условно, вы не хотите видеть рекламу на сайтах, все места баннеров будут пустыми).

2) Анонимные прокси. Не стоит верить названию, эти прокси не годятся для работы и не могут дать юзеру полную анонимность, хоть и называются таковыми. Когда юзер использует эти прокси, то сами прокси будут объявлять сайтам и сервисам, что вы юзер, который использует прокси, но не будет передавать ваш настоящий IP. Т.е. например, тот же FB будет знать, что вы сидите под чужим IP, но конкретно ваш IP не узнает. Однако, смысла в этом нет, ибо FB сразу будет триггерить, и акки будут вылетать на всевозможные чеки.

Какие бывают прокси? Разбираемся с протоколами и типами использования

SOCKS прокси

Цепочка прокси серверов – это когда юзер использует сразу несколько прокси, а уже потом выходит в интернет. По сути всё выглядит так. Вы как обычно подключаетесь к прокси, после этого вы ещё раз подключаетесь, только уже к другим прокси и так до тех пор, пока есть возможность такого подключения. Таким образом, прежде чем зайти на сайт, вы подключитесь к 3-4 разным прокси. Такой тип подключения обеспечит ещё большую анонимность в сети, но не все программы могут позволить реализовать цепочку, тут тоже есть свои тонкости. Стоит отметить, что для рядового вебмастера нет нужды в использовании цепочки, одного прокси-сервера вполне достаточно.

Использование SOCKS — идеальный вариант для арбитражников при работе с FB. FB не сможет определить, используете ли вы подмену своего IP.

У протокола SOCKS есть 2 версии: 4 версия и 5 версия. 5 версия поддерживает iPv6 и User Datagram Protocol. Иными словами, 5 версия даёт возможность программам использовать прокси даже тогда, когда разработчик не закладывал в них такую возможность.

С этим закончили. Как мы писали выше, есть и другие протоколы, но они не используются в арбитраже или почти не используются, и писать мы про них не будем. Но, наверняка, многих из вас волнует вопрос о размещении прокси, давайте о нём мы и поговорим.

Резидентные прокси

Суть резидентных прокси в том, что идёт взаимодействие с компьютером другого человека. Т.е. ваш IP адрес подменяется реальным IP адресом физического пользователя, компьютер которого выходит в сеть в своей квартире и получает свой IP от поставщика интернет-услуг. Любой продавец, который предлагает вам резидентные прокси, на самом деле ими не владеет. Он просто берёт в аренду IP адреса настоящих людей в обмен на что-то. Таких аренд может быть огромное количество, а у селлера будет огромное количество прокси, так что не удивляйтесь. И именно благодаря этому резидентные прокси имеют высокий траст. Ведь тот же FB думает, что на сайт заходит реальный человек, со своей реальной сети. А у FB нет никакого желания блокировать обычного рядового пользователя.

Также есть и серверные прокси. Тут уже совершенно другая история.

Мобильные прокси

Одни из самых надежных прокси для работы вебмастеров. Вся прелесть заключается в том, что FB, Google и другие крупные игроки не блокируют мобильные прокси. Подключение идёт через 3G или 4G мобильных сетей. На одном IP адресе могут быть тысячи пользователей. Как мы знаем, в соцсетях, в преобладающем количестве, пользователи сидят именно с телефонов, особенно это касается Instagram. И если заблокировать мобильную IP сеть, то это значит, что тысячи пользователей не получат доступ к соцсетям из-за действий одного человека. Цукерберг при всей своей ненависти к арбитражникам на такой шаг пойти не может, а поэтому все мобильные IP не подвержены блокировке со стороны FB. Более того, частая смена мобильного IP – это норма, поэтому считайте, что вы сетевой путешественник, и лейте свою нутру.

Какие бывают прокси? Разбираемся с протоколами и типами использования

Вывод

Теперь вы знаете о прокси гораздо больше, чем знали раньше, и сможете определиться с типом, протоколом и прочими вещами для использования прокси-серверов в своих целях. Надеемся, что этот объемный материал был вам полезен и интересен, ведь мы стараемся для каждого из вас!

Читайте также: