Мы в Postuf большие поклонники франшизы Watch Dogs - приключенческой видеоигры, в которой главный герой в лице Эйдена Пирса, имея доступ к вымышленной системе ctOS, способен проворачивать со своего смартфона разные хакерские трюки. Однажды нам стало интересно, возможно ли в реальной жизни повторить трюк звонка на телефоны находящихся рядом людей.

Оказалось, возможно:

Чтобы заставить все телефоны вокруг звенеть, необходимо всего лишь всем им (желательно, одновременно) отправить команду на звонок. Делов-то! Супер простая цель, которая не так легко достижима на практике. Отправить такую абстрактную команду можно либо непосредственно на каждый телефон, если он вас каким-либо образом "слушает", либо через посредника - сотового оператора, которого каждый девайс "слушает" по умолчанию (в зависимости от своей SIM).

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

Минусы второго способа - слишком большое число операторов и совершенно непонятно, как найти телефоны "вокруг" себя. Здесь можно было бы схитрить, воспользовавшись услугой из даркнета по получению номеров абонентов в конкретном регионе(в соте) - т.н "Зонтик", но на практике оказалось, что в реальном времени такую услугу никто не предоставляет - нужно ждать несколько дней, что делает этот способ сомнительным.

Становимся мобильным оператором

Чтобы можно было звонить мобильным устройствам напрямую, необходимо, чтобы они относились к нам как к полноценному оператору сотовой связи. Неотъемлемая составляющая любой современной сотовой сети - базовая станция (BTS), к которой подключаются мобильные устройства для дальнейшего взаимодействия с сетью. За базовой станцией может и не быть никакой реальной "сети", однако об этом абоненты никогда не узнают.

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

Существует целый ряд уже готовых реализаций 2G BTS, среди них особенно выделяются Osmocom и YateBTS. Для поднятия своей BTS также понадобится SDR-оборудование. Мы решили остановиться на наиболее доступной связке Osmocom+LimeSDR. Небольшой ресерч с использованием лишь одного гугла позволил в достаточно короткие сроки разобраться с основными концепциями GSM(2G) сети и поднять собственную "коробочную" версию сети.

Собственная мобильная сеть
Собственная мобильная сеть

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

Вышибаем абонентов из родной сети к себе

Как заставить чужие мобильные телефоны подключаться к какой-то левой сотовой сети вместо "родной", да еще и к сети более старого(небезопасного) поколения 2G? Для ответа на этот вопрос понадобилось разобраться с тем, как мобильные устройства вообще сканируют эфир в поисках базовых станций. Кратко алгоритм выглядит так:

  1. "текущее_поколение" = МАКСИМАЛЬНО_ПОДДЕРЖИВАЕМОЕ (5G, 4G, 3G, 2G)

  2. "найденные_станции" = просканируй_эфир("текущее поколение")

  3. если "найденные_станции" != пусто

    1. подключиться(лучшая_базовая_станция("найденные_станции"))

  4. иначе, если "текущее_поколение" > 2G

    1. "текущее_поколение" -= 1

    2. goto 2

И говорит нам этот алгоритм о том, что для получения абонента в свою сеть, необходимо, чтобы вокруг не было базовых станций поколений выше 2G, да еще и наша BTS должна быть самой "лучшей" из всех 2G. Проще говоря, мы должны быть единственными в округе, чтобы мобильным устройствам даже не пришлось выбирать (алгоритм выбора "лучшего" не тривиален и зависит от реализации радиомодуля).

Чтобы стать "единственной" BTS, можно заглушить сигнал от всех базовых станций вокруг. Проблема тут в том, что точечно этого сделать не получится - доступные для покупки средства глушения связи накрывают диапазоны целиком. Где тогда оставить нашу BTS?

Посмотрим, какие вообще диапазоны частот входят в стандарт GSM:

Uplink (передача данных)

Downlink (прием данных)

Европа, Азия

880 — 915 МГц (E-GSM-900)
1710 — 1785 МГц (DCS-1800)

925 — 960 МГц (E-GSM-900)
1805 — 1880 МГц (DCS-1800)

