HackerSIM: разбор полетов
В последнее время на Хабре и Гиктаймс появилось много статей (1, 2, 3, 4, 5, 6, 7) о SIM-карте, наделенной невиданными и неслыханными возможностями, что вызвало озабоченность и заинтересованность в различных кругах. Появилось множество скепсиса и споров, а затем различных теорий, порой потрясающих своей фантастичностью. Попробуем приоткрыть завесу тайны с технической стороны. Естественно, эти тесты не были бы возможны без данной SIM-карты, которую нам любезно предоставил MagisterLudi.
Для тех, кто не хочет читать много букв, — резюмирую: принудительного шифрования нет, защиты от комплексов перехвата нет, подключения к второй по уровню сигнала БС нет, подмена номера есть, подмена голоса есть, биллинг есть, сокрытия IMSI нет, сокрытия местоположения нет.
Начнем по порядку.
Первое разочарование
На SIM-карте нет лого Анонимуса, изображенного в самой первой статье:
Тут мы решили не продолжать исследование — ведь в логотипе же и была главная фишка.
Чья она?
ICCID SIM-карты (напечатанный на ней) говорит нам следующее:
Вставляем SIM-карту в телефон, и первое, что мы видим, — что мы находимся в роуминге, подключены к MTS, и третья строка, на которую невозможно не обратить внимание: AY Security — она сразу же говорит, чья это SIM на самом деле: www.aysecurity.co.uk/ru/aysim.html
Занимательно, но в современном телефоне отображается совсем другая информация (остается загадкой, что значит «GT»):
На сайте заявлены следующие «уникальные» фичи:
- подмена номера звонящего,
- принудительное шифрование,
- защита от комплексов перехвата,
- подмена голоса,
- оптимизация расходов,
- скрытие реального IMSI,
- скрытие реального местоположения,
- виртуальный номер.
Первый и четвертый пункт уже активно обсудили на Хабре, поэтому мы не будем их затрагивать, а попробуем разобраться в остальных, гораздо более «мутных».
Принудительное шифрование
«Данная функция запрещает Вашей SIM карте снижать уровень криптования и заставляет игнорировать команды, поступающие от операторов или комплексов перехвата на отключение алгоритма формирования ключей шифрования (А8), хранящегося в модуле SIM. Таким образом, все ваши разговоры шифруются по алгоритму А5.1.»
На самом деле изначально вся передача ведется без использования шифрования, а включение шифрования осуществляется по команде от оператора Ciphering Mode Command. Вот пример из реальной сети (используется HackerSIM):
Однако это точно так же работает на всех других SIM, поскольку шифрование обычно используется во всех российских сетях. Для проверки «запрета» работы без шифрования подключим к OpenBTS и попробуем позвонить:
Сначала действительно складывается впечатление, что SIM-карта как-то прознала, что шифрования нет, и заблокировала звонок. (Но на деле все не так, об этом чуть ниже, а еще обратите внимание на окно «Calling…» внизу экрана.) Однако если попытаться позвонить несколько раз подряд (в нашем случае три раза), то вызов проходит:
Входящие звонки проходят без проблем и разговор тоже без проблем происходит:
Стоит заметить: производитель утверждает, что именно для голоса действует запрет на отсутствие шифрования, в поддельной сети без шифрования без проблем передаются как входящие, так и исходящие SMS.
Защита от комплексов перехвата
Данная функция даёт абоненту возможность становиться невидимым для подвижных комплексов перехвата. Принцип действия комплекса перехвата основан на подмене собой реальной базовой станции, таким образом, становясь, по факту, приоритетной для всех телефонов в радиусе её действия. Телефон с нашим программным комплексом игнорирует базы с наивысшим уровнем сигнала.
Вообще говоря, телефон выбирает не по уровню сигнала, а по параметру C2, который зависит от текущего уровня сигнала, от минимально допустимого сигнала для этой БС и от приоритета БС. Поэтому сама мысль, что это спасает от поддельной БС, — заблуждение. К примеру, OpenBTS, развернутая на SDR, имеет мощность порядка 100 мВт, что меньше, чем может сам телефон (до 1 Вт), и значительно меньше, чем стандартная базовая станция. Таким образом, перехват достигается не высоким уровнем мощности, а высоким приоритетом. И то, что телефон использует менее мощную БС, значит лишь то, что приоритет у нее выше.
Для измерения мощности, параметров C1 и C2 мы использовали приложение Greenhead.
Ну и немного скриншотов — список соседских и обслуживающих каналов (BCCH — arfcn, SC — serving cell, N1 — neigbour cell 1 и т. д.).
1. HackerSIM на самой мощной и самой приоритетной БС
2. HackerSIM на не самой мощной, но самой приоритетной БС
3. Включаем «комплекс перехвата», и… HackerSIM спокойно к нему подключается, хотя, если быть точным, то это телефон подключается, так как выбором сот SIM-карта не управляет, и HackerSIM не исключение:
4. Захватив телефон, поддельная сеть больше не сообщает о соседях, поэтому выбора у телефона нет, кроме как находиться в фейковой сети столько, сколько пожелает злоумышленник, либо пока не выйдет из зоны ее действия:
Оптимизация расходов
Этот пункт звучит весьма оригинально, с учетом стоимости как самой SIM-карты, так и ее обслуживания.
Скрытие реального IMSI. Скрытие реального местоположения. Отсутствие биллинга. Виртуальный номер
Заявляется об отсутствии биллинга, и именно поэтому якобы невозможно отследить данного абонента. Однако если нет биллинга, кто выдает вот эту информацию?
Отслеживание местоположения осуществляется через сеть SS7 с помощью описанных нами атак [http://www.ptsecurity.ru/download/PT_SS7_security_2014_rus.pdf]. Для этого достаточно знать IMSI абонента. Обычно его узнают через номер телефона; нам неизвестен номер телефона нашей HackerSIM, и по инструкции с сайта он нам почему-то не показывается (тут должен быть еще DID, по которому можно нам позвонить):
Мы не можем проверить «виртуальность» данного номера, потому что мы его не знаем. Но IMSI можно узнать из радиоэфира, например при подключении телефона к сети:
Телефон отправляет Location Update Request, сеть запрашивает IMSI (Identity Request), телефон говорит свой IMSI (Identity Response), после чего вырабатываются сеансовые ключи (Authentication Request и Authentication Response), и только затем поступает команда на шифрование. Другими словами, IMSI можно перехватить в радиосети, даже не взламывая шифрования, но иначе быть и не может: так работает сотовая сеть.
Остался еще один нерешенный момент, упомянутый на Хабре. При регистрации телефона в роуминговой сети делается запрос в домашнюю сеть, но затем все звонки должны проходить через гостевую сеть. Так каким же образом все исходящие звонки проходят через PBX? Ответ оригинален, но достаточно прост.
Когда мы пытались звонить через Motorola C118, звонок сбрасывался, и никто в ответ не перезванивал. То же самое — при использовании утилиты mobile из пакета osmocom-bb:
Кстати, SMS сбрасываются с еще более интересной причиной:
Но вернемся к вопросу о том, почему в старой Motorola исходящий вызов не работает, а в современном телефоне он сбрасывается, а затем перезванивает PBX. Дамп радиоэфира раскрывает тайну:
При исходящем звонке вместо сообщения установления вызова (Setup) телефон отправляет USSD с номером вызываемого абонента, который долгое время гуляет по миру, добираясь до домашних Нидерландов, потом приходит USSD-ответ с незамысловатой фразой Calling start, а затем уже идет входящий звонок с привычной последовательностью Setup, Call Confirmed, Assigned Command.
Таким образом, для SIM-карты запрещены любые исходящие активности, кроме USSD, и запрещены они домашней сетью. А сам вызов перехватывается приложением на SIM-карте и подменяется на USSD с вызываемым номером, это уходит в домашнюю сеть, в это время приложение завершает вызов, выводит сообщение «Calling...» на экран и ждет ответа на USSD; так же она проверяет использование «шифрования» в сети. Если USSD неуспешно или не приходит ответ Calling start, она просто блокирует вызов (то, что мы видели в поддельной сети).
Однако, видимо, производительность SIM-карты не позволяет перехватить все вызовы, и завалив ее вызовами, они начинают уходить напрямую.
Мы пытались повторить такое в реальной сети, чтобы произвести звонок в обход PBX, но там все звонки «отбиваются» сетью, поскольку, как уже сказано выше, для HackerSIM запрещены все исходящие активности.
Самые внимательные могли заметить на предыдущем скриншоте запрос Identity Request перед USSD-ответом. Это сообщение используется сетью для получения от телефона IMSI либо IMEI.
Напомним, что IMEI — вообще необязательный идентификатор в сотовой сети и может не запрашиваться никогда. Так что кто-то собирает их и не случайно. Нет никакой анонимности при использовании HackerSIM: они знают — кто, куда, когда и где.
Теперь, зная секрет исходящих вызовов, мы можем звонить и со старой Motorola, и с утилиты mobile пакета osmocom-bb.
Multi IMSI/Ki
Для пары смены IMSI/Ki необходимо использовать меню SIM-карты:
Callback on/off — включает (выключает) приложение SIM-карты, подменяющие исходящие звонки на USSD.
Menu — там ничего нет, кроме Exit.
Reset sim profile — сбрасывает TMSI и Kc (сеансовый ключ).
About —
Select Location — выбор IMSI/Ki.
Global — IMSI 22201xxxxxxxxxx, принадлежащий итальянскому оператору TIM.
Global+ — IMSI 20404xxxxxxxxxx, принадлежащий голландскому оператору Vodafone Libertel.
USA — IMSI 310630xxxxxxxxx, не принадлежит конкретному оператору, используется в различных Global SIM.
Prime — IMSI 23418xxxxxxxxxx, принадлежащий британскому Cloud9/wire9 Tel.
Все IMSI, кроме Global+, в России не регистрируются по одной из этих двух причин:
В режиме Global+ тоже не все гладко.
Список предпочтительных сетей (там, где точно будет работать):
List of preferred PLMNs:
MCC |MNC
-------+-------
234 |15 (Guernsey, Vodafone)
262 |02 (Germany, Vodafone)
208 |10 (France, SFR)
222 |10 (Italy, Vodafone)
214 |01 (Spain, Vodafone)
505 |03 (Australia, Vodafone)
228 |01 (Switzerland, Swisscom)
206 |01 (Belgium, Proximus)
404 |20 (India, Vodafone IN)
404 |11 (India, Vodafone IN)
404 |27 (India, Vodafone IN)
404 |05 (India, Vodafone IN)
404 |46 (India, 46)
272 |01 (Ireland, Vodafone)
202 |05 (Greece, Vodafone)
232 |01 (Austria, A1)
655 |01 (South Africa, Vodacom)
286 |02 (Turkey, Vodafone)
238 |01 (Denmark, TDC)
268 |01 (Portugal, Vodafone)
260 |01 (Poland, Plus)
230 |03 (Czech Republic, Vodafone)
250 |01 (Russian Federation, MTS)
216 |70 (Hungary, Vodafone)
226 |01 (Romania, Vodafone)
244 |05 (Finland, Elisa)
602 |02 (Egypt, Vodafone)
219 |10 (Croatia, VIPnet)
620 |02 (Ghana, Ghana Telecom Mobile / Vodafone)
255 |01 (Ukraine, MTS)
Запрещенных сетей нет, но при попытке зарегистрироваться в «Билайне» и «TELE2» прилетает отказ из домашней сети, «МегаФон» работает, «МТС» — предпочтителен (в SIM-карте)
Вот что происходит при попытке подключиться в «Билайн»:
Так что, если эта SIM и работает в любой стране мира, то точно не работает в любой сети мира.
Выводы
Используемая схема исходящих вызовов может доставить проблемы в поиске инициатора звонка, но только при условии, что PBX находится за границей и никак не контактирует со спецслужбами, а операторы связи не знают и не хотят знать о существовании таких специфичных SIM-карт. Однако при желании отследить активность всех, кто использует такие SIM-карты, несложно: разница лишь в том, что искать нужно будет немного другую информацию, чем обычно.
Никаких фантастических и хакерских свойств сама SIM-карта не имеет.