Pull to refresh
68
0
Вадим Павлович Яницкий @axilirator

Программист, коллекционирую старые телефоны

Send message
Как и продукты для общедоступных операторов, ядро частной 4G мы разрабатывали на C++. С нашей точки зрения, это оптимальный выбор.

Could you please tell more, why C++? Why not Erlang?
У данного подхода есть интересная особенность. Я привык после переключения языка (Alt + Shift) держать Shift зажатым, если мне, например, нужно начать предложение с заглавной буквы. Так вот, после смены языка Shift хоть и остается заглявным, но не влияет на регистр символов. Приходится отпускать и зажимать снова. Кто-нибудь сталкивался с подобным?
Не знаю, как в 3G/4G/5G, но в GSM спецификации требуют обеспечивать соединение с абонентом, движущимся до 500 км/ч.
Ни S@T, ни WIB не являются субъектами спецификаций 3GPP и ETSI. Это сторонние технологии, первую из которых в свое время активно продвигал SIM Alliance (у них на сайте доступны все спецификации). Из известных игроков на рынке, Gemalto предлагает валидацию и интеграцию S@T Browser: www.gemalto.com/companyinfo/about/merger/commitments/sim-browsing. И да, не только по FTP — HTTP прекрасно работает.

А вот что действительно сурово, так это спецификации ETSI на DVD дисках :D
webstore.etsi.org/ecommerce/ListArticle.asp

Полный набор спецификаций GSM (на целых 4 дисках) можно заказать за 6 000,00 €.
Так ли страшна новая уязвимость SIM-карт

Реальную оценку количества уязвимых устройств на данный момент дать сложно.
Судя по комментариям, [...] у наших операторов может быть всё вполне хорошо [...]

К сожалению, статья ни о чем. Когда видишь такой заголовок, сразу возникают вопросы:

  • Как много операторов сегодня продолжают пользоваться этой устаревшей технологией (S@T, WIB)? На сколько я знаю, в Африке она до сих пор активно используется, но как обстоят дела в других уголках света, включая нашу необъятную страну?
  • Как защититься? Можно ли удалить или заблокировать эти апплеты? Очевидно, можно. Скажу больше, большинство адекватных операторов в России блокирует отправку нестандартных SMS (например, OTA) между абонентами. Более того, неугодные апплеты можно удалить получив OTA от оператора (благо, есть Card Manager).
  • Меня уже взломали? Могу ли я проверить наличие уязвимых апплетов на SIM-карте? Да! В публичном доступе уже давно доступен фаззер для SIM-карт — SIMTester от SRLabs, а также бесплатное приложение SnoopSnitch, которое мониторит активность Baseband-процессора в реальном времени (через отладочный интерфейс Qualcomm).


На самом деле, лаборатория упоминаемого Вами Karsten Nohl опубликовала небольшую статью, где все разложено по полочкам и есть ответы почти на все эти вопросы: New SIM attacks de-mystified, protection tools now available. Советую почитать.

Небольная выдержка:

На основании результатов анализов 800 SIM-карт, можно сказать следующее:
S@T Browser установлен на 9.4% из всех протестированных,
из которых 5.6% уязвимы к SimJacker (MSL=0, не требуют подписи OTA).
WIB установлен на 10.7% из всех протестированных,
из которых 3.5% уязвимы к аналогичным атакам (MSL=0).
Суммарно 9.1% из 800 протестированных SIM-карт уязвимы.

На основании анализа собранных данных на сайте gsmmap.org:
как минимум 8 абонентов получили OTA SMS, адресованных S@T Browser,
первый случай был зафиксирован еще в 2016 году,
большинство абонентов были из Южной и Латинской Америки.


Кроме того, на сайте SIM Alliance еще в августе (до официального объявления уязвимости) были опубликованы Security Guidelines for S@T Push для операторов.
Если еще актуально, или просто интересно, то это протокол RVTMUX.
bitbucket.org/falconian/freecalypso-tools/src/default/doc/RVTMUX
Мне кажется, данный дистрибутив — это просто Proof-of-Concept. Это вполне логично, ведь государству заказчику надо показать результат, а не какие-то там куски кода и патчи. Если у разработчиков хватит терпения (и финансирования), чтобы причесать код и довести все до апстрима, то будет Вам и Ubuntu на Эльбрусе. Правда… с ее неспешными циклами обновлений, я бы задумался о другом дистрибутиве.
Теперь SMS должно каким-то образом начать свой трудный путь от SIM-карты до ближайшей базовой станции. Для этого телефон жены должен преобразовать строку из 176 в 279 байт для сигнального протокола SS7, преобразовать эти цифровые байты в аналоговый радиосигнал, а затем отправить сигналы в эфир с частотой где-то между 800 и 2000 МГц. Это означает, что между пиками волн расстояние от 15 до 37 см.

Между модуляцией сигнала и сетью SS7 огромная пропасть, заполненная целой кучей протоколов. Для наглядности:

image

Единственная аномалия, где телефон действительно имеет дело с протоколами SS7 (а именно TCAP и MAP) — это SS/USSD, т.е. всем знакомые *100# и т.д. В данном случае, телефон хоть и кодирует (либо декодирует) уже готовое сообщение протокола MAP, но, как ни крути, никак не взаимодействует с сетью SS7.
Если SMSC не может найти мой телефон, то сообщение от жены будет просто прыгать в системе, пока мой телефон не подключится — и тогда SMS-центр немедленно отправит текст. Мне нравится представлять, как SMSC постоянно проверяет каждый телефон в сети, чтобы проверить, это мой телефон или нет: как щенок, ожидающий хозяина у двери принюхивается к каждому прохожему: это запах моего человека? Нет. Может, это запах моего человека? Нет. Это запах моего человека? ДАДАПРЫГАТЬУРА!!!

WTF?!? «Прыгать по системе»?!? Ну жу нет, никто никуда не прыгает, извините.

Начнем с того, что SMSC не проверяет, есть ли телефон в сети. Более того, зачем ему проверять «каждый» телефон, если он знает номер? Это не входит в его «обязанности». Первым делом, SMSC, после получения сообщения, находит HLR абонента, т.е. базу данных, в которой хранятся данные того абонента, которому отправляется сообщение.

SMSC через SS7 посылает специальный запрос, для протокола MAP это sendRoutingInfoForSM (в LTE используется DIAMETER, с ним я не знаком). Если абонент в сети, то HLR пришлет IMSI абонента, и номер MSC, который его в данный момент обслуживает. Если абонент в сети не зарегистрирован, никто не будет «проверять запахи» и «прыгать по системе». Вместо этого, как только абонент появится в сети, HLR уведомит SMSC об этом, и процедура повторится.

Получив номер MSC, SMSC через SS7 пересылает ему специальное сообщение (в случае MAP, используется MT-forwardSM), в котором содержится номер отправителя, номер данного SMSC, и IMSI (либо LMSI) абонента, которому нужно доставить сообщение. MSC в свою очередь «попросит» BSC установить соединение с абонентом, и, в случае успеха, передаст ему это SMS-сообщение. В противном случае, уже MSC может уведомить SMSC о том, что абонент доступен (могу ошибаться в деталях).
В байте DCS есть ещё небольшой флаг, который говорит телефону, нужно ли самоуничтожать сообщение после отправки, как в фильме «Миссия невыполнима», так что это очень круто.

Не берусь опровергать, но было бы здорово увидеть, где в спецификациях описан данный флаг? И почему он является частью именно Data Coding Scheme?
Байт после PDU-type является ссылкой на сообщение (MR). Это число от 1 до 255, по сути, используется как краткосрочный ID, чтобы телефон и оператор распознавали сообщение. В сообщении от жены установлен номер 0, потому что в её телефоне собственная система идентификации сообщений, независимая от этого конкретного файла.

Загляните, пожалуйста, в спецификации GSM, а именно 3GPP TS 04.11, раздел 8.2.3 «Message reference»:
The message reference field contains a sequence number in the range 0 through 255, and is used to link an RP-ACK message or RP-ERROR message to the associated (preceding) RP-DATA or RP-SMMA message transfer attempt.

и сравните с «используется как краткосрочный ID, чтобы телефон и оператор распознавали сообщение». На самом деле, SM-RP-MR используется для того, чтобы уведомить абонента либо об успешной, либо о неудачной отправке сообщения. Поскольку в момент времени может передаваться сразу несколько SMS-сообщений, этот идентификатор позволяет связать ACK или NACK с определенным сообщением. Так же, SM-RP-MR используется при отправке multi-part SMS, чтобы идентифицировать каждый кусочек на уровне RL.
Инженер скажет, что когда телефон воспринимает изменение напряжения по координатам на экране, которые совпадают с координатами размещения графического элемента с кнопкой «Отправить», то он отправляет кодированное сообщение на SIM-карту, а в процессе передачи добавляет различные контекстные данные. Когда сообщение достигает SIM-карты моей жены, то там уже не 140, а 176 байт (текст + контекст).

И снова бред. SIM-карте действительно можно отправить SMS-сообщение, но исключительно в служебных целях, например, когда оператору нужно обновить список операторов, к которым можно подключаться в роуминге. В обычных же случаях SMS передается радиомодулю телефона, который, в свою очередь, устанавливает соединение с сетью и передает сообщение.
Сигнальная система SS7 представляет собой набор протоколов, используемых сотовыми телефонами, чтобы оставаться в постоянном контакте с базовой станцией; им нужно постоянное соединение, чтобы получать вызов и передавать своё местоположение, проверять голосовую почту и т. д.

Бред полнейший. Сами телефоны никак не взаимодействуют с SS7.
Я думаю, проблема в другом. Пока есть те, кого можно легко обмануть, будут и те, кто готов этим воспользоваться. Ужесточение наказания за сие деяние — не панацея, вряд ли это как-либо повлияет на текущую ситуацию. Социальная инженерия ведь не вчера появилась, людям пора уже заботиться о какой-то базовой самообразованности в этом плане.
Новый способ угона аккаунтов

Извините, но что нового в этом способе? По-моему, абсолютно ничего.
Обычная социальная инженерия.

С таким же успехом Вас могут попросить прислать копию паспорта, или скан отпечатков пальцев в любой соц. сети. В случае успеха, открывается куча способов угона ваших SIM-карт, денежных средств, и т.д. Если об этом еще не писали на Хабре, это ведь не значит, что способ новый?
Ребята из Sysmocom (в основном Kevin Redon) сейчас как-раз активно работают над SIMtrace 2:
osmocom.org/projects/simtrace2/wiki
git.osmocom.org/simtrace2

Information

Rating
4,997-th
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity

Specialization

Software Developer, Pentester