Ошибка imsi на телефоне
Предлагаю сегодня поговорить о скрытой и неизведанной области — GSM-связи. Почему же неизведанной, спросите вы? Ведь все носят в кармане сотовый телефон, чуть ли не дошкольники ходят с ними, а базовые станции висят на каждом столбе? Увы, обыватель считает, что всё просто и прозрачно: совершает звонки, посылает СМС. И редко задумывается над процессами, которые обеспечивают все эти действия. В этом статье я попробую показать, что GSM-связь — с одной стороны весьма непрозрачная тема, а с другой — прорва уязвимостей. Если конкретнее – то поговорим о так называемых IMSI-ловушках (или IMSI-catchers).
Введение
Начнём издалека, а именно с того, что GSM-связь очень плохо поддаётся изучению. Нельзя просто так взять © и поэкспериментировать с мобильной связью. Хотите соорудить девайс и подключиться к сети, анализировать протокол? Облом — коммуникационные процессоры не имеют нужного API и тем более открытого кода. По сути — это чёрные ящики за семью замками. Максимум, что они “выставляют” наружу — примитивный интерфейс на основе AT-команд. Хотя, если быть точным, то иногда немного больше – но об этом позже.
Поднять свой сервер свою базовую станцию? Это долго, дорого и за вами могут приехать. Существуют замечательные проекты, такие как OpenBTS и SDR (software defined radio), но не обольщайтесь. Во-первых, полноценная сотовая сеть состоит из множества компонентов, а во-вторых — необходимое железо неприлично дорогое. Вот такая несправедливость.
Не хотите ли прикупить OpenBTS development kit (сетей 2.5G) фирмы Range Networks за $3300?
Ettus выпускает такие гик-девайсы для экспериментов в сотовых сетях вплоть до 6 ГГц. Цена около $4000.
IMSI-ловушки. Что это?
Но вернёмся к теме статьи. IMSI-ловушки — это мобильные ложные базовые станции, которые спецслужбы включают при различных обстоятельствах в разных местах. Мобильные телефоны “цепляются” к этим станциям, которые фактически выступают в роле Man-in-the-middle. В результате мы имеем перехват разговоров, СМС и интернет-трафика. Факты использования таких устройств засекречены. В Германии, например, в 2002 году был принят закон, разрешающий спецслужбам применять такие устройства, однако не обошлось без бурных общественных дебатов. А где-то и до дебатов не доходит. Однако косвенные доказательства есть. Как правило, ловушки включаются в местах народных волнений, либо вокруг объектов, представляющих высокую государственную важность. Часто IMSI-идентификаторы особо интересных личностей заносятся в список фильтрации, и далее работают только с телефонами конкретных людей.
А теперь познакомимся с IMSI-ловушками поподробнее. Для начала классифицируем их поведение. Оно может поддерживать 2 режима — активный и пассивный. В активном ловушка выступает в роли базовой станции. В пассивном — мониторит канал и другие базовые станции. Наиболее интересен, конечно же, активный режим. Опишем его функции.
Прикидываемся базовой станцией
- IMSI: Interntaion Mobile Subscriber Identifier — фактически это уникальный номер SIM-карты;
- IMEI: Interntaion Mobile Equipment Identifier — уникальный номер аппарата.
IMSI-ловушка “StingRay” известной фирмы Harris
Нарушение связи
Возможно оставить абонента без связи: сначала “захватить” на себя, а потом оборвать, и так до бесконечности. А можно выдавать мусор или заведомо некорректные пакеты.
Перехват разговоров
- А5/0 — фактически это plain text, шифрования нет;
- А5/1 — первый вариант с потоковым шифром, который сейчас уже не считается достаточно стойким;
- А5/2 — экспортный вариант А5/1 с намеренно заниженной стойкостью. Куда уж ниже?!
- А5/3 — достаточно стойкий вариант, возникший с приходом 3G.
Как это происходит
Опишем алгоритм, как ловушка вклинивается в эту систему.
Сразу отметим, что если оператор изначально везде применяет А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
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
А теперь опишем непосредственно критерии, на основе которых программа находит ловушки.
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.
1. Аутентификация
Кстати, подтверждение подлинности самой станции не предусмотрено. Случайно ли.
2. Выработка ключа шифрования
Здесь процедура идентичная, за исключением того, что случайное число и ключ подаются на вход алгоритма А8, а результатом является 64-битный ключ симметричного шифрования А5.
Выбор режим шифрования
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%-ной гарантией обнаружения ловушек. Вместо этого предлагается вероятностная оценка.
Читайте также: