mnc что это такое в телефоне
Что такое MNC/MCC их обозначение
Все мы пользуемся мобильными телефонами, модемами и название сети отображённое на дисплее мы воспринимаем как должное. Но что за ним скрывается? Как девайс узнаёт имя сети? Об этом мы сейчас и узнаем.
Помогают во всём этом коды MNC и MCC.
Уникальный идентификатор Mоbile Network Code (MNC) в сочетании с кодом MCC используют операторы сотовых сетей CDMA, GSM, UMTS, IDEN, TETRA, а также некоторые операторы спутниковой связи. Мобильные коды стран определяет рекомендация Е.212 от ITU-T.
Зарегистрированный в сети телефон (укомплектованный SIM картой) получает MCC и MNC, на основании которых аппарат определяет, какую информацию о сети показать абоненту. При этом выполняется следующий алгоритм действий:
1. Если в хранящемся на SIM-карте списке сетей обнаружена пара (MNC, MCC), то на экране мобильного телефона отображается выбранное из списка «имя сервис-провайдера».
2. Если на SIM-карте пара (MNC, MCC) не была обнаружена, то телефон выполняет её поиск в собственной таблице, хранящейся в прошивке аппарата. В случае успешного выполнения операции аппарат отображает информацию на дисплее.
3.Если пара (MNC, MCC) не была найдена ни в телефоне, ни на SIM-карте, то на дисплее мобильного идентификаторы MCC и MNC будут отображаться в виде цифр.
Код Mobile Nеtwork Code является частью уникального международного номера IMSI, по которому происходит идентификация абонента в сети. Благодаря MNC появляется возможность определить, к какому оператору относится мобильная станция. Код MNC при помощи трёх цифр обозначает конкретную GSM PLMN, расположенную в пределах данной страны.
Типичным идентификатором абонента Украины будет являться номер IMSI (255 01 9876543210), где MCC обозначен первыми тремя цифрами (255), а MNC – двумя последующими (01). Остальными цифрами обозначают HLR и ID пользователя.
И ещё один момент, в последнее время симкарты могут обновлять эту таблицу из эфира. С помощью так называемого SIM Toolkit. Софт для симкарты может браться из эфира с помощью SMS или Cell Broadcast’a. Вот по этому в России на USB модемах Huawei вместо имени TELE2 может быть название MOTIV.
Как работает роуминг — международный, национальный, аварийный
Поведение телефона в роуминге иногда кажется не совсем понятным и предсказуемым, например, в части выбора сети.
Прежде всего, изложенное далее относится не только к телефонам, но ко всем мобильным терминалам GSM-UMTS-LTE – планшетам, модемам, роутерам и так далее. Для понимания процесса важно, что на каждой базовой станции есть приемопередатчик, который постоянно передает радиосигналы, содержащие «системную информацию». Системная информация сгруппирована в системные сообщения (в сети GSM) или системные блоки (в сетях UMTS и LTE), несущие информацию, необходимую мобильным станциям для того, чтобы ориентироваться в обстановке и принимать решения для выполнения тех или иных действий при получении доступа к услугам и работе в сети мобильной связи.
Далее для простоты будем считать, что это всё работает и на базовых станциях, и в телефоне, предоставляя вышележащим уровням программного обеспечения в телефоне необходимую информацию.
Включаем телефон и…
Итак, прилетев в другую страну, мы включаем телефон, чтобы получить доступ к услугам мобильной связи.
После включения для получения доступа к услугам мобильной связи телефону необходимо выполнить целый ряд задач. Для ускорения доступа к услугам, некоторые задачи выполняются параллельно, но есть несколько ключевых процедур, которые должны быть обязательно выполнены.
А какие сети работают в округе?
Очевидно, что для доступа к услугам телефону необходимо установить канал связи с одной из базовых станций. Для этого телефон должен выполнить поиск сигналов базовых станций для всех поддерживаемых им технологий радиодоступа и во всех поддерживаемых диапазонах частот. Понятно, что эта задача достаточно длительная, что может вызывать не самые приятные эмоции у пользователя, особенно для моделей с наибольшими возможностями по поддерживаемым технологиям радиодоступа и диапазонам частот. Поэтому стандарты разрешают производителям оптимизировать этот процесс.
«Золотой ключик» к услугам сети
Для того, чтобы предоставить доступ к услугам мобильной связи оператору необходимо убедиться в том, что абоненту эти услуги можно предоставлять – он имеет подписку на эти услуги. Ключом для доступа к услугам является (U)SIM-карта. Поэтому сразу после включения питания мобильного терминала и установления рабочих напряжений для его узлов, начинается процедура инициализации (U)SIM-карты, в ходе которой телефон ищет файлы и пытается прочитать из них информацию, необходимую для принятия решения о выборе сети и последующей регистрации в выбранной сети.
6F7B — EF fplmn (Forbidden PLMN) – список «запрещенных» сетей
Это небольшой файлик для записи кодов MCC+MNC для четырех сетей, организованных в порядке «очереди» (FIFO). При изготовлении (U)SIM-карты, этот файл не имеет записей (во всех полях записано значение FF). Когда при попытке регистрации в «чужой» сети телефон получает отказ с кодом причины #11 PLMN not allowed, то код MCC+MNC этой сети записывается в этот файл. Потом, при выборе сети для автоматической регистрации терминал уже не предпринимает попыток автоматической регистрации в сетях, коды которых в этот момент присутствуют в этом файле.
Если пользователь в ручном режиме выберет сеть, код которой содержится в этом файле, то телефон попытается зарегистрироваться в этой сети, несмотря на то, что код сети присутствует в списке «запрещенных».
Если регистрация произойдет успешно, то телефон удалит код этой сети из списка «запрещенных» (заполнит место значением FF). Если в ручной регистрации будет отказано, то всё останется без изменений.
6F30 – EF plmnsel (PLMN selector)
Это один из самых старых файлов, влияющих на выбор сети в роуминге. Он содержит коды сетей (не менее 8 кодов MCC+MNC) в порядке приоритета их выбора в роуминге. Формировать этот список может как сам пользователь через интерфейс телефона, так и оператор, причем, не только при изготовлении (U)SIM-карты, но и впоследствии, загружая информацию «по воздуху».
В ходе дальнейшего развития стандартов и технологий появились ещё несколько файлов, в которых влияние пользователя и оператора были уже разделены, но зато в файлы добавлена информация о технологиях радиодоступа, доступных в каждой из сетей.
6F60, 6F61, 6F62
6F60 – EF plmnwact (User controlled HPLMN Selector with Access Technology)
6F61 – EF oplmnwact (Operator controlled PLMN Selector with Access Technology)
6F62 – EF hplmnwact (HPLMN Selector with Access Technology)
Эти три файла имеют одинаковую структуру. Они могут содержать список кодов (MCC+MNC) для не менее 8 сетей, но с дополнительной информацией о технологиях радиодоступа, поддерживаемых каждой из сетей (GSM, GSM-Compact, UTRAN, E-UTRAN, cdma2000 HRPD, cdma20001xRTT).
Файл 6F60 может заполняться пользователем, обычно через интерфейс телефона, если производитель телефона такой интерфейс предоставляет.
Содержимым файла 6F61 управляет оператор, выпустивший (U)SIM-карту, как при заказе партии (U)SIM-карт, так и впоследствии, когда он может изменять список, передавая новое содержимое файла «по воздуху».
6F31 — EF hpplmn (Higher Priority PLMN Search Period)
Это короткий файл, содержащий число, определяющее длительность интервала, после которого телефон должен пытаться искать сеть с большим приоритетом (домашнюю и т.п.).
Так что же выбирает телефон?
Итак, наступает момент, когда включенный телефон после инициализации (U)SIM-карты, закончил чтение файлов, необходимых для принятия решения о выборе сети, и в результате поиска обнаружил сигналы базовых станций мобильных сетей, и собрал передаваемую ими системную информацию. Каким же образом принимается решение об автоматическом выборе сети?
3GPP-ETSI TS 23.122 в автоматическом режиме предписывает телефону выбрать сеть (PLMN) с наивысшим приоритетом из тех сетей, которые доступны и не запрещены. «Запрещенные» сети телефон проверяет в файле 6F7B — EF fplmn (Forbidden PLMN).
Какой режим выбора сети, автоматический или ручной, лучше использовать в международном роуминге?
Прежде всего, следует помнить, что телефон начнет работать в том режиме выбора сети (автоматическом или ручном), в котором он находился в момент выключения питания. Это кажется пустяком, но если телефон сразу после включения машинально засунуть в карман, а дома сеть по каким-то соображениям выбиралась вручную (ведь другие сети все равно не пускали к себе!), то в роуминге телефон автоматически сеть не выберет, и абонент может остаться без связи на неопределенное время!
Кроме того, нужно понимать, что при использовании телефона в роуминге в ручном режиме выбора сети и впоследствии есть шансы остаться без связи, если оказаться в местах, где покрытие выбранного оператора пропадает – телефон будет ждать решения владельца, о выборе сети из других, доступных в этом месте. Поэтому полезно или в ручном режиме выбрать одну из местных сетей и дождаться успешной регистрации, или перевести телефон в режим автоматического выбора сети и убедиться, что он зарегистрировался в одной из местных сетей.
Как оператор может влиять на автоматический выбор телефоном сетей в роуминге
Рекомендации оператора, выпустившего (U)SIM-карту, записываются в файл 6F61 – EF oplmnwact (Operator controlled PLMN Selector with Access Technology) и/или 6F30 – EF plmnsel (PLMN selector).
Многие операторы входят в группы компаний, предоставляющих услуги мобильной связи в нескольких странах. Естественно, в таких случаях операторы заинтересованы в том, чтобы абоненты получали услуги роуминга в сетях партнеров. И дело здесь часто не столько в желании получить дополнительный доход за счет более высоких цен, сколько в желании оставить доход в рамках группы компаний. Поэтому многие операторы внедряют у себя системы управления роумингом (Steering of Roaming). Многие, наверное, включив телефон по прилете в страну, обнаруживали приветственное текстовое сообщение от оператора, которое содержало практические рекомендации по использованию голосовой почты и др.
Оно появляется потому, что в момент регистрации в роуминге «домашний» оператор получает запрос от «визитной» сети на информацию, которая необходима для предоставления услуг абоненту, а значит «домашний» оператор узнаёт, в какой стране находится его абонент. Имея такую информацию можно отправить на телефон абонента «SMS-ку» специального формата, которая не будет отображена пользователю, а будет «загружена» телефоном в (U)SIM-карту, где обновит содержание нужного файла. С помощью этого механизма оператор подсказывает телефону приоритеты при автоматическом выборе сетей в роуминге.
Как пользователь может повлиять на автоматический выбор его телефоном сетей в роуминге
Поскольку уже было отмечено, что в международном роуминге, чтобы не остаться без связи, лучше использовать автоматический выбор сети, но при этом не хочется полностью полагаться на оператора, возникает вопрос, как абонент может повлиять на выбор сети в автоматическом режиме.
Прежде всего, полезно заранее ознакомиться со списком операторов, предоставляющих услуги в посещаемой стране (или странах), и тарифах на их услуги. На основе этой информации можно составить свой собственный список приоритетов выбора сетей в стране пребывания. В меню телефона в разделе настроек нужно найти настройки сети и список приоритетных сетей. Поскольку этот интерфейс не регламентируется стандартами, то название и местоположение этого пункта меню может быть различным в разных моделях, а в некоторых моделях этот пункт может и вовсе отсутствовать! Если пункт обнаружен, то список сетей, который там может присутствовать, следует отредактировать в соответствии с выбранными предпочтениями.
Почему в списке сетей для выбора предпочтительных указаны только сети 2G или 3G
Не нужно смущаться, если в списке для конкретной сети будет указана только одна технология радиодоступа, хотя известно, что оператор использует несколько технологий – GSM, UMTS, LTE. После того, как телефон обнаружит нужную сеть и получит к ней доступ, он сможет из системной информации, передаваемой БС, узнать о поддержке сетью и других технологий, чтобы затем выбрать ту из них, которая оптимальна с точки зрения радиоусловий.
Стоит ещё заметить, что ручную настройку списка приоритетов выбора сетей лучше делать уже находясь в стране, после того, как оператор мог подправить список предпочтения по своему разумению. Или, как минимум, проверить, что сделанная заранее настройка приоритетов не изменилась. Это особенно актуально для тех случаев, когда и оператор и пользователь используют для управления приоритетами один и тот же файл 6F30 – EF plmnsel (PLMN selector).
Стоит ли покупать SIM-карту местного оператора на время отпуска?
Каждый может решать этот вопрос исходя из своих интересов, потребностей и предпочтений. В последнее время российские операторы в значительной мере снизили цены на услуги роуминга, или стали предлагать специальные опции или пакеты, оптимизирующие затраты на связь в роуминге. Конечно, если предполагается много общения с владельцами местных номеров, то использование SIM-ки местного оператора может оказаться действительно более выгодным. Однако при этом можно оказаться недоступным для входящих звонков с Родины – ведь не всем известен номер телефона, присвоенный местной SIM-карте, да и заставлять людей совершать международные звонки не всегда удобно. В общем, этот вопрос каждый решает индивидуально, исходя из конкретных условий.
Аварийный Межсетевой Роуминг (АМР)
Это понятие появилось несколько лет назад, и даже сейчас не очень известно широкой аудитории.
Дело в том, что российская нормативная база не разрешает предоставлять услуги роуминга абонентам другого оператора, имеющего лицензии на той же территории (республики, края, области). Именно поэтому в файлах со списками «запрещенных» сетей (6F7B) в (U)SIM-картах российских пользователей обычно содержатся коды всех «чужих» сетей, работающих там, где абоненты проживают. Ведь БС операторы ставят в разных точках, и практически всегда можно найти местечко (лифт, подвал, середина большого железобетонного здания и т.п.), где телефон на некоторое время потеряет «домашнюю» сеть, и при этом обнаружит сеть другого оператора. Впервые попав в такую ситуацию, телефон попытается получить доступ к услугам в сети этого оператора. Из-за запрета роуминга, телефон обычно получает отказ в предоставлении услуг с кодом причины #11 PLMN not allowed, и код этой сети заносится в список «запрещенных» в (U)SIM-карте, чтобы предотвратить повторные попытки автоматической регистрации в «чужой» сети.
Но в случаях стихийных бедствий (например, недавнее наводнение на Дальнем Востоке), серьезных аварий в сетях операторов (например, при падении метеорита в Челябинской области), очень большое число граждан оказываются без связи. Они не могут вызвать помощь, например, врача, сообщить близким о своем местонахождении или узнать об их состоянии. В случаях таких серьёзных бедствий принято помогать пострадавшим «всем миром». Именно для таких случаев по инициативе регулятора (Минкомсвязи) или по запросу пострадавшего оператора может быть разрешено включение Аварийного Межсетевого Роуминга на территории, охваченной чрезвычайной ситуацией. В этом случае, абоненты получают возможность воспользоваться услугами любого из операторов, чья сеть доступна в конкретный момент. В отличие от экстренных звонков (на номер 112), при включенном АМР можно позвонить не только в МЧС, но и связаться с родными и близкими по их обычным номерам телефонов – мобильных или проводных, если они, конечно, работают.
В таких сложных ситуациях абонентам важно не растеряться и знать, что нужно сделать, чтобы воспользоваться сетями других операторов в чрезвычайной ситуации, ведь без специальных действий со стороны пользователя, их телефоны не станут регистрироваться в сетях других операторов, чтобы стать доступными для входящей связи.
Если телефон потерял связь с сетью «домашнего» оператора из-за выхода из строя сетевого оборудования, то телефон автоматически найдет сигнал одной из сохранивших работоспособность базовых станции другого оператора, и будет находиться в состоянии Limited Service, ожидая команды владельца позвонить по телефону экстренного вызова (112). В этом случае можно просто попытаться позвонить по нужному номеру. Если АМР включен, то «чужая» сеть должна предоставить соединение.
Если телефон продолжает принимать сигналы базовых станций «домашней» сети, но сеть не позволяет звонить, то нужно в ручном режиме выполнить поиск доступных сетей и выбрать одну из «чужих» сетей, обнаруженных телефоном. Если «чужая» сеть предоставит доступ, значит АМР включен, и такой абонент сможет совершать исходящие звонки и получать входящие. Если сеть откажет в доступе, то следует попытаться повторить ручной выбор других сетей, обнаруженных телефоном до тех пор, пока не произойдет регистрация в одной из сетей. Если же ни одна из «чужих» сетей не выполнила регистрацию, то это означает, что АМР в данном месте не включен, и в «чужих» сетях можно пользоваться только услугой «Экстренного вызова».
Не важно кто ты… важно какая у тебя APN!
В этой статье речь пойдет о небольшой хитрости, к которой может прибегнуть некий виртуальный ОпСоС, чтобы обмануть своих абонентов в процессе предоставления услуг пакетной передачи данных. Центром нашего внимания будет процесс выбора и использования Access Point Name [APN].
Как мы помним из статьи GPRS изнутри. Часть 2, APN используется во время процедуры активации PDP Context’а и предназначена для определения услуги, запрашиваемой абонентом.
* — для предоставления услуг по отправке коротких сообщений не используется APN и нет необходимости активировать PDP Context, достаточно осуществить процедуру GPRS Attach.
APN также должна начинаться с алфавитно-цифровой последовательности символов и не чувствительна к регистру символов на стороне SGNS’а.
Функционально APN предназначена для определения IP адреса GGSN, который будет предоставлять сервис, запрошенный абонентом при активации PDP context’a.
Опционально APN состоит из двух частей – идентификатора сети (обязательная часть) и идентификатора оператора (не обязательная часть):
* — для абонента мобильной сети, есть понятие домашней сети [HPLMN], т.е. сети в которой будут действовать тарифы указанные в договоре по предоставлению услуг сети, но также есть понятие гостевой или роуминговой сети [VPLMN], в которой будут действовать тарифы согласно роумингового соглашения между операторами. При этом домашняя сеть для абонента будет только одна, а гостевых сетей может быть несколько.
Для каждой PLMN, будь то Home PLMN или Visitor PLMN, большинство вендоров позволяет прописать на SGSN’е, т.н. Default APN Operator Identifier [DEFAPN], который автоматически подставляется в качестве Идентификатора Сети, т.е. фактически заменяя APN, запрошенную абонентом, но лишь в том случае если абонент ошибся в написании APN, либо указан не существующую в сети оператора APN. Основная задумка использования параметра DEFAPN направлена на уменьшение количества неудачных попыток активации PDP Context’a, в случае если абоненты ошиблись, т.е. указали неправильную APN в настройках подключения. Использование параметра DEFAPN является опциональным и никак не влияет на общую функциональность, т.е. оператор может и не приобретать лицензии на использовании этой функциональности. В дополнение к настройкам DEFAPN, обычно обязательной настройкой на SGSN’e является разрешение на перезапись запрошенной APN [Override of the requested APN], а также отдельные настройки замещения запрошенной APN для роуминговых абонентов [Override of roaming APN].
Но, что мешает оператору использовать дополнительную функциональность себе на пользу… 🙂
Вот здесь есть небольшой нюанс, т.к. абонент не имеет права как-то вмешиваться в изменение своего профиля, то есть вероятность, что первой в списке разрешенных ему APN «окажется» APN тарифы пользования которой окажутся не совсем маленькими.
Вот здесь появляется еще один «нюанс», если абонент при указанных условиях будет подключаться в сети, то он будет оплачивать услуги по самому «потолку», т.е. по тарифу expensive.net.
Вывод: всегда контролируйте настройки и параметры, которые передаются в любой коммуникации, в том числе и при использовании услуг GPRS/EDGE в сетях мобильных операторов, т.к. очень часто в сети проскакивают сообщении о негодовании услугами передачи данных и больших счетах за пользование мобильной связью, а получить какой-нибудь вменяемый ответ от оператора, порой очень и очень тяжело.
З.Ы.: при написании статьи не пострадал ни один абонент сотовой связи, т.к. в нашей стране все операторы «честные» и пушистые 🙂
APN — Access Point Name
GGSN — Gateway GPRS Support Node
GOI – GGSN Operator Identifier
GPRS — General Packet Radio Service
HLR — Home Location Register
HPLMN — Home PLMN
IMSI – International Mobile Subscriber Identity
LAC — Location Area Code
MCC — Mobile Country Code
MNC — Mobile Network Code
PDN — Packet Data Networks
PDP — Packet Data Protocol
PLMN — Public Land Mobile Network
RAC — Routing Area Code
RNC — Radio Network Controller
SGSN — Serving GPRS Support Node
VPLMN — Visitor PLMN
GSM-ловушки: ещё один привет от Большого Брата
Предлагаю сегодня поговорить о скрытой и неизведанной области — GSM-связи. Почему же неизведанной, спросите вы? Ведь все носят в кармане сотовый телефон, чуть ли не дошкольники ходят с ними, а базовые станции висят на каждом столбе? Увы, обыватель считает, что всё просто и прозрачно: совершает звонки, посылает СМС. И редко задумывается над процессами, которые обеспечивают все эти действия. В этом статье я попробую показать, что GSM-связь — с одной стороны весьма непрозрачная тема, а с другой — прорва уязвимостей. Если конкретнее – то поговорим о так называемых IMSI-ловушках (или IMSI-catchers).
Введение
Начнём издалека, а именно с того, что GSM-связь очень плохо поддаётся изучению. Нельзя просто так взять © и поэкспериментировать с мобильной связью. Хотите соорудить девайс и подключиться к сети, анализировать протокол? Облом — коммуникационные процессоры не имеют нужного API и тем более открытого кода. По сути — это чёрные ящики за семью замками. Максимум, что они “выставляют” наружу — примитивный интерфейс на основе AT-команд. Хотя, если быть точным, то иногда немного больше – но об этом позже.
Поднять свой сервер свою базовую станцию? Это долго, дорого и за вами могут приехать. Существуют замечательные проекты, такие как OpenBTS и SDR (software defined radio), но не обольщайтесь. Во-первых, полноценная сотовая сеть состоит из множества компонентов, а во-вторых — необходимое железо неприлично дорогое. Вот такая несправедливость.
IMSI-ловушки. Что это?
Но вернёмся к теме статьи. IMSI-ловушки — это мобильные ложные базовые станции, которые спецслужбы включают при различных обстоятельствах в разных местах. Мобильные телефоны “цепляются” к этим станциям, которые фактически выступают в роле Man-in-the-middle. В результате мы имеем перехват разговоров, СМС и интернет-трафика. Факты использования таких устройств засекречены. В Германии, например, в 2002 году был принят закон, разрешающий спецслужбам применять такие устройства, однако не обошлось без бурных общественных дебатов. А где-то и до дебатов не доходит. Однако косвенные доказательства есть. Как правило, ловушки включаются в местах народных волнений, либо вокруг объектов, представляющих высокую государственную важность. Часто IMSI-идентификаторы особо интересных личностей заносятся в список фильтрации, и далее работают только с телефонами конкретных людей.
А теперь познакомимся с IMSI-ловушками поподробнее. Для начала классифицируем их поведение. Оно может поддерживать 2 режима — активный и пассивный. В активном ловушка выступает в роли базовой станции. В пассивном — мониторит канал и другие базовые станции. Наиболее интересен, конечно же, активный режим. Опишем его функции.
Прикидываемся базовой станцией
IMSI-ловушка “StingRay” известной фирмы Harris
Нарушение связи
Возможно оставить абонента без связи: сначала “захватить” на себя, а потом оборвать, и так до бесконечности. А можно выдавать мусор или заведомо некорректные пакеты.
Перехват разговоров
Как это происходит
Опишем алгоритм, как ловушка вклинивается в эту систему.
Сразу отметим, что если оператор изначально везде применяет А5/2, то задача становится тривиальной — этот шифр вскрывается в реальном времени. Но операторы не совсем идиоты, поэтому они используют А5/1. Базовая станция анонсирует этот протокол и телефон на него “соглашается”, все довольны.
Все шифры А5 работают на ключе, который хранится как у оператора, так и на SIM-карте. Он уникален для каждого абонента и за его сохранность отвечает крипточип SIM-карты. Из этого следует, что ловушка по отношению к оригинальной базовой станции “прикидывается” абонентским устройством на алгоритме А5/1, а для реального телефона “прикидывается” базовой станцией на алгоритме А5/2, который вскрывается на лету. Таким образом, ловушка извлекает секретный ключ абонента и реконструирует сессию с базовой станцией. Дело сделано. Как узнать, что ваш телефон переключился на слабый шифр? Обычно никак: индустрия сотовой связи заботится о людях — меньше знаешь, крепче спишь. Однако в природе все же встречаются отдельные модели телефонов, которые как-то сигнализируют, и это не смартфоны. Где-то появляется иконка, а где-то незаметная строка утекает в лог, однако это обычно связано с переходом на А5/0. В любом случае, все это скорее исключения из правил.
Противодействие
Естественно, борцы против Большого Брата не оставляют это дело без внимания.
Так появился проект SnoopSnitch — это программа для Android, помогающая в обнаружении IMSI-ловушек в повседневной жизни. Принцип её работы заключается в регулярном сборе статистики об окружающих базовых станциях: их характеристиках и местоположении. В случае обнаружения отклонения от привычной картины программа выдаёт предупреждение. Тут же можно загрузить свои данные на сервер — там формируется глобальная база знаний обо всех базовых станциях мира.
К сожалению, программа недоступна для большинства телефонов. Это связано с особенностью её работы. Как уже было отмечено, в GSM-отрасли любые технические детали старательно вымарываются, но кое-что просачивается. Baseband-процессоры Qualcomm имеют специальный диагностический интерфейс (программный), через который возможно информирование о разных событиях из жизни сотовой связи. В лучших традициях жанра, этот интерфейс недоступен обычным Android-приложениям, однако он все же доступен при наличии root. Если у вас телефон на чипсете Qualcomm, то, возможно, вам повезло. Познакомимся с интерфейсом поподробнее.
Для начала выкачаем ядро для Qualcomm. Оно называется msm — по одноимённой серии Qualcomm SoC.
Выберем какую-нибудь ветку:
Вот где живет заветный драйвер:
Читаем настроечный файл ядра Kconfig:
Как видим, драйвер позволяет общаться с модемом в двунаправленном режиме: слать некие команды и получать некую инфу. В мире user space драйвер себя обнаруживает как устройство /dev/diag_char. Беглое изучение исходного кода показывает, что драйвер предоставляет только транспорт произвольных данных, и не содержит никаких зацепок на само содержание данных. Всё что он делает, это определяет некий примитивный формат пакета: старт-байт, данные, стоп-байт, CRC. Как всё предсказуемо!
Анализ данных от диагностического интерфейса
Ребята из SnoopSnitch умудрились отреверсить сами полезные данные и на основе их строится анализ. Вот какие параметры они принимают к сведению.
MCC/MNC
Mobile Country Code — код страны. Для России это 250. К нему добавляются 2 цифры, идентифицирующие оператора, и получается полноценный код MNC (Mobile Network Code). Список всех MNC можно посмотреть здесь: mcclist.com/mobile-network-codes-country-codes.asp
Location Area Code — некий код географической зоны, которая обслуживается одним контроллером базовых станцией (BSC). Когда происходит входящий вызов, то оповещение одновременно получают все базовые станции данной зоны.
Cell ID
Идентификатор соты, т.е. базовой станции.
Longitude, Latitude
Долгота и широта базовой станции.
ARFCN
Absolute radio-frequency channel number — идентификатор, однозначно определяющий пару частот, используемых для приёма и передачи. Например, за диапазоном GSM 1800 закреплены номера 512 — 885. При этом частота передачи вычисляется по формуле 1710.2 + 0.2·(n−512), а частота приёма = частота передачи + 95.
Собственно, события, связанные с сетью:
Location Update
Когда телефон переходит из одной Location Area на другую, он посылает станциям это сообщение. Также он его посылает и периодически.
Сообщения PAGING
PAGING — это процесс нахождения конкретного абонента для передачи ему SMS-сообщения или звонка. Если приходит SMS, то программа регистрирует адрес центра SMS (SMSC) и тип сообщения: обычное, Silent или Binary.
А теперь опишем непосредственно критерии, на основе которых программа находит ловушки.
1. Сменился LAC или Cell ID, при том что частота осталась неизменной. Действительно, часто ловушка занимает существующую частоту, при этом предоставляя более сильный сигнал, чем оригинальная станция. Но эта метрика весьма ненадёжна. Во-первых, телефон может находиться в зоне действия двух станции из разных LAC, и просто перескочить с одной на другую, оставаясь на одинаковом канале. Во-вторых, сам оператор может дать команду какой-то станции на переход к другому LAC.
2. LAC текущей станции отличается от LAC окружающих станций. Задача ловушки — добиться Location Update от телефона, так как только в этом случае она может “стянуть” с него нужную информацию. Поэтому она анонсирует другой LAC, предоставляя более сильный сигнал. Но есть подводный камень — легальные фемто-соты могут также иметь другой LAC: зависит от настроек соты, оператора и погоды на Марсе.
3. При неизменной паре Cell ID — LAC изменился номер канала. Ловушка часто маскируется под неиспользованную частоту уже существующей базовой станции.
4. LAC содержит единственную станцию. Как уже сказано в п. 2, обычно стремятся инициировать Location Update. Проще всего этого добиться, подняв псевдо-вышку с отличным от всех LAC и самым сильным сигналом. Подводный камень: в местах с плохим покрытием (обычно за городом) часто бывает, что телефон “видит” только одну станцию, и здесь уже бессмысленно гадать.
5. Станция не сообщает информации о своих соседских станциях, хотя это должно происходить в условиях плотного покрытия. Ловушка не анонсирует другие станции, чтобы у телефона “не было соблазна” на них переключиться. А иногда хитрят: анонсируют несуществующие частоты либо существующих, либо несуществующих соседних станций.
6. Анонсирование заведомо завышенного CRO (Channel Reselection Offset). Это один из параметров, который влияет на алгоритм выбора телефоном наилучшей базовой станции.
7. Отключение шифрования, при том что оно ранее было на той же паре LAC/Cell. Ловушка может переключить телефон с А5/3 на А5/0, тем самым выключив шифрование вообще, либо на слабый алгоритм А5/2.
8. Сообщение CIPHER MODE COMPLETE не содержит IMEISV. Тут надо подробнее пояснить весь процесс аутентификации и шифрования в GSM. Подключение к GSM-сети состоит из трех этапов: аутентификация, выработка ключа шифрования и выбор режима шифрования.
1. Аутентификация
На SIM-карте абонента хранится 128-битный ключ — Subscriber Authentication Key. Точно такой же хранится у оператора. Так как SIM-карта формально принадлежит оператору, а сам ключ хранится защищённым образом, то это считается надёжным.
Кстати, подтверждение подлинности самой станции не предусмотрено. Случайно ли.
2. Выработка ключа шифрования
Здесь процедура идентичная, за исключением того, что случайное число и ключ подаются на вход алгоритма А8, а результатом является 64-битный ключ симметричного шифрования А5.
Выбор режим шифрования
Станция посылает телефону команду CIPHER MODE SELECT, сообщая требуемый режим шифрования: А5/0, А5/1, А5/2 или А5/3. Однако в этом сообщении есть ещё флаг REQUEST_IMEISV, означающий, что телефон должен сообщить в ответном сообщении CIPHER MODE COMPLETE свой уникальный идентификатор, причём это сообщение уже зашифровано на ранее согласованном ключе. По умолчанию флаг всегда ставится. Однако ловушка может не передавать этот флаг, в результате сообщение CIPHER MODE COMPLETE будет содержать предсказуемую статическую информацию. После этого производится стандартная атака по известному открытому тексту (known plain text attack), и ключ вскрывается. Итак, критерий №8 отлавливает отсутствие данного флага. Ещё есть дополнительный признак — долгое ожидание подтверждения получения станцией CIPHER MODE COMPLETE. Действительно, вскрытие ключа требует времени.
9. После Location Update идёт стандартный запрос абоненту на идентификационную информацию (IMEI, IMSI), а дальше станция отвергает телефон, заставляя делать новый Location Update. Всё это — признак ловушки, работающей в режиме сбора информации.
10. Если станция анонсирует другой режим шифрования, отличный от обычного для данной местности или оператора, то это либо ловушка, либо оператор недоглядел, либо аппаратный сбой, либо так задумано. Но в расчёт принимается.
11. Слишком маленький интервал регулярного Location Update. Телефон обязан периодически посылать Location Update — даже если он не мигрирует с одной соты на другую. А значение периода приходит со станции. Стандартное значение — 1-4 часа. Но ловушка может распространять заведомо маленькие тайм-ауты, чтобы более оперативно “цеплять” телефоны.
12. Произошёл Paging, за которым не последовало ни SMS, ни разговора. Это типичная проверка, находится ли “жертва” в зоне покрытия в конкретный момент времени.
13. Установлен канал данных (Traffic Channel, или TCH), но не последовало ни SMS, ни разговора. Либо он последовал, но спустя необычно долгое время. Согласно протоколу, после установления этого канала телефон непрерывно шлёт пустые подтверждения, пока канал не закроется. Эти подтверждения могут использоваться ловушкой для более точного позиционирования телефона.
14. Подозрительный список соседних станций (Neighboring Cells). Каждая станция передает подключённому к ней телефону список окружающих станций. Но если это ловушка, то она будет отсутствовать в этих списках – в отличие от других, легитимных, станций.
15. Разбиение на большое количество групп (Paging Group). Каждая станция объединяет все подключенные телефоны в группы. Это нужно для оптимизации ресурсов. Когда происходит входящий звонок, все телефоны данной группы получают оповещение на соответствующем логическом канале. Когда ложная станция хочет вернуть абонента в родную сотовую сеть, она посылает некорректные данные на канале той группы, в которую входит абонент. В результате все члены группы начнут процедуру Cell Reselection. Чтобы затронуть как можно меньше абонентов, ложная станция делает их маленькими, а количество групп будет большим, что и является признаком работы ловушки.
Как мы видим, существует множество критериев, каждый из которых по отдельности не является 100%-ной гарантией обнаружения ловушек. Вместо этого предлагается вероятностная оценка.