Защищаемся от трекеров на мобильных платформах
Многие пользователи сталкиваются с отслеживанием в интернете повседневно. Одним из самых явных и крупных следствий является таргетированная реклама. Любой, кто хоть раз имел дело с такими гигантами как, например, Google AdWords, знает насколько обширны настройки целевой аудитории, доступные рекламодателю.
Особенные опасения вызывает мобильный таргетинг, который к обыкновенным сведениям прикрепляет геолокацию и время пользователя. Вопрос о защите приватности в интернете на мобильных устройствах возникает у многих пользователей.
Как происходит отслеживание пользователей
Взаимодействие с трекер-сервисом обычно происходит отдельно от подгрузки контента приложения или веб-страницы. В зависимости от контекста идентификации, собирается отпечаток устройства на основе доступных параметров: серийные номера компонентов, особенности конфигурации, результаты бенчмарков и прочее. После идентификации на удаленный сервер посылается запрос, содержащий отпечаток и полезную информацию о пользователе.

Есть только один способ избежать идентификацию в целях таргетированной рекламы — перехватить обращение к стороннему сервису.
Идентификация трекеров
Для идентификации трекера можно использовать существующие списки доменов (disconnectme). При отправке пакетов с устройства проверять адрес назначения, и блокировать пакеты если они должны были попасть на трекер.
Есть сложные решения (Pi-hole и другие), но нам преимущественно интересны Android и iOS.
Фильтрация трафика на Android
Один из способов – конвертировать доменные имена трекеров в IP-адреса и блокировать их с помощью iptables. Принципиальная проблема такого подхода – необходимость root-прав для выполнения, так как Android не дает прав на модификацию параметров брандмауэра. Но есть способ обойти это ограничение без root.
Если выделить весь трафик в отдельный виртуальный слой позволяющий фильтрацию на уровне приложения. Такой способ существует. С помощью VpnService можно создать локальный VPN, посредством которого можно фильтровать трафик по необходимым параметрам. Для реализации мы можем создать три очереди: сеть-устройство, устройство-сеть-tcp, устройство-сеть-udp. Сырой входящий/исходящий трафик записывается в очереди. Посредством четырех объектов TcpIn, TcpOut, UdpIn, UdpOut обрабатывать пакеты, в том числе утилизируя не проходящие проверку. Пример реализации можно посмотреть на Github (LocalVPN).
Фильтрация трафика на iOS
Для фильтрации трафика будем использовать NetworkExtension.
Как и на Android, ОС не дает нам прямого доступа к настройке брандмауэра. Но при этом есть возможность задать фильтр для сетевого контента из коробки посредством NEFilterControlProvider и NEFilterDataProvider. Мы данный вариант рассматривать не будем, так как Content Filter Providers работают только в контролируемом (supervised) режиме, из-за чего публикация такого приложения в AppStore становится невозможной. Если же такой подход интересен можно рассмотреть пример рабочего приложения на Github (sift-ios, FilterControlProvider, FilterDataProvider).
Для нашего решения мы также будем использовать локальный VPN. В NetworkExtension есть три варианта работы с VPN.
Personal VPN. Использует только встроенные протоколы. Нам это не подходит, так как необходим пользовательский протокол.
App Proxy Provider. Используется для создания пользовательского потокоориентированного VPN протокола. Для нас важна фильтрация отдельных пакетов, что приводит нас к.
Packet Tunnel Provider. Используется для создания пользовательского пакетоориентированного VPN протокола. Мы будем использовать именно его.
Для реализации мы наследуемся от NEPacketTunnelProvider. При запуске тоннеля нам необходимо указать конечную точку – укажем в её качестве локальный прокси сервер, для этого можем использовать, например, GCDHTTPProxyServer, так как он используется в примере который я приведу позже. С помощью прокси сервера на выбор мы утилизируем не нужные нам пакеты. Рабочий пример приложения с использованием NEPacketTunnelProvider и GCDHTTPProxyServer на Github (lockdown-ios PacketTunnelProvider).
Проблема приватности, при использовании удаленного VPN
Во всех примерах выше опускался вариант простого подключения к удаленному VPN, на котором настроена фильтрация. Такой вариант имеет серьезные плюсы – простоту создания клиентов под любую систему (на которой есть возможность использовать VPN) и возможность скрыть фильтры. Но критическим минусом является необходимость проводить трафик через сторонний удаленный сервер. Это требует наличия сетевой инфраструктуры и вызывает недоверие пользователей (так как трафик проходит через сторонний сервер для фильтрации). Данный вариант хоть и имеет свое место и значимость, но не является целью данной статьи.
Несколько слов в заключение
Сегодня мы рассмотрели способы реализации фильтров трафика для ОС Android и iOS. Рассмотрели самый не ограничивающий способ – локальный VPN и основы его реализации с примерами готовых продуктов и примеров. Для этого мы воспользовались возможностью создания пользовательских протоколов VPN. С их помощью мы с прикладного уровня получили доступ к сетевому, что позволило нам применить фильтр к входящим/исходящим пакетам. Фильтр мы основываем на черных списках доменов трекеров, доступных в сети интернет.
Статья подготовлена для Telegram канала @paradiSEcurity.
- tracking protection
- android development
- ios development
- vpn
Как запретить входящий трафик android
Все хорошо в андроиде для меня, кроме этой проблемы. Так как я часто бываю в международном роуминге, для меня это просто катастрофа. поэтому пользуюсь пока WM, но очень хочется перейти на android.
Насколько я понял есть только одна програма ограничивающая доступ выбранным программам в интернет это DroidWall , но вопервых она требует рут права, а ходить под рутом в интернет это довольно опасно, насколько я помню по линуксу. Ктомуже она не работает на многих девайсах, и требует перепрошивки на ту в которой есть нужная библиотека. например на самых интересных девайсах, как то desire или nexus one, она неработает.
О проблеме утечки я узнал довольно давно прочитав эту новость
и даже начал топик тут, но безрезультатно. И насколько я понял, за все прошедшее время проблема так и не решена, или я ошибаюсь?
Возможно ли найти решение сидеть по gprs например в icq, и небояться утечки трафика от других приложений или от самой ос ?
И страно что если проблема не решена, почему она активно не обсуждается?
———
зы Добавил опрос, может это поможет определить величину проблемы
Сообщение отредактировал Ru4kin — 16.07.18, 16:52
Скрыть опрос и шапку
25.04.16, 01:43 | #1442
●
Постоянный
Реп: ( 8 )
okouser @ 25.04.2016, 00:47
если бы это того стоило, мог бы запилить видео – в строке уведомлений Internet Meter показывает 700 кб/с, а во включённом AFWall+ все квадратики пусты.
мир полон волшебства, короче.
okouser @ 25.04.2016, 00:47
®Network Log
удивительное дело: все стоявшие и стоящие мониторы регистрируют входящую активность 0.7 – 1.1 мб/с, а Network Log и Network Connections ничего такого не видят. фиксируют какие-то мелкие байты от разных программ/служб.
рациональное объяснение феномену есть, но я уже почти поверил в барабашку.
остаётся вариант hard reset’а и установки программ под одной, чтобы хоть как-то попытаться определить причину?
Сообщение отредактировал paradimov — 25.04.16, 01:47
25.04.16, 13:22 | #1443
●
Постоянный
Реп: ( 862 )
paradimov @ 25.04.2016, 00:43
рациональное объяснение феномену есть
Не знаю, очень странно это.
Может, конечно, у вас какой-нибудь троян с рут-правами завелся.
В AFWall точно стоит режим белого списка?
Не используете что-то, связанное с VPN, блокировщики рекламы?
25.04.16, 17:28 | #1444
●
Постоянный
Реп: ( 8 )
okouser @ 25.04.2016, 13:22
AFWall точно стоит режим белого списка?
оба варианта пробовал: белый с unchecked квадратиками и чёрный с checked. каждый раз результат проверял на браузере – работает.
okouser @ 25.04.2016, 13:22
Не используете что-то, связанное с VPN, блокировщики рекламы
чистая система. ставятся только Internet Meter, AFWall+ и Network Connections.
пишу эти строки, а фоном «Тот самый Мюнхгаузен» в IPTV плеере по «Культуре». закрываю окно и – о, чудо! – сетевая активность на планшете(!) становится равной нулю(!).
это просто жжесть какая-то.
25.04.16, 19:07 | #1445
●
Постоянный
Реп: ( 862 )
paradimov @ 25.04.2016, 16:28
пишу эти строки, а фоном «Тот самый Мюнхгаузен» в IPTV плеере по «Культуре». закрываю окно и – о, чудо! – сетевая активность на планшете(!) становится равной нулю(!).
Сумбурно как-то.
Вас удивляет, что IPTV-плеер использует трафик даже в фоне?
10.05.16, 19:15 | #1446
●
Постоянный
Реп: ( 43 )
Файл hosts в Android: блокировка нежелательных Интернет-загрузок
hosts – файл, содержащий список доменных имен и сопоставленных им IP-адресов, имеющий приоритет перед запросом к DNS-серверам.
Имя файла: hosts (без расширения).
В Android расположен в директории: /system/etc/ Права на файл (CHMOD): 644 (-rw-r-r—) Доступ к этой директории возможен лишь при наличии root-прав, но стоковый файловый менеджер скорее всего все равно не пустит в эту директорию, необходимо поставить альтернативный, например Total Commander.
Строка может содержать только один IP-адрес и одно или несколько имен хостов.
Строка, начинающаяся со знака # является комментарием и не обрабатывается, например: #104.20.8.191 4pda.ru
Чтобы заблокировать доступ, например, к хосту 4pda.ru, в файл hosts необходимо внести следующую строку: 0.0.0.0 4pda.ru
Заблокированный таким образом домен теоретически будет недоступен для любого системного процесса или программы, запущенных на устройстве. Почему теоретически? Потому что возможны два обходных пути:
1. К домену можно обратиться напрямую по его IP-адресу и тогда обращение к файлу hosts не происходит.
2. Известно, что в ОС Windows IP-адреса некоторых серверов Microsoft «вшиты» разработчиком непосредственно в системные DLL и обращение к ним происходит минуя запрос к файлу hosts. (Мне) неизвестно, используется ли такая же практика в Android, но может использоваться.
Зачем на самом деле нужен файл hosts?
Он служит для «принудительного» сопоставления имени хоста IP-адресу, исключая необходимость соответствующего запроса к DNS-серверам. Возможность блокировки с его помощью обращений к нежелательным хостам – «побочный эффект», а не основное назначение этого файла.
Каково содержание файла hosts в Android по умолчанию?
127.0.0.1 localhost
Какие бы строки не добавлялись в файл, эта должна оставаться первой и неизменной.
Часто встречается рекомендация сопоставлять нежелательные доменные имена IP-адресу 127.0.0.1, а не 0.0.0.0 – почему?
Это некорректная рекомендация. IP-адрес 127.0.0.1 обозначает то самое устройство, с которого и производится запрос. Условно говоря, создается «петля», имитирующая обращение к устройству из внешней сети: сделаем вид, что вышли в сеть, и обратимся сами к себе как бы «снаружи». Такой запрос может создать проблемы, если на компьютере установлено ПО, ожидающее обращений из сети. Кроме того, он занимает больше времени, поскольку это запрос, на который должен прийти какой-либо содержательный ответ.
Запрос к IP-адресу 0.0.0.0 в контексте файла hosts означает обращение к несуществующему адресу. Т.е. обратившаяся по такому адресу программа получает ответ не «нет ответа от хоста», как в случае с 127.0.0.1, а «такого адреса не существует».
Можно ли в использовать «маски», подстановочные знаки и т.п.?
Нет, они не поддерживаются в файле hosts в Android. Можно указывать только конкретные доменные имена, которые следует сопоставить конкретным IP-адресам. Т.е. конструкция
0.0.0.0 *.4pda.ru не будет работать.
Можно ли через hosts заблокировать IP-адрес?
Нет, конструкция типа 0.0.0.0 123.456.789.0 не даст никакого эффекта.
Блокируется ли вместе с доступом к указанному доменному имени и доступ к его поддоменам?
Нет, придется перечислять все поддомены поименно. Т.е. конструкция 0.0.0.0 4pda.ru заблокирует доступ только к самому домену 4pda.ru, доступ, например, к s.4pda.ru останется открыт. Более того, домен www.4pda.ru – это тоже поддомен и доступ к нему придется блокировать отдельно.
Почему мой файл hosts прекрасно работает под Windows, а под Android – нет?
В Windows и Android используются разные символы для обозначения переноса строки. Файл hosts, используемый в Windows, можно использовать и в Android, предварительно сохранив в правильном формате. Сделать это можно с помощью любого текстового редактора, умеющего при сохранении заменять символы переноса строки, например – Notepad++ (Edit – EOL Conversion – UNIX/OSX Format).
Есть ли предельный размер файла hosts?
Теоретически – возможно, есть. На практике Android с файлом hosts размером 0,5 Мб прекрасно работает.
Какие еще инструменты для блокировки нежелательных интернет-соединений существуют под Android?
Netfilter/iptables – встроенный в ядро Android файрвол и утилита для управления его правилами. Рекомендуется только для квалифицированных пользователей.
Сторонние файрволы, например, Android Firewall с помощью которых можно полностью заблокировать доступ в Интернет определенным программам.
Можно ли с помощью hosts запретить доступ к хосту только определенной программе?
Нет, к занесенным в hosts хостам будет запрещен доступ сразу всем программам.
В чем отличия в блокировке нежелательных хостов с помощью hosts и файрвола?
В hosts блокируется доступ всем программам только к перечисленным в этом файле хостам. Файрвол (не вообще любой, а существующие на сегодня для Android) блокирует доступ только указанным в нем программам к любым хостам (т.е. блокируется их доступ в Интернет). Эти два способа не заменяют друг друга, а дополняют.
С помощью Netfilter/iptables теоретически можно создавать правила, аналогичные прафилам файрвола на десктопах, например запретить только определенной программе доступ только к определенным хостам, а к остальным – разрешить. Но вы либо и так знаете, как это сделать, либо вряд ли сможете 😉
Как сэкономить мобильный трафик: полезные советы

Мобильный интернет не настолько дорогой чтобы серьезно задумываться об экономии трафика. Однако если активно пользоваться мобильной сетью для выхода в интернет, то гигабайты могут закончиться очень быстро, тем более, что в самых дешевых тарифах обычно включено не так уж много трафика.
Плюс не все пользователи выбирают безлимитные тарифы, а часто пользуются стандартными пакетами, которых может не хватить на целый месяц
Конечно, нужно понимать, что никакие советы не помогут, если ваш тариф составляет 5 гигабайт, а вы тратите все 10. В этом случае лучше выбрать другой тарифный план.
Однако Gazeta.ua собрала подборку советов, которые помогут оптимизировать расход трафика, чтобы интернет не закончился в самый ответственный момент.
Отслеживайте потребление
Прежде всего, нужно отследить потребление. Для контроля за расходом трафика можно использовать как системные настройки, так и специальные программы.
В настройках можно найти функцию «Экономия данных», которая ограничит использование трафика для приложений, работающих в фоновом режиме или закрытых. Это позволит, например, снизить качество входящего потока для программ, ориентированных на видео.
Выключите фоновое автообновление
Следующий шаг – отключить фоновое автоматическое обновление. Некоторые приложения могут быть обновлены в фоновом режиме без предупреждения пользователя. Это может значительно увеличить расход мобильного интернета.
После отключения автоматического обновления внутри программы все будет подгружаться медленнее, но лишних затрат больше не будет.
На iOS нужно зайти в «Параметры» → «Основные» → «Обновление контента». Деактивируйте то, что вам не нужно регулярно в течение дня. Обновление мобильной сети можно полностью запретить. На Android зайдите в настройки и выберите «Передача данных». Для каждого приложения можно отключить фоновый режим.
Выключайте мобильный интернет, когда он вообще не нужен
Если вы вообще не планируете пользоваться интернетом, то можно просто отключить передачу мобильных данных. Так ни одна программа или сервис не смогут потратить ничего лишнего. Проще всего это сделать из «Пункта управления» в правой шторке как на iOS, так и на Android. Просто деактивируйте кнопку мобильного интернета.
Настройте использование трафика в мессенджерах
В мессенджерах можно настроить хранение файлов в памяти так, чтобы на их загрузку не тратился лишний трафик. Например, у WhatsApp, Telegram и Viber получится отключить автовоспроизведение и автозагрузку медиа.
Также у WhatsApp и Viber доступна регулировка качества загрузки фотографий. В Telegram можно установить конкретный лимит на автоматическую скачку для любых типов файлов.
В WhatsApp все манипуляции производятся через меню «Настройки» → «Данные и хранилище». В программе Telegram выберите раздел «Настройки» → «Данные и память». А в Viber перейти по пути «Еще» → «Настройки» → «Данные и мультимедиа».
Используйте облегченные версии программ
Наиболее популярные сервисы выпускают облегченные версии программ, потребляющих меньше ресурсов смартфона. Многие популярные приложения для Android имеют альтернативные версии, которые занимают меньше места на телефоне и потребляют меньше трафика
Это также актуально для владельцев старых смартфонов с небольшим количеством внутренней памяти и бюджетным «железом».
Включите режим низкого потребления трафика в браузере
Многие современные браузеры, такие как Google Chrome и Opera, предлагают встроенную функцию экономии трафика или «Турбо-режим».
При ее активации все запросы с устройства отправляются на серверы, созданные разработчиками браузера. Это позволяет ускорить загрузку страниц и оптимизировать контент для экономии трафика.
Загружайте данные для приложений через Wi-Fi
Некоторые программы могут работать в автономном режиме. В музыкальных приложениях можно переключить загрузку треков только через Wi-Fi и слушать их из локального хранилища.
На iPhone снятые фотографии и видео высокого качества лучше синхронизировать с облачным хранилищем только по Wi-Fi. Для этого перейдите в параметры «Фото» и выключите «Мобильные данные» и «Неограниченные обновления».
Каждый день мы используем смартфон для разных целей, в том числе для интернет-серфинга, покупок на онлайн-платформах и так далее.
Это означает, что смартфон ежедневно подвергается риску быть взломанным: случайное нажатие на какой-нибудь рекламный баннер вполне может привести к потере персональных данных, денег и других ценных активов.
Взлом также влияет на работу гаджета, что вызывает определенные неудобства. Gazeta.ua собрала список самых распространенных признаков, которые могут свидетельствовать о том, что ваш мобильный телефон был взломан.
Как сэкономить мобильный трафик
Если вы часто пользуетесь мобильным интернетом, и он ну очень быстро кончается, я сегодня подскажу вам, как немного сэкономить расход интернета. Не все выбирают для себя безлимитный тариф и часто пользуются каким-либо стандартным пакетом гигабайт, которого в итоге может не хватить. Давайте разберемся, как можно подэкономить мобильный интернет и пользоваться им каждый день. Эти советы, конечно, полностью не сэкономят трафик, но точно помогут оптимизировать расход мобильного интернета.

Ограничить потребление трафика для установленных приложений
Для начала необходимо определить, какие приложения больше всего потребляют мобильный трафик. Это очень просто обнаружить в настройках вашего гаджета.
Если вы обладатель смартфона на Android, то все траты трафика можно посмотреть в меню: «Настройки» — «Мобильные сети» — «Передача данных». Там вы сможете найти всю статистику о вашем исходящем трафике. Ну а если у вас «яблоко», то все необходимые данные можно найти так: «Сотовая связь» — «Параметры данных» и активировать режим.
Там же можно найти функцию «Экономия данных». Данная функция поможет ограничить использование трафика для приложений, которые закрыты, или открыты в фоновом режиме. Таким образом, например, для приложений связанных с видео, данная функция просто снизит качество входящего потока.
Отключить фоновое автообновление
Некоторые приложения могут обновляться без уведомлений, находясь в фоновом режиме. Это, конечно, увеличит расход вашего мобильного интернета. Если отключить эту функцию, то приложение может и загружаться, но довольно долго, что тем самым поможет сэкономить расход трафика.
Чтобы выключить функцию автообновления в iPhone, необходимо перейти в «Настройки», далее открыть «Основные» и найти там «Обновление контента». Теперь вы сможете выбрать и отключить то, в чем вы не нуждаетесь каждый день.
Для владельцев Android все еще проще: необходимо в настройках найти «Передачу данных», где можно также выбрать все необходимые приложения и выключить фоновый режим.
Загружать данные через Wi-Fi
Различные приложения можно скачивать в удобное вам время, а потом продолжать пользоваться уже без подключения какого-либо интернета. Это могут быть приложения с картами, или различные музыкальные проигрыватели.
Для того чтобы сэкономить мобильный интернет, воспользуйтесь WiFi для загрузки подобных приложений. Также в некоторых музыкальных проигрывателях можно обозначить в настройках загрузку треков или альбомов только через WiFi. Таким образом, можно не переживать, что новая музыка начнет подгружаться в проигрыватель при включенном мобильном интернете.
Отключать мобильный трафик
Ну и конечно самый лучший способ сэкономить – это отключать мобильный интернет, когда он не нужен. Многие забывают это делать, но даже если вы не заходите в соц сети, не смотрите видео, а интернет включен, то мобильный трафик все же тратится.
Так что можно отключать мобильный интернет на ночь, во время учебы – когда в интернете нет никакой необходимости.
Понизить качество видео и аудио
Также хорошим решением для экономии трафика будет уменьшение качества аудио и видео данных. Во многих приложениях индивидуально можно настроить параметры просмотра видео, или прослушивания аудио.
Вот с такими простыми и нехитрыми советами вы сможете экономно распоряжаться своим мобильным интернетом и сэкономить не один гигабайт трафика.
