Курс по анонимности и безопасности в сети
Предыдущая глава Следующая глава

Глава 136

Сбор данных со стороны программного обеспечения

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

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

Разбирать я буду на примере Panic Button (на 2021 год - проект закрыт.) – нашей программы, где нет функционала кибершпионажа, нет инструментов для постоянного мониторинга вашей системы и сбора данных об используемых вами программах. Последнее мы будем рассматривать в главе о телеметрии – пограничном с кибершпионажем явлении. 

Возможно, вас удивила фраза про сбор информации о других программах – не удивляйтесь, некоторые приложения собирают эти данные, как правило, для борьбы с конкурентами. Например, недавно в российском сегменте агрегаторов такси случился скандал: один из старожилов рынка, Gett, заподозрил Яндекс.Такси в нечестной конкуренции.

По заверению представителей Gett, приложение Яндекс.Такси имеет скрытый функционал, с помощью которого проверяет, нет ли на устройстве пользователя приложений конкурентов, и если такие имеются, меняет ценовую политику, демпингуя их предложения. Представители Яндекс.Такси ожидаемо отвергли все обвинения.

Panic Button не собирает тайно никакой информации, однако некоторые программы вполне могут делать это. Например, приложение Uber было поймано на слежке за пассажирами, контролируя их перемещения даже после завершения поездки.

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

Какие данные собирает Panic Button о пользователе и зачем

IP-адрес

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

Более IP-адреса важны anti-DDoS и IPS (система предотвращения вторжений): например, вы начинаете сканировать наши сервера в поисках уязвимостей, система предотвращения вторжений обнаружит это и временно заблокирует ваш IP-адрес. Как я уже говорил ранее, IP-адрес не статичный идентификатор, сегодня с данного IP-адреса сидит злоумышленник, а завтра – честный пользователь, потому мы не блокируем IP-адрес дольше чем на 72 часа.

IP-адрес для большинства – синоним деанонимизации, и нет ничего удивительного, что именно IP-адрес пользователи более всего хотят скрыть от приложений. Как правило, главные надежды связаны с использованием VPN или с добавлением прокси-сервера в настройках приложения (если такая возможность есть). Могу с уверенностью сказать, что одно использование VPN не решит проблему утечки IP-адреса, приложение всегда может подключиться до запуска VPN или в обход него, особенно если с VPN-сервером будет какая-либо проблема.

А кроме того, вы просто можете забыть включить VPN. Даже если вы тридцать раз подключитесь через VPN, а на тридцать первый без него, это уже не анонимность. Говорят, местонахождение хакера Guccifer 2.0, взломавшего сервера Национального демократического комитета США, было установлено вследствие глупой ошибки: один раз он просто забыл активировать VPN перед тем, как посетить сайт. Ошибаются все, даже великие.

Добавление в настройках приложения proxy также не гарантирует защиту. Главная задача добавления proxy, с точки зрения разработчика, – соединение с сервером при наличии каких-либо ограничений, а отнюдь не анонимность пользователей.  Есть масса нюансов, известных только разработчикам программы, например, иногда приложение может игнорировать свои настройки подключения при проблемах с заданным пользователем proxy. Потому я рекомендую использовать ограничения на уровне системного firewall; мы научим вас в рамках курса управлять своими интернет-соединениями.

HWID

HWID – уникальный идентификатор устройства, генерируемый из уникальных серийных номеров компонентов компьютера: серийного номера материнской платы и модели и характеристик процессора. Разработчик сам определяет состав компонентов и алгоритм хеширования – преобразования собранных данных в какое-либо значение.

HWID позволяет уникализировать устройство, но не несет какой-либо информации о пользователе. При смене компонентов устройства, из которых генерировался HWID, сменится и само его значение.

Мы привязываем к HWID лицензию. При установке программы HWID пользователя отправляется к нам на сервер, и мы проверяем, нет ли у данного пользователя лицензии и использовал ли он пробную версию Panic Button. Если у данного пользователя есть активная лицензия, мы не будем его второй раз просить активировать программу, а если он уже использовал пробную версию, более не станем предлагать ее.

HWID используется и для ограничительных мер. Например, если пользователь был пойман на попытке мошенничества с лицензией, мы вносим его HWID в черный список, и более он не сможет на своем компьютере использовать Panic Button, по крайней мере до тех пор, пока не свяжется с нами и мы не решим наши недопонимания.

InstallID

InstallID – уникальный идентификатор установки, отправляется на сервер при каждой инсталляции программы. Данный показатель исключительно технический, никак не привязан к конкретному устройству или пользователю, только к конкретной установленной программе. При переустановке меняется, служит для отслеживания количества установок и выявления подозрительной активности.

Email

Email пользователь указывает при активации полной лицензии. Он необходим для переноса лицензии на новое устройство, а также для повторной активации в случае смены компонентов, влияющих на генерацию HWID.

Мы не проверяем актуальность указанного пользователем email, однако, указывая некорректный email, пользователь должен понимать, что может потерять свою лицензию. В случае изменения email мы храним всю историю изменений: когда, с какого IP-адреса – так делают почти все сервисы по соображениям безопасности. Если у вас каким-либо образом украдут лицензию и вы пожалуетесь нам, мы должны иметь возможность провести расследование инцидента.

История лицензий

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

Это выглядит примерно так:

HWID 875785RFJYFUYFUYD5775

13.03.2018 17:30 активирована пробная версия программы

20.03.2018 18:40 активирована полная версия программы

Версия программы

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

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

К счастью, в рамках проекта Panic Button мы не сталкивались пока с критическими проблемами. Но важно помнить, проблемы и ошибки случаются у всех, разработчику необходимо оперативно их исправлять, а пользователям вовремя обновляться.

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

Email и Jabber, на которые отправляются уведомления

Предположу, что вам не понравится это. Указанные данные остаются в логах серверов, отвечающих за отправку. Это необходимо для решения проблем: например, если уведомления не будут доходить и вы обратитесь к нам за помощью, мы должны увидеть, была ли отправка с наших серверов, и была ли она успешной. Эти данные мы удаляем по истечении трех дней, в логах нет информации, какой HWID или email у пользователя, инициировавшего запрос.

Обращения в службу технической поддержки

Обращения в службу технической поддержки из программы через API перенаправляются в сервис UserEcho, который мы используем для поддержки клиентов. Хранение передаваемой информации регламентируется политикой конфиденциальности сервиса UserEcho. UserEcho позволяет нам эффективно и быстро обрабатывать все ваши запросы.

При отправке сообщения в службу технической поддержки клиентов пользователь может добавить лог-файл программы. В этот файл попадает исключительно техническая информация об использовании Panic Button без личной информации пользователя. Какие файлы вы удаляете (название и путь), на какие контакты отправляете уведомления – эта информация никогда не попадает в лог-файл. Мы рекомендуем добавлять лог-файл при обращениях по поводу любых проблем, связанных с использованием программы.

CrashRepots

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

Эти данные вы можете отправить только самостоятельно, и хотя некоторые программы без уведомления отправляют данные о падениях на свой сервер, это считается дурным тоном. Собранные сведения содержат огромный объем информации о вашей системе; получив их, можно использовать данную информацию для подготовки адресной атаки на устройство пользователя. Понимаю, что это попахивает паранойей, но я должен вас предупредить и о такой возможности.

В случае Panic Button отправляемые нам CrashReports хранятся в облачном хранилище box.com. После решения проблемы данные удаляются, они также могут быть удалены ранее по просьбе пользователя.

Когда и как данные передаются на сервера

Основные данные отправляются при установке и активации программы: именно тогда создается и отправляется HWID, email, версия программы и другая информация, необходимая для взаимодействия программы с сервером лицензирования и обновления.

Однако и после этого периодически Panic Button (на 2021 год - проект закрыт.) связывается с управляющим сервером для проверки актуальности лицензии и версии, установленной у пользователя программы. Это происходит при каждом включении Panic Button, отправке уведомлений, а также каждые 12 часов.

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

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

Например, приложение популярного сервиса знакомств Tinder на iOS и Android шифровало соединения, но загружаемые фотографии передавало в незашифрованном виде. На практике, если бы кто-то «прослушивал» интернет-трафик пользователя, он бы получил все загружаемые фотографии. А уж по фотографии можно выяснить немало

И здесь хочется вспомнить рассказ Эдварда Сноудена в интервью The Guardian о просмотре ради развлечения сотрудниками АНБ фотографий голых девушек. Вот перевод, взятый с популярного русскоязычного ресурса Habr.

«В рядовом составе работают молодые парни 18-22 лет. Неожиданно их направляют на позицию экстраординарной ответственности, где у них есть доступ к вашим частным записям. В течение рабочего дня они наталкиваются на что-то совершенно не связанное с их работой ни в каком смысле. Например, интимные фото девушки в сексуальной позе. Но фотографии чрезвычайно привлекательные. Так что им делать? Они оборачиваются в кресле и показывают коллеге. Тот говорит: “Ух ты, это круто. Отправь Биллу посмотреть”. А затем Билл пересылает Джорджу, а Джордж отправляет Тому. И рано или поздно с секретами девушки познакомились все эти люди. Об этом никогда не сообщается в отчётах. Никто даже не знает об этом, потому что аудит тех систем проводится очень плохо. Факт в том, что ваши приватные фотографии, частные видео, записи интимных моментов вытягиваются из потоков коммуникации и передаются правительству без какой-то особой авторизации и без особой надобности, в нарушение ваших прав. Зачем это в государственной базе данных?»
Эдвард Сноуден

В случае Panic Button все собираемые данные поступают на сервер, расположенный в Амстердаме. Сразу стоит отметить, что передача всех данных от программы до сервера осуществляется по зашифрованному протоколу HTTPS.

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

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

Система знает, что нормальный пользователь делает не более трех запросов на скачивание обновлений в день, если таких запросов в логе более 100 – это несомненно атака, направленная на перегруз системы. Данные поступают системному администратору для ручной проверки, либо трафик блокируется, если соответствующее правило создано в системе безопасности.

Где и сколько хранятся данные

Данные хранятся на основном сервере в Нидерландах, принадлежащем хостинг-провайдеру Digital Ocean. Логи хранятся семь дней, иные данные – в зависимости от необходимости. Кроме этого, логи со всех серверов передаются системе предотвращения вторжений, которая обрабатывает их и хранит один месяц.

Не стоит забывать и про резервные копии. Резервные копии надежно шифруются и передаются по зашифрованному каналу на европейские сервера Amazon. Срок хранения резервных копий – шесть месяцев, после чего они удаляются. Резервные копии необходимы для восстановления инфраструктуры и возможного отката к последнему стабильному состоянию. В резервных копиях никогда не хранятся логи.

Кто имеет доступ к данным

Некоторое время назад разгорелся скандал, связанный с возможностью сотрудников Uber бесконтрольно получать данные о поездках пассажиров. Некоторые сотрудники занимались подработкой, отслеживая по заказу поездки пользователей. Отдельный интерес представляли поездки знаменитостей, например, из разоблачения стало известно, что следили за поездками известной R&B-певицы Бейонсе.

Эти данные предоставил под присягой бывший сотрудник Uber Сэмуэль Шпангенберг. Несмотря на заявления Uber о безопасности данных пользователей, похоже, ее не было, и не факт, что на сегодняшний день она есть. Особенно учитывая историю об утечке персональных данных 50 миллионов пользователей Uber и сокрытия этого факта от регулятора со стороны компании.

В случае с Panic Button у нас нет приватной информации, за исключением разве что email, мы не можем следить за пользователем, его личной жизнью, его устройством. Рядовой сотрудник технической поддержки имеет стандартный набор данных о лицензии: email, историю смены email, IP-адрес, историю активации ключей, может увидеть HWID, InstallID, может почитать историю обращений в службу технической поддержки, увидеть используемую версию программы, были ли падения приложения (информация отправляется при создании обращения через программу). Сотрудник технической поддержки может изменить email, заблокировать и разблокировать лицензию, изменить срок действия лицензии.

Сотрудник технической поддержки не имеет доступа к отправленным CrashReports и логам сервера, этим занимаются разработчики: если специалист технической поддержки помочь не может, он переадресует задачу им.

Надоело читать? Смотрите наш канал

YouTube канал от CyberYozh
Предыдущая глава
26283
Следующая глава