США, Канада, Латинская Америка и Африка

824 — 849 МГц (GSM-850)
1850 — 1910 МГц (PCS-1900)

869 — 894 МГц (GSM-850)
1930 — 1990 МГц (PCS-1900)

Что если притвориться для телефонов вокруг, будто бы они из привычной Европейской среды попали в Американскую? Ведь это вполне реальный кейс - их владельцы вполне себе могли отправиться в путешествие на другую сторону Земного шара.

Большинство доступных в продаже глушилок поддерживают селективное глушение полос мобильной связи. Вот фрагмент ТТХ одной из таких:

Характеристики мультичастотного подавителя
Характеристики мультичастотного подавителя

Приобретаем любой подавитель, способный заглушить связь в радиусе 10-20 метров, включаем диапазоны глушения E-GSM-900, DCS-1800, все диапазоны 4G и 3G, которые в сумме накроют всю мобильную связь в радиусе действия глушилки, за исключением американского GSM-850. А на американской полосе GSM-850 поднимаем нашу BTS:

Одинокая BTS на американской частоте
Одинокая BTS на американской частоте

После этой операции все телефоны магическим образом разделились на 2 категории:

  • те, кто беспрепятственно подключаются к BTS в течение нескольких минут после глушения (в основном Android-девайсы);

  • те, кто долго висят без сети и подключаются спустя 30+ минут после глушения (в основном iOS-девайсы).

Ждать 30 минут, пока телефон перестроится в новый режим, - слишком долго - за это время все вокруг просто разойдутся. Здесь мы пошли на вторую уловку - перенесли BTS в самое начало стандартной европейской полосы E-GSM-900 - на частоту 925.2МГц, подкрутили глушилку так, чтобы она накрывала все базовые станции в диапазоне E-GSM-900 выше BTS:

BTS в самом начале E-GSM-900, дальше все закрыто глушилкой
BTS в самом начале E-GSM-900, дальше все закрыто глушилкой

В этом случае мы смогли собрать 100% мобильных устройств в радиусе подавления на своей BTS!

Массовый звонок

На текущий момент у нас есть 1 базовая станция стандарта GSM, поднятая в самом начале европейской полосы E-GSM-900, выше которой все закрыто глушилкой. Абоненты подключаются, и с ними уже можно взаимодействовать посредством VTY-интерфейса Osmocom. Для удобства мы написали скрипт на Python, который все красиво отображает в терминале:

Список подключенных абонентов после нескольких минут работы BTS совместно с глушилкой
Список подключенных абонентов после нескольких минут работы BTS совместно с глушилкой

Чтобы звонить со стороны BTS на выбранные номера телефонов(msisdn) необходима SIP-телефония, интегрированная со стеком Osmocom. Самое быстрое решение - провести интеграцию с SIP-стеком Asterisk по официальному мануалу от Osmocom.

После этого мы можем совершать звонки абонентам на их локальные номера(msisdn) уже по мануалу Asterisk. Попробуем позвонить 1-2 абонентам с произвольного номера - звонки успешно доходят. Запускаем звонок всем подключившимся абонентам...и натыкаемся на серьезное ограничение GSM по числу параллельных звонков. Так как GSM - крайне древний и простой протокол, в основе разделения абонентов лежат принципы временнОго разделения (TDMA) в сочетании с частотным разделением(FDMA), а конфигурация Osmocom по этой части выглядит следующим образом:

trx 0 # FDMA
   rf_locked 0
   arfcn 975 # номер GSM-частоты в ARFCN-нотации (925.2МГц)
   nominal power 23
   timeslot 0 # TDMA
    phys_chan_config CCCH # Common Control Channel
   timeslot 1 # TDMA
    phys_chan_config SDCCH8 # Stand-alone Dedicated Control Channel
   timeslot 2 # TDMA
    phys_chan_config TCH/F # Traffic Channel Full Rate
   timeslot 3 # TDMA
    phys_chan_config TCH/F # Traffic Channel Full Rate
   timeslot 4 # TDMA
    phys_chan_config TCH/F # Traffic Channel Full Rate
   timeslot 5 # TDMA
    phys_chan_config TCH/F # Traffic Channel Full Rate
   timeslot 6 # TDMA
    phys_chan_config TCH/F # Traffic Channel Full Rate
   timeslot 7 # TDMA
    phys_chan_config TCH/F # Traffic Channel Full Rate

