Давайте разберём это на примере одного сервиса, который для меня оказался абсолютно неизвестной областью тьмы, но существует уже с 2015-го года. Его название в статье упоминать не будем, но подобное можно без проблем нагуглить.
Итак, в один прекрасный день моей знакомой пришло сообщение, предлагающее ознакомиться с линейкой продуктов яхт-клуба. Формулировка «Некоторое время назад, вы были гостем нашего сайта» особенно привлекает внимание. Поэтому пора засучить рукава и окунуться в мир интернет-сталкинга и хотя бы немного разобраться в том, как же всё устроено.
В чём же суть?
Компании вроде Google и Яндекс довольно строго подходят к хранению персональных данных, позволяющие однозначно идентифицировать пользователя в сети (а именно, Google запрещает передачу подобных данных через свои сервисы Google Analytics и Google Tag Manager. Невыполнение этих правил ведёт к предупреждению или блокировке аккаунтов нарушителей), однако это справедливо не для всех. Есть некоторые общепринятые «правила» хранения данных, но подобно пиратскому кодексу — это не строгие законы, а лишь набор рекомендаций. Все мы знаем, что сталкинг — это плохо, но когда за подобные вещи неплохо платят, то у некоторых возникает повод если не сразу заняться этим, то как минимум немного призадуматься.
Если взглянуть на sources злополучного сайта, то можно обнаружить интересный набор скриптов сервиса очень подозрительного сервиса (легко заметить выбранный файл на скрине).
Окей, есть отклонение от стандартного набора из кодов Analytics и Метрики. Есть и подозреваемый!
Следующим логичным шагом будет поискать по исходникам сочетание «vk», которым могли бы обозначить участок кода, отвечающий за идентификацию пользователя на сайте. Сделаем это в файле «pixel/index.php?img=»:
Итак, видим, что указана некоторая ссылка на приложение VK. Будет логично предположить, что с его помощью как раз и происходит опознание профиля посетителя, если, разумеется, он был залогинен. Адрес приложения передаётся в функцию vkPr(link), её код приведён ниже:
function vkPr(link)
{
var vkprimg = (window.Image ? (new Image()) : document.createElement('img'));
vkprimg.onload = function()
{
setCookiePr('XFZDGF1FQEpQVV5cSh1DRw==', link);
}
vkprimg.onerror = function()
{
getOther();
}
vkprimg.src = 'https://vk.com/login?u=2&to=aW1hZ2VzL2ljb25zL2hlYWRfaWNvbnMucG5n';
}
Тут видим, что происходит установка пикселя и куки. Пиксель при этом логинится в аккаунт посетителя, а на этом этапе должен происходить деанон пользователя. Далее, исследуем файл из папки callback и найдём в нём обращение к vk_id и установку кук со страшными префиксами «hunter». Набор данных весьма богат: от номера телефона до email и идентификатора VK.
Охота началась:
Этот файл хранит в себе ядро трекера, с помощью которого данные передаются на сервер сервиса и дальнейшие действия с ними уже неизвестны
Если проследовать по ссылке приложения, которое на момент публикации статьи уже заблокировано, то можно обнаружить интересное приложение «Привет», у которого есть доступ к вашим личным данным. Оно не требует установки в ваш аккаунт.
В нём указана страница разработчика приложения и было бы интересно перейти на неё тоже.
Тут мы видим пустой аккаунт, который, очевидно, создан как сервисный и заполнен ровно настолько, чтобы не привлекать внимания. Последний вход был совершён в 21:17, что заставляет задуматься об очень долгом рабочем дне в компании, создавшей это приложение.
Не имея возможности отследить конкретные методы идентификации пользователей, можно лишь предположить, что с помощью основного функционала приложений VK происходит получение ссылки на пользователя и передача её боту, который пишет посетителю сайта сообщение довольно «крипового» формата «я знаю, что ты делал этим вечером». В папке widgets есть обращение к стороннему сервису, через которое, собственно, и идёт всё общение:
Интересно, что изначально были явно указаны варианты диалогов с ботом, но позже их удалили Вот вырезка из объекта, с вариантами разговора:
{
"exitWeTreasure": {
"head-name": "— #{name}, подождите уходить,",
"head": "— Подождите уходить,",
"text-free": "для вас есть персональное предложение! Давайте мы перезвоним и обсудим цену для вас?",
"text_worktime": "для вас есть персональное предложение! Давайте через <br/>#{countdown} ((секунду|секунды|секунд)):countdown обсудим цену для вас?",
"text_off": "для вас есть персональное предложение! Уточните, когда вам перезвонить.",
"action_callLater": "Выбрать время звонка",
"action_call": "ОК, созвонимся!",
"action_text": "Написать письмо"
},
"didCallSucceed": {
"head-name": "— #{name},",
"head": "— Скажите,",
"text-name": "скажите, вам удалось начать разговор с менеджером?",
"text": "вам удалось начать разговор с менеджером?",
"action_yes": "Да",
"action_no": "Нет"
}
}
Выглядит знакомо, не так ли? Особенно мило выглядит часть кода, которая отвечает за общение с детьми, так как им предлагают позвонить родителям (эти выводы сделаны исходя из названий методов, к которым обращаются).
На этом часть, посвящённая непосредственно коду заканчивается. Далее, просто поищем в Гугле URL, с которого подгружались js-файлы.
Кто же меня преследует?
Это было просто и первый же результат приводит на сервис, который прямо сообщает о том, что занимается поиском аккаунтов Вк тех, кто посетил сайт:
Тут на оригинальном изображении (пришлось замазать названия этих сервисов, чтобы никому не показалось, что это такой оригинальный способ продвижения) уже видим знакомое сочетание слов с наличием vk, а в заголовке название компании-разработчика
Дальнейшие поиски привели к тому, что выяснилось, что эта компания существует с 2015-го года и предоставляет услуги множеству клиентов, среди которых есть и весьма известные с хорошей репутацией: от банков, до сотовых операторов. За свою долгую историю интернет-сёрфинга в неанонимном режиме, мне ни разу не писали боты с предложениями ознакомиться с каталогом товаров, так что это выглядит довольно сомнительно, но я могу и ошибаться.
Что же дальше?
На самом деле, этот сервис вполне можно использовать для шантажа пользователей. Стоит его разместить, например, на порносайте и в один неудачный день бот может написать кому-то сообщение счастья «я знаю, твои любимые ролики и расскажу о них всем». Сомнительное удовольствие, кем бы вы ни были. Также, возможно применить это с целью отследить частых посетителей какого-нибудь неугодного издания и использовать его, как мощный инструмент цензуры.
В «Политике конфиденциальности Вконтакте» в пункте 5.1.4 указано, что:
Персональные данные Пользователей не передаются каким-либо третьим лицам, за исключением случаев, прямо предусмотренных настоящими Правилами.
При указании пользователя или при наличии согласия пользователя возможна передача персональных данных пользователя третьим лицам-контрагентам Администрации Сайта с условием принятия такими контрагентами обязательств по обеспечению конфиденциальности полученной информации, в частности, при использовании приложений.
Приложения, используемые пользователями на Сайте, размещаются и поддерживаются третьими лицами (разработчиками), которые действуют независимо от Администрации Сайта и не выступают от имени или по поручению Администрации Сайта. Пользователи обязаны самостоятельно ознакомиться с правилами оказания услуг и политикой защиты персональных данных таких третьих лиц (разработчиков) до начала использования соответствующих приложений.
Действия таких третьих лиц (разработчиков) регулируются официальным документом Администрации Сайта Условиями размещения приложений.
То есть работа с данными осуществляется согласно правилам размещения приложений VK.
В этих же правилах в Пункте 2 говорится:
2. Работа с данными
2.1. Запрещается собирать и хранить пользовательские данные, включая идентификатор пользователя (User ID), в целях, не связанных с функционированием приложения. Запрашиваемые данные должны использоваться только в контексте приложения.
2.2. У приложений, размещенных на vk.com, должна быть политика конфиденциальности. Если ее нет, используется типовая политика конфиденциальности ВКонтакте.
2.3. Запрещается передавать любые пользовательские данные, автоматизированно полученные через API (включая User ID), сторонним сервисам (например, рекламным) как напрямую, так и через посредников.
2.4. Запрещается использовать пользовательские данные в любых рекламных объявлениях.
Отсюда видно, что нарушается пункты 2.3 и 2.4, которые сообщают о том, что пользовательские данные нельзя передавать третьим лицам. На самом деле, это очень напоминает историю с FindFace, но там есть нюанс, что FindFace не предназначен (формально) для рекламы и передачи ваших данных кому-либо другому ради прибыли. Здесь же ситуация в корне отличается.
Вместо завершения
В целом, сбор данных о пользователях сайтов не является чем-то плохим. Даже если не анонимно, то можно просто просить спросить разрешение у пользователя, можно ли его деанонимизировать. Конечно, разумно было бы просто предложить всем путешествовать по сети в анонимном режиме и не испытывать подобных проблем, но это не будет решением проблемы. Анонимные же данные позволяют получить представление о своей аудитории и более эффективно построить свой бизнес и его продвижение. И самое весёлое в этой истории то, что был явный промах мимо своей целевой аудитории, т.к. обычные студенты 20-25 лет навряд ли располагают возможностями для покупки яхты.
Также, после обращения в службу поддержки VK с сообщением о деятельности данного сервиса и вопросами об их отношении к такому поведению, данное приложение было заблокировано. Что-то мне подсказывает, что подобные приложения разрабатываются пачками с минимальными изменениями под конкретного клиента, так что одна проблема была разрешена, но глобально, к сожалению, ничего не поменялось. Возможно, они обратили внимание на деятельность компании в целом и стоит в дальнейшем ожидать каких-то перемен, но тут уж остаётся только загадывать.
Ответы службы поддержки можно увидеть ниже, они весьма минималистичны:
На этом я закончу свой рассказ о том, как можно найти многих из нас на просторах сети без нашего же ведома. Stay safe, stay strong.
Комментарии (56)
AslanKurbanov
19.06.2017 17:32+1Интернет-полиция недалекого будущего: ходишь по сети вдруг серфинг прерывается и появляется в окне браузера строгое, но справедливое лицо бота-представителя власти: "А покажите Ваш Сетевой паспорт для проверочки. И пальчик приложите, пожалуйста. Проблемки у Вас, Виталий Сергеевич. Долги по кредитам — 20 тысяч! Айяйяй, и штраф за просмотр запрещенных сайтов неоплачен. Придется временно заблокировать выход в Интернет.."
LoadRunner
20.06.2017 11:18Ну или как-то такacmnu
19.06.2017 17:36-4Хм, а кто-то из здешней публики ходит в интернет без Ghostery или его аналога? Но расследование любопытное, спасибо.
sevikl
22.06.2017 13:16понимаете ли, нужно заниматься очисткой интернета от мусора, а не героически лазить на свалку в противогазе. автору респект.
//я так смотрю, вконтакт уже и не соцсеть для общения? разрегался там 5-6 лет назад и не жалеюacmnu
22.06.2017 13:18нужно заниматься очисткой интернета от мусора
Каким образом? Лично я точно ничего изменить не смогу. Я в VK не работаю.
Iqorek
19.06.2017 17:48+3Я вижу тут дырку в vk, отвечать ок на запрос «https://vk.com/login» с «Referer» в шапке http, отличный от домейна vk.com, ну вот и результат.
dive_up
19.06.2017 18:02Тут да, вопрос почти что из серии «баг или фича?». Потому что подобная механика точно работает уже 2 года как (из того, что удалось нагуглить) и, скорее всего, работала и раньше. Было бы интересно узнать что к чему.
EminH
19.06.2017 18:04Нет, баг точно. Попробовали бы они сделать такое
в мичетис фейсбуком или гуглом.Iqorek
19.06.2017 18:15+1Склоняюсь к версии, что это баг оставленный намеренно. Почему? Вероятно сделать по нормальному было сложно, *сарказм on* а ущерб небольшой, подумаешь и так публичные данные пользователей утекают, биг дил.
timfcsm
19.06.2017 18:24да и у фейсбука такие дыры есть… честно говоря, не помню точно как, но трекается так же без ведома пользвателя, зашедшего на сайт, под каким акком он залогинен в фб
mayorovp
20.06.2017 14:58Referer тут ни при чем. Проблема — в каком-то странном параметре
to=aW1hZ2VzL2ljb25zL2hlYWRfaWNvbnMucG5n
, который непонятно что делает.
Официальный API предполагает показ промежуточной страницы, где у пользователя спрашивают согласен ли он передать свои данные для идентификации. Тут же этот шаг каким-то образом пропустили.
Iqorek
20.06.2017 15:08Проблема — в каком-то странном параметре to=aW1hZ2VzL2ljb25zL2hlYWRfaWNvbnMucG5n, который непонятно что делает.
Это «images/icons/head_icons.png» в base64. И это не проблема, проблема что (я не проверял) вероятно разрешен логин через куки по GET запросу, ни CORS не работает, ни проверки на откуда пришел запрос нет.mayorovp
20.06.2017 15:33В таком случае это простая проверка залогинен ли пользователь, которая сама по себе ничего не делает, как уже написали ниже. Проблема не в ней, а в том коде который выполняется в случае успешной проверки.
Iqorek
20.06.2017 16:09Что это меняет? Если сайт может получить несанкционированный доступ к данным другого сайта, то у этого сайта есть дырка в безопасности. Да, дырки в безопасности есть у многих и на это можно забивать болт, пока это не становится общественным достоянием и теперь каждый 13ти летний кулхакер может в эти дырочки совать свои грязные пальчики. Более того, как правило дырки безопасности по одиночке не ходят, что подтверждает эта статья, на сколько я понимаю здесь используется, как минимум 2 уязвимости.
mayorovp
20.06.2017 16:11Это делает неправильным ваш комментарий:
Я вижу тут дырку в vk, отвечать ок на запрос «https://vk.com/login» с «Referer» в шапке http, отличный от домейна vk.com, ну вот и результат.
Дырка — в другом месте.
simpel
19.06.2017 18:04https://vk.com/login?u=2&to=
это простой способ определить залогинен пользователь или нет, а не то, что вы написали. В случае наличия сессии — редирект будет на картинку или favicon, а дальше уже идет работа с API VK
udmh
19.06.2017 22:09+2Скрипт редиректит пользователя на страницу iframe приложения, ВК передает id текущего пользователя в айфрейм через параметр viewer_id, приложение его сохраняет и редиректит пользователя обратно через window.parent.location. Весь процесс занимает пару секунд. Отправлял багрепорт еще в октябре, а воз и ныне там.
algotrader2013
19.06.2017 23:48интересно, что имея скрины, название сервиса нагугливается с первого запроса)
у них даже естьГОСУДАРСТВЕННАЯ РЕГИСТРАЦИЯ ПРОГРАММЫ ДЛЯ ЭВМ
со следующим описаниемРеферат:
Программа предназначена для сбора, сохранения, обработки и предоставления информации о посетителях сайта. Позволяет собирать общедоступную информацию (профиля посетителей соц. Сетей), учитывать количество посещений, запоминать источники перехода на сайт, ключевые слова, время посещения сайта, список просмотренных страниц и другую техническую и общедоступную информацию. Также программа умеет определять и оценивать вероятность совершение целевого действия конкретного посетителя на сайте. Доступ к программе осуществляется с помощью веб-интерфейса, а так же API, которое позволяет получить статистическую информацию и сохранить статус пользователя в системе.dive_up
19.06.2017 23:59Собственно, потому и пишу в начале статьи, что легко нагуглить :)
Было бы интересно разобрать всю механику подобной схемы более подробно силами сообщества, чтобы не приходилось беспокоиться вне анонимного режима о том, что кому-либо напишут/позвонят (а там ещё и номера телефонов собираются) с сомнительными целями.
LevOrdabesov
19.06.2017 23:48Так нужно быть залогиненным в соц. сети, чтобы это сработало?
Hellek
20.06.2017 03:25Да
LevOrdabesov
20.06.2017 13:19Да, это ужасная дыра.
*сарказм*Iqorek
20.06.2017 15:58Перед переключением вкладки социальной сети, на другой сайт, вы разлогиниваетесь? Я даже не спрашиваю, что перед закрытием вкладки соцсети вы всегда делаете логаут, конечно да.
Hellek
20.06.2017 03:00Похожую техники использовали ребята из **трекер, после того как сайты всех их клиентов Яндекс стал понижать в выдаче за кликджекинг и в браузере предупреждать, что сайт может быть опасен они изменили тактику. При заходе на сайт происходит редирект в ВК, за вас автокликом соглашаются дать доступ приложению и редиректят обратно на сайт. Поддержка ВК дала мне ответ, что они не могут что-либо сделать, т.к. технически я разрешаю доступ и нарушения нет
PavelZhigulin
20.06.2017 04:46Captcha спасет мир
Hellek
20.06.2017 05:12+1Как это в данном случае применимо? Скорей режим инкогнито спасёт мир
Alexeyslav
20.06.2017 09:07Автоклик без капчи не сработает и приложение не получит разрешение…
Hellek
20.06.2017 16:37Вы имеете в виду, что VK должен добавить капчу для подтверждения пользовательских действий? Но капча же вполне распознаётся роботами и низкооплачиваемыми фрилансерами.
Моё мнение, что капча это препятствие от школьников, а в случае коммерческого проекта они вполне могут заплатить спецу чтобы он написал обход капчи.
Наверное, решением было бы расширение в браузер или встроенный в него функционал который запрещает подобные авторедиректы и автоклики.Alexeyslav
20.06.2017 17:11И этот обход проработает сутки двое, после чего алгоритм обхода перестанет действовать. Капча это достаточно действенное средство против автоматизации. Причем бывает капча без капчи, там где не надо ничего вводить а просто передвинуть слайдер мышкой. С чем не справляется ни один бот, кроме полноценных эмуляторов движения мыши.
PavelZhigulin
21.06.2017 16:20Тип капчи можно поменять за 30 минут, а вот написать новый алгоритм обхода этой капчи — это задача как минимум на несколько дней или даже недель.
udmh
20.06.2017 12:14+2Автоклик не нужен, автору приложения достаточно поставить опцию «Установка приложения — Не требуется», и оно будет запускаться автоматически без каких-либо действий со стороны юзера. Это больше вопрос к ВК, у ФБ приложения, не требующие установки, запускаются анонимно, без передачи id юзера.
alex_dark
20.06.2017 11:30Америку вы не открыли. Совсем. Это уже много лет практикуют. И очень много сервисов, предоставляющих подобные услуги (предоставляют базу пользователей из соц сетей, кто был на их сайте). Но мы рады, что вы открыли для себя кликджекинг))
grossws
20.06.2017 12:32Здесь, скорее всего, даже без clickjacking'а обошлось, vk сам отдаёт нужные сведения "анонимному" приложению.
Hellek
20.06.2017 16:41Кстати да, т.к. за кликджекинг сайты подвергают санкциям теперь пользователю не нужно кликать, его сразу же при заходе на сайт редиректят в ВК. Даже если это выглядит сомнительно и отталкивает клиента, умельцы всё-равно получают данные вк-юзера
Leljka
20.06.2017 17:48Там же и fb_id, а, соответственно, данные аккаунтов фейсбука тоже как на ладони. Хотя, все таки, лучше посещать проверенные магазы.
А что за сайт? На крине не увидела url.
Leljka
20.06.2017 19:08Нагуглить сайт, показанный вами, не составило труда. Однако, чтоб найти на какой рекламный сервис в Фейсбуке ведет — нужен ваш! Там осуществлена возможность партнерских приложений, как в самом Фб, так и вне, ведущих на него.
А вот, профили каких сайтов они собирают (ну, почти все они указаны в вашем скрине).
AndreySvist
21.06.2017 01:58Кстати, пару месяцев назад столкнулся с другой рекламой. Зашёл в торговый центр и, проходя мимо отдела(которые ещё обычно в проходе располагаются) различной
бижутерииювелирной продукции, получил смс-уведомление такого плана — «Вам драгоценный подарок от Name&Name в ТЦ Таком-то».AslanKurbanov
21.06.2017 11:51-2Год назад человек был в США на конференции, где собирались крупные корпорации связанные с BigData, основной разговор о том, что делать с огромным собранным массивом данных о людях. В частности, решение — такая адресная реклама там как раз это обсуждалась — вот дошло и до нас! А ведь Фейсбук сам сливает данные, он собственно этим и живет.
DjOnline
21.06.2017 18:41Достала уже эта самацензура, давайте называть вещи своими именами.
Конкретно описываемый сайт здесь — это http://помощьлид.рф
И их десятки:
https://lidx.ru/
http://detectim.com/
http://socgram.ru (1000 бесплатно)
http://lptracker.rustanislav-belichenko
22.06.2017 00:50Поддержу, тема известная и уже давно, и поисковики с ней борятся в меру сил.
DjOnline
22.06.2017 12:25Боролись, когда был clickjacking — за курсором плавал невидимый iframe и первый клик ничего не делал для посетителя, а нажимал на невидимую кнопку виджета.
Текущая система пользовательский опыт не особо портит, поэтому поисковые системы с ними пока не борятся.
По поводу емейлов и телефонов — определяются только те, которые не защищены настройками приватности и в открытом доступе? Или что-то изменилось?stanislav-belichenko
22.06.2017 12:53Насколько я знаю, конкретно с тем же LPT боролись из-за того, что он предоставлял услугу соц. фишинга, они в итоге выпустили вторую версию алгоритма, как они сами ее называют, которая теперь, как верно уже написали, просто перекидывает пользователя на страницу ВК и потом возвращает клиента обратно на сайт. За это блокировать их перестали, по крайней мере пока что, но понятное дело, такое поведение сайта вряд ли радует посетителей. По поводу данных — насколько я знаю, брали только те, что в общем доступе.
А, кстати и Яндекс.Браузер какое-то время назад начал предупреждать насчет сайтов со скриптами соц. фишинга, что они опасны, так что как пользователь я лично могу им только руку пожать за такое поведение — сам LPT и ему подобные вряд ли будут использовать данные для чего-либо прям уж совсем незаконного, а вот их клиенты действительно за счет таких инструментов могут начать вдруг шантажировать своих посетителей, ну или еще что устраивать нехорошее.
Leljka
28.06.2017 21:26По поводу емейлов и телефонов — определяются только те, которые не защищены настройками приватности и в открытом доступе? Или что-то изменилось?
Как раз что-то изменилось. Определяются те, что защищены в т.чDjOnline
29.06.2017 01:15Говорят что используют базы партнёров, которые предоставляют им эти данные. То есть конечно не все там есть, но процент вырос.
WickedCat
22.06.2017 21:54Пояснение РКН от 2015 года о законности одного из таких сервисов:
«Зарегистрировавшись в социальной сети „Вконтакте“, субъект персональных данных предоставляет доступ неограниченному кругу лиц к своим персональным данным и делает их общедоступными, из чего следует, что согласие субъекта персональных данных для обработки его общедоступных персональных не требуется.
Исходя из вышеизложенного, Вы имеете право собирать и систематизировать персональные данных посетителей социальной сети „Вконтакте“, профили которых открыты и являются публичными.»
Получаем, что разъяснение РКН противоречит политике конфиденциальности vk и условиям использования vk api, или я чего-то не понимаю?
п.с. Разрешение Роскомнадзораmayorovp
23.06.2017 08:42Видимо, нарушение условий использования vk.api нарушает права vk, но не нарушает права пользователей.
EminH
Не совсем понял, vk_id это идентификатор пользователя, и его может читать любое ВК приложение без разрешения пользователя?
dive_up
vk_id в данном случае — да, идентификатор пользователя. У приложения есть доступ к данным пользователя, и, видимо, они добываются в тот момент, когда происходит обращение к vk.com/login с некоторым запросом. По крайней мере, этот момент очень бросается в глаза.
dem0n3d
Может всё таки делается ещё один запрос непосредственно к приложению? Но всё равно, почему какое то левое приложение, которому явно не давали разрешения, имеет доступ к персональным данным?