Каждый TRX(приемо-передатчик) имеет собственную несущую частоту(ARFCN) и содержит 8 тайм-слотов, каждый из которых может иметь свою конфигурацию каналов. Например:

  • CCCH - канал для непосредственного "вещания" информации о BTS и первичного обнаружения BTS мобильными устройствами;

  • SDCCH - сигнальный канал, необходим для установки звонка и рассылки SMS;

  • TCH - передача речевого трафика.

Подробно о конфигурациях каналов в GSM можно почитать здесь, а узнать их маппинг в более низкоуровневые каналы(channel combinations) в стеке Osmocom - из кода Osmocom.

В текущей конфигурации мы сможем совершать не более 6 параллельных звонков :( Даже не 8, потому что основному каналу CCCH нужен целый тайм-слот, а также еще 1 слот для минимум одного SDCCH, который нужен для установки звонка.

Увеличить число тайм-слотов возможности нет на уровне протокола GSM, попробуем тогда расшириться в плоскости FDMA - увеличить количество TRX. Благо, Osmocom дает возможность довести число TRX при использовании LimeSDR до 6 (6*8 = 48 тайм-слотов), правда после активации четырех и более TRX начинались проблемы с перегрузкой LimeSDR. Стабильная работа BTS на одном LimeSDR сохранялась при использовании трех TRX, что в сумме давало 6+8+8=22 параллельных звонка (на каждом TRX не нужно иметь служебные каналы, поэтому TRX №2 и №3 можно забить чисто речевыми каналами - TCH). Это уже было лучше, но все же недостаточно для полноценного массового звонка.

Попутно всплыла еще одна проблема, сокращающая число потенциальных звонков и связанная с глушением чужих базовых станций на полосе E-GSM-900. Дело в том, что начало границы глушения на полосе E-GSM-900 должно быть максимально выше нашей BTS и минимально ниже первой чужой станции. А согласно распределению частот мобильных операторов в России, первая "чужая" базовая станция присутствует спустя буквально пару МГц - на частоте 927.5Мгц - 3G станция UMTS, принадлежащая Мегафону.

Первая "чужая" базовая станция на полосе E-GSM-900
Первая "чужая" базовая станция на полосе E-GSM-900

Таким образом в начале полосы E-GSM-900 остается всего 927.5-925 = 2.5МГц "свободного места", а с тремя активными TRX будет занято 1.8МГц из них (каждый занимает 0.4МГц полосы и требует 0.2МГц свободного пространства после себя) - почти впритык. Однако из-за того, что границы глушилки могут "плавать" на +-1-2МГц из-за температуры окружающей среды, необходимо сместить начало границы глушения немного ниже частоты 927.5МГц - на частоту ~926МГц, чтобы обеспечить надежное закрытие базовой станции Мегафона. В этом случае последний TRX может попадать в зону глушения, и звонки будут либо обрываться, либо вообще не будут даже начинаться:

BTS с тремя TRX без глушилки
BTS с тремя TRX без глушилки
BTS с тремя TRX с глушилкой (глушилка их задевает)
BTS с тремя TRX с глушилкой (глушилка их задевает)

Здесь стало ясно, что для увеличения числа параллельных звонков придется уходить с полосы E-GSM-900. Но куда в этот раз? С полосы GSM-850 мы уже ушли из-за того, что не все мобильные устройства её сканируют. А что если совместить эти два способа?

Вытягиваем абонентов с помощью станции-"приманки"

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

BTS сообщает о своём соседе с ARFCN=128 (869.2МГц)
BTS сообщает о своём соседе с ARFCN=128 (869.2МГц)

Если, например, абонент подключился к GSM-станции на частоте 955МГц, и она сообщила, что рядом с ней есть еще одна GSM-станция на частоте 957МГц, то при внезапном исчезновении активной станции (на частоте 955МГц) абонент в первую очередь сходит в свой кэш и попробует переключиться на станции оттуда, вместо полного сканирования радиоэфира. Для абонента это банально менее энергозатратно!

Если мы поднимем одну BTS в начале европейской полосы E-GSM-900, а вторую - в любом месте американской полосы GSM-850 и заставим "европейскую" BTS сообщать о своем соседе на "американской" полосе, у нас получится провернуть трюк с "отравлением" кэша, чтобы ускорить перевод медлительных абонентов на полосу GSM-850, которую они так долго не хотят начинать сканировать. Потребуется еще один LimeSDR для запуска второй BTS.

Провернуть этот трюк мы решили следующим образом:

  1. Поднимем первую BTS с 3 TRX на частоте 869.2МГц (американская полоса), которая сообщает пока что несуществующего соседа на частоте 871.2МГц;

  2. Поднимем вторую BTS с 1 TRX на частоте 925.2МГц (европейская полоса), которая сообщает единственного соседа на частоте 869.2МГц;

  3. Собираем глушилкой абонентов вокруг - какие-то из абонентов "осядут" на первой BTS, какие-то на второй;

  4. Выключаем вторую BTS (925.2МГц) и тут же поднимаем её, но уже с 3 TRX на американской частоте 871.2МГц - теперь сосед существует у первой BTS, а перезапущенная BTS сообщает соседа на 869.2МГц;

  5. Все абоненты успешно "спустились" с 925.2МГц на 869.2МГц/871.2МГц.

Такой трюк позволил нам собрать 100% мобильных устройств в радиусе подавления на своих BTS, и вдобавок в нашем распоряжении оказалось 2*(6+8+8) = 44 таймслота под параллельные звонки. Неплохо, но можно лучше.

Звоним много и быстро

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

Начали мы с банального устранения хардкода, которым грешат ребята из Osmocom. После парочки оформленных issue стало ясно, что у ребят и без нас дел по горло, поэтому мы просто форкнули репозиторий и исправляли все находимые баги/фичи/затыки самостоятельно у себя с учетом наших потребностей (а они у нас достаточно агрессивные с точки зрения эксплуатации сетей GSM).

Оптимизация стека Osmocom под массовый звонок в сумме заняла у нас несколько месяцев - при каждом выявляемом затыке приходилось разбираться, какие механизмы GSM лежат в его основе, изучать эти механизмы и придумывать такой способ исправления, который бы не выходил за рамки протокола GSM. Ключевые milestone получились следующие:

  1. Исправление бага, из-за которого выставлялся низкий уровень усиления для BTS и базовая станция была крайне слабой, спустя пару месяцев этот баг поправили официально.

  2. Устранение дополнительного хардкода.

    1. Хардкод портов в сервисе osmo-bts, который не позволял в пределах одной системы запускать более одной BTS [git].

    2. Хардкод при выборе номера физического канала LimeSDR в сервисе osmo-trx [git].

  3. Подготовка сбалансированной конфигурации каналов для обеих BTS - такой, чтобы при массовом звонке активных звонков было не просто много(TCH), но еще и не было затыка при их массовой установке(SDCCH) [git].

  4. Добавлено равномерное распределение абонентов по двум BTS - если будет перевес на какой-то одной из них, потенциал звонка не будет реализован полностью на менее загруженной (там останутся свободные речевые каналы в то время как на соседней BTS будет их недостаток) [git].

  5. Уменьшен таймаут paging-request (своеобразный ping перед стартом звонка) с 10 до 3 секунд - в процессе сбора абонентов некоторые из них могут "отвалиться". Такие отвалившиеся абоненты занимают каналы (т.к для них тоже запускается paging-request), в результате чего не получается достучаться до всех живых абонентов [git].

  6. Реализован звонок в 2 "эшелона": сначала пускаем команду звонка тем, у кого наименьший last_seen(отклик на последний пинг), а затем всем остальным [git].

  7. Исправление бага в libosmocore, который из-за захардкоженного размера буфера не позволял единоразово отправлять команду более чем на 75 звонков. Позже выяснилось, что в проекте libosmocore на репорт также отреагировали и этот баг исправили спустя некоторое время [git].

  8. Изменен алгоритм распределения абонентов на более "умный". распределение происходит в реальном времени на основе свободных каналов у BTS, а перед звонком сначала все они пингуются с помощью механизма silent-call, чтобы понять, кто жив, а кто уже отвалился [git].

  9. Произведен "тюнинг" GSM-таймеров [git].

  10. Добавлена фильтрация двух-симочных телефонов [git].

  11. Увеличение числа звонков с 44 до 72 за счет снижения битрейта речевого канала в 2 раза - перешли с TCH/F(full-rate) на TCH/H(half-rate)[git].

  12. Произведен "тюнинг" сетевой подсистемы Linux(sysctl), активно используемой стеком Osmocom для обмена данными между сервисами(IPC) [git].

  13. Для всех входящих звонков от абонентов вешаем трубку - чтобы они не занимали ресурсы BTS [git].

  14. Внедрен pool для более оптимальной отправки paging-request(GSM-пинг) с учетом отвалившихся абонентов перед совершением звонка [git].

  15. Добавлена фильтрация технических GSM-устройств по IMEI (модемы, PoS-терминалы, IoT-устройства и т.д) перед звонком [git].

После всех этих оптимизаций мы смогли звонить всем вокруг одновременно в количестве 72 штук. В качестве бонуса, мы также внедрили рассылку SMS всем вокруг в количестве 384 штук.

По SMS самый интересный затык был в обращениях к SQLite-базе, используемой Osmocom для хранения данных об SMS - они вычитывались из базы по одному. Для нормальной GSM-сети это в общем-то приемлемо до тех пор, пока абоненты не начнут отправлять SMS чаще, чем несколько раз в секунду. Мы перетрясли все запущенные сервисы Osmocom путем отслеживания их сетевого взаимодействия с целью выяснить причину промедления. Очень "приятно" было в итоге обнаружить, как базовые принципы, применяемые при разработке веб-приложений нарушаются в чуть более хардкорных проектах - ну оно и простительно, наверное, - там разработчики все же сосредоточены немного на других вещах - например, как освоить несколько сотен страниц спецификации GSM и не оступиться в реализации.

Итоговая сборка нашего варианта BTS на базе 2 LimeSDR выглядит так и умещается в 24-литровый рюкзак:

Весь исходный код доступен в публичном репозитории Postuf на GitHub, так что при наличии желания, двух LimeSDR, глушилки подходящей мощности и чистой Ubuntu 20.04 на 8-ядерном железе вы сможете повторить описанное у себя. А для удобства мы подготовили CLI-скрипт, который предоставляет простой интерфейс ко всем подкапотным операциям.

❝ We has given you the truth. Do what you will.❞ ©

Комментарии (39)


  1. aik
    05.04.2022 12:11

    А цена вопроса какова примерно?
    Потому что 500 долларов — это одно, а 50 тысяч — совсем другое.


    1. TimsTims
      05.04.2022 12:54
      +15

      500 долларов — это одно, а 50 тысяч — совсем другое

      offtop: Из реалий современности 500 долларов = 50 000 рублей.


      1. Ritan
        05.04.2022 14:24
        +8

        Речь, полагаю была про $50000 и это - действительно совсем другое


        1. blind_oracle
          06.04.2022 11:02
          +1

          LimeSDR стоит от 300 до 700 баксов в заисимости от. Сверху к нему нужен ещё какой то промпк или что то подобно чтобы крутить Asterisk и Osmocom, ну и сам SDR.

          Так что цена сильно ближе к 50к рублей чем к 50к баксов.


  1. Maximov_psy
    05.04.2022 12:17
    +12

    Раньше ученые превращали в реальность фантастические книги, а теперь - инженеры переводят в оффлайн компьютерные игры) классно)


  1. ifap
    05.04.2022 12:38
    +19

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


  1. Xapu3ma-NN
    05.04.2022 12:39
    +1

    Регистрировали ли Вы свои глушилки в государственной комиссии по радиочастотам (ГКРЧ) ? Вроде как использование их без регистрации попадает под ст. 13.4 КоАП РФ, но это не точно.


    1. JohnySC
      05.04.2022 14:42

      Вот тоже об этом в первую очередь подумал..


    1. 13werwolf13
      05.04.2022 14:42
      +2

      хочу заметить что в статье не было ничего про использование...


      1. Xapu3ma-NN
        05.04.2022 15:15

        я не товарищ майор, но на втором видео вроде как все еще и задокументировано, когда смс в поезде отправляли)


        1. 13werwolf13
          05.04.2022 15:17
          +5

          Это постанова, свой поезд, в своей клетке фарадея, на территории за пределами границ страны)))


          1. Xapu3ma-NN
            05.04.2022 15:21
            +4

            Тяга к исследованию это здорово, но [мое субъективное мнение] с ss7 (или как в РФ называют ОКС7) органы шутить не любят. Было в одно время когда около метро стояли газельки с фемтосотами своими и глушили эфир, заставляя абонентов подключиться к своей соте, дальше номер 900, и до свиданья сбережения. История этих товарищей печальная, как у Денатора, который сын Ихтелиона)).


            1. tmin10
              05.04.2022 19:36
              +3

              Чуть подробнее, что было с номером 900? Отсылали от имени абонента смс, взяв его ид сессии и использовав на реальной соте оператора?


              1. id_potassium_chloride
                06.04.2022 16:41

                Вероятно, наоборот: имитировали звонок с номера 900, абонент видит, что это банк и верит звонящему


                1. tmin10
                  06.04.2022 21:25

                  Так это можно и проще делать, без ухищрений со своей базовой станцией...


    1. Uvu
      06.04.2022 09:33

      Тоже интересно что вообще в плане закона...


      1. ibrin
        06.04.2022 15:35

        Fair use. Если не хулиганить, не извлекать выгоду, не ломать инфраструктуру связи, не создавать пострадавших и не палиться, то всё законно.


  1. zuek
    05.04.2022 13:29
    +3

    Задумчиво: ...этаким макаром ведь можно в метро фейковые СМС от тревожных служб рассылать... не, бред!


    1. vGimly
      05.04.2022 14:50
      +4

      Почему только метро? А как же клубы, аэропорты, вокзалы, торговые центры, стадионы... Главное чтобы было достаточно для ваших целей людей и желательно расположившихся компактно. Хотя и из "компактно" может быть вам нужен кто-то один. И "компактно" можно заменить 1 базовой станцией и десятком тюнингованных глушилок распределённых по площади.

      Девушка, а какой у вас IMEI или IMSI - я вам позвоню?

      Алё, это служба безопасности Сбербанка. Я УЖЕ У ТЕБЯ ЗА СПИНОЙ!

      Автосигнализации и охранные системы с активацией через СМС? Безопасность GSM...


  1. titbit
    05.04.2022 13:39
    +2

    Спасибо, вы еще раз доказали, насколько «дырявый» с точки зрения безопасности протокол GSM.
    А что делать с телефонами, которые залочены на европейские частоты, и не видят американские (или переключаются вручную/по GPS)? Что делать с телефонами, у которых «голос» выключен, т.е. они используют только мобильные данные в т.ч. и для звонков? Что делать с телефонами залоченными на конкретного оператора (ваш фейковый не заключал договор о роуминге с ним, а может и вообще роуминг не поддерживает)? Да и еще куча случаев бывает, так что насчет «100% телефонов» вы явно погорячились.


  1. yoz
    05.04.2022 15:12
    +1

    Очередное подтверждение необходимости переработки старых протоколов связи.


  1. Tyusha
    05.04.2022 15:35
    +12

    Можно глупый вопрос: а зачем вам это? Такие затраты времени, сил и денег. Из чистого любопытства?


  1. LuigiVampa
    05.04.2022 16:17
    +10

    Годное и интересное исследование, спасибо.

    Меня вот всегда удивляет и сильно расстраивает то, что в прошивках радиомодулей большинства смартфонов на базе андроид которые я видел настройки, и видимо интерфейс взаимодействия с радио со стороны самой ОС, устроены так, что можно выбрать ИЛИ только старые стандарты связи, ИЛИ новые + старые, но почему-то нельзя выбрать конкретно только новые, ну или хотя бы отключить именно 2G. Например прямо сейчас смотрю на свой старый андроид и там в настройках возможные варианты: "2G/3G/LTE", "2G/3G", "Только 2G". На айосах вообще не видел возможности настроить это руками.

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

    Об уязвимостях 2G/EDGE известно уже очень много лет, все понимают что это ненадёжная, уязвимая технология. Да, она выгоднее в удалённых местностях, потому что позволяет покрыть большую территорию связью, правда достаточной только для совершения голосового звонка, интернет на ней - слишком медленный, современные браузеры считают такую низкую скорость == "нет связи". Но она небезопасная - ей пользуются злоумышленники. Было бы очень правильно дать пользователю возможность выбирать самому какими технологиями связи ему пользоваться, а какими нет, дать возможность выбирать использовать 2G если живёт в глухом лесу, или отключить чтобы избежать спуфинга БС.

    Всё это похоже либо на полное разгильдяйство и нежелание что-то делать со стороны производителей, либо на сознательное вредительство, потому что у государств по всему миру уже налажена работа устройств для подмены БС в основном именно под 2G. Если уж даже спекулировать на тему того, что поддельные БС нужны товарищу майору, ну сделайте вы 3G или LTE. Владея ключами от ОПСОСа, а в реалиях России, они давно слились с государством, можно поднять фейковую базовую станцию и на этих технологиях. Будет товарищ майор контролировать линии связи, но по крайней мере этого не будут делать злоумышленники.

    Справедливости ради - на некоторых телефонах можно отключить 2G, и даже 3G и оставить только LTE, но таких моделей - абсолютное меньшинство. Получается как с WiFi. Вроде 2022 год на дворе, а у людей до сих пор на домашних роутерах включён по умолчанию WPS, часто ещё и без защиты от перебора, или с утёкшими алгоритмами расчёта пинов, что позволяет ломануть его прямо с мобилы за 10 секунд, хотя о этих возможностях все также знают уже очень много лет


    1. clawham
      05.04.2022 16:40
      +3

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


      1. LuigiVampa
        05.04.2022 17:05

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

        Небезопасность и уязвимость 2G известны и очевидны абсолютно всем. Исправить это - совершенно не сложно. Так вот и живём


    1. PereslavlFoto
      05.04.2022 17:19
      -3

      до сих пор на домашних роутерах включён по умолчанию WPS, часто ещё и без защиты от перебора, или с утёкшими алгоритмами расчёта пинов
      Но ведь другого-то способа бесплатно подключиться к Wi-Fi не существует. Поэтому названный вами способ — это единственный шанс на бесплатный доступ к интернету.


    1. titbit
      05.04.2022 19:22

      интерфейс взаимодействия с радио со стороны самой ОС, устроены так, что можно выбрать ИЛИ только старые стандарты связи, ИЛИ новые + старые, но почему-то нельзя выбрать конкретно только новые

      Официально это для «совместимости», потому что вдруг роуминг какой-нибудь будет или еще что. А неофициально все это выключается на многих андроид телефонах, надо только копнуть чуть глубже (зависит от производителя модема). Только это мало кому надо, как впрочем и вся эта безопасность, поэтому в телефонах очень много сомнительных решений по части безопасности…

      p.s. бывает сами операторы идут навстречу, у некоторых нет 2G в принципе, типа tele2 в Мск.


      1. AVX
        05.04.2022 21:23

        Сейчас посмотрел в своём redmi note 8t - там можно выключить автоопределение, и выбрать вручную нужную сеть - сейчас у меня доступно мегафон 4G, мегафон 3G и мегафон 2G, и куча аналогичных других операторов (с припиской - запрещено). То есть можно выбрать либо 2, либо 3, либо 4. Кроме этого, отдельно выбирается тип интернета "предпочтительно 4G" (3, 2 соответственно).

        В самсунге 2016 года было вроде бы можно выбрать 4, 4/3, 3, 3/2, 2. То есть, практически всё что надо.

        И даже на nokia c5-00 можно было выбрать 3, 3/2, 2 (и ещё какой-то вариант, не помню что там).

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


    1. eimrine
      05.04.2022 19:52
      +1

      2G/EDGE
      правда достаточной только для совершения голосового звонка, интернет на ней — слишком медленный, современные браузеры считают такую низкую скорость == «нет связи».
      Ну, это не совсем правда. На GPRS всё работает прекрасно, кроме интерактива и мультимедии. EDGE хотя бы 1 полоска это уже возможность слушать подкаст «Радио-Т» почти без прерываний и одновременно чатиться в IRC. То состояние «нет связи» это протокол который был до GPRS, кажется он называется CSD; там суть в том что HTTPS не может сделать handshake, потому что нужно в короткое время сделать несколько последовательных передач которые не укладываются в тайм-аут CSD. И то, до сих пор существуют сайты только по HTTP (иногда там даже есть авторизация).


    1. evstropov_dv
      06.04.2022 09:31

      Было бы очень правильно дать пользователю возможность выбирать самому какими технологиями связи ему пользоваться, а какими нет, дать возможность выбирать использовать 2G если живёт в глухом лесу, или отключить чтобы избежать спуфинга БС.

      Баба маня с соседнего подъезда тогда полбу даст :) Не хочецца :D

      Интернет, а он нам и на*** не нужон интернет ваш...

      Мало кто готов платить за прогресс. Тех, кто понимает и того меньше...

      Всё это похоже либо на полное разгильдяйство и нежелание что-то делать со стороны производителей

      Не уверен, но мне кажется, что убытки от 2Г мошенников для ГОСов меньше, чем затраты на переустановку и наладку оборудования в удаленных районах. Благо, туда хотя бы 4Г приходит.

      Тушить пожары экономически не выгодно

      Надеюсь, мой посыл понятен. Спасибо


  1. intelligentpotato
    05.04.2022 21:10
    +5

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


  1. Nehc
    06.04.2022 08:44
    +1

    В хроме какой-то баг в секции с видео… Или это не баг, а фича? ;)

    Или это только у меня?


  1. orgus
    06.04.2022 09:38
    +1

    Спасибо, за интересное чтиво. Вот прям как в старые добрые времена, ни чего не понятно, но очень интересно :) ради подобных статей когда то и зашёл на Хабр.


  1. v_chaplyak
    06.04.2022 09:47

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


    1. SlimShaggy
      06.04.2022 11:23
      +1

      А как по-вашему работает роуминг? Если домашней сети нет - будет пытаться подключиться к тем, что есть, да.

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

      Потому что второй отказывается ее регистрировать в сети, в отличие от поддельной БС (вернее, регистрирует в режиме только экстренных вызовов).


  1. Veresk
    06.04.2022 09:48

    Забавная игрушка, но работать будет далеко не в 100% случаев. Во-первых вам для начала нужна область без 4G и вышек, работающих на релизах 3GPP выше 11. Во-вторых, вы серьезно думаете что БС операторов вас не пеленгуют? С вашей мощностью вы светится будете в диапазоне как новогодняя елка. Как пример уязвимости 2 фазы GSM - неплохая лабораторная работа.

    В реальности - весьма чреватое развлечение: нарушение правил выходы в эфир, создание помех для коммерческих систем связи.

    Если первое - вопрос пеленгаторов, то второе в зоне развернутой сети - гарантированно обнаруженный факт, если конечно оператор(ы) вышек не отрубили вообще логирование.


    1. dinam
      06.04.2022 17:09

      слышал, что операторские соты начинают принудительно глушить нарушителя, залезшего на их диапазон


  1. TedBeer
    06.04.2022 12:27

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


    1. dinam
      06.04.2022 17:07

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