После столкновения с проактивными SMS-сообщениями от SIM-карты AT&T (перевод статьи тут) я решил проверить и другие SIM-карты. Не секрет, что практически все они поддерживают проактивные функции, но мне стало интересно, сколько карт используют их фактически. Итак, я подготовил испытательный стенд для проверки имеющихся у меня симок.
SIM-карты
На первом этапе я ограничил тестирование крупными «тир-1» операторами, картами которых пользуется множество людей. Вот, что было у меня под рукой:
Все эти SIM-карты были выпущены в период с 2014 по 2019 год.
Испытательный стенд
Стенд такой же, как и в первой статье, здесь повторяется для удобства:
-
Инструмент SIMTrace2, который размещается между SIM-картой и телефоном, позволяя отслеживать связь между ними.
-
Телефон. Я использовал Allview Soul.
-
The Legba Lab Kit, настольный эмулятор сети.
-
Обычный считыватель смарт-карт ипрограмма для управления SIM-картами PySim.
Метод
Цель метода — отслеживать обмен данными между SIM-картой и телефоном, чтобы выяснить, какие проактивные функции использует симка. Чтобы активировать карту, будем использовать Lab Kit для имитации домашней сети SIM-карты. Шаги следующие:
-
«SUT» — это тестируемая SIM-карта.
-
Используйте PySim и считыватель карты, чтобы получить IMSI тестируемой карты.
-
Используйте первые 5 или 6 цифр IMSI, чтобы получить PLMN домашней сети SUT.
-
Запрограммируйте PLMN домашней сети SUT в GSM-эмулятор Lab Kit.
-
Выключите телефон.
-
Установите SUT в устройство SIMTrace2.
-
Начните новый захват в Wireshark.
-
Запустите программу simtrace2-sniff с пакетами, направленными на ваш хост Wireshark.
-
Включите телефон.
-
Обычно телефон распознает домашний PLMN своей SIM-карты и немедленно подключается к эмулируемой сети. Если нет, выберите его вручную.
-
Оставьте телефон на 5 минут.
-
Сделайте короткий телефонный звонок.
-
Отправьте SMS самому себе.
-
Дайте телефону постоять еще 5 минут.
-
Проверьте логи Wireshark на предмет проактивных операций.
Для действительных SIM-карт, которые все еще обслуживаются, эмулятор не требуется, поэтому можете пропустить шаг №4.
Результаты
Итак, начнем с операторов, не показавших ничего примечательного.
-
Vodafone Romania
Все остальные показали интересные результаты.
Все SIM-карты использовали проактивные дополнительные услуги для изменения переадресации вызовов, но это не считалось чем-то «интересным». Я оставил пример в Pastebin, на случай, если кто-то со мной не согласится.
А теперь самое интересное.
AT&T
Про AT&T был отдельный пост, но он кратко изложен здесь для удобства. Протестированные SIM-карты отправляют SMS в AT&T всякий раз, когда обнаруживают изменение в IMEISV. Это изменение инициируется обновлением встроенного ПО baseband-процессора или перемещением SIM-карты на другой телефон.
Verizon
Протестированные SIM-карты Verizon пытаются открыть сеансы TCP/TP на порту 8443 по нескольким IP-адресам в блоках 63.55.x.x и 69.78.x.x, используя APN под названием «vznadmin». Поскольку это особый APN, неясно, действительно ли эти IP-адреса являются общедоступными в данном контексте, но если эти IP-адреса являются общедоступными, WHOIS показывает, что они принадлежат Verizon. Поскольку ни один из этих серверов не ответил, я так и не увидел, что на самом деле пыталась сделать SIM-карта, однако я заметил пакеты TCP/IP SYN на уровне SNDCP в Lab Kit, так что да, baseband-процессор действительно пытался открыть эти сеансы. (О, вы не знали, что SIM-карты могут открывать сеансы передачи данных, которые полностью невидимы для процессора приложений?) Я сохранил пример одного из этих SIM-сообщений в Pastebin.
T-Mobile USA
Эта SIM-карта иногда использует проактивное SMS-сообщение для отправки UDP-пакета на порт 1808 на каком-либо сервере по адресу ISDN 122. Оно отправляется через стандартный SMSC T-Mobile USA по номеру +12063130004. Полезная нагрузка закодирована в двоичном формате и содержит ASCII-текст: «Активировать: dt = 15». (Обычное кодирование текста для SMS использует 7-битный набор символов GSM, а не ASCII. Это сообщение M2M.) Пример MO-SMS, полученный со стороны сети, доступенв Pastebin.
Orange Romania
Эта SIM-карта пытается отправить двоичное SMS-сообщение с полезной нагрузкой на ISDN-адрес 5692 через стандартный SMS-центр Orange Romania по номеру +40744946000. Полный пример сохранен в Pastebin. А что внутри сообщения?
Прямо из Wireshark у нас есть:
-
0060 XX XX XX 11 51 01 01 03 08 3a 25 76 03 08 91 23 ..;. Q….:% V… #
-
0070 06 04 0a 98 04 01 81 10 11 30 73 48 f5 05 09 08 ……… 0sH….
-
0080 29 62 01 62 20 51 23 61 06 14 ff ff ff ff bf 4f) bb Q # a …… .O
-
0090 80 ef 7f 00 80 0f 71 84 08 83 63 60 00 00 90 00 …… q… c`….
Как и в примере с AT&T, в этом сообщении используется TLV-форматирование, и большинство полей очевидны:
-
11 51 01: Заголовок
-
03 08 3a 25 76 03 08 91 23 06 : field type 0x03, length 0x08, IMEI
-
04 0a 98 04 01 81 10 11 30 73 48 f5 : field type 0x04, length 0x0a, ICCID
-
05 09 08 29 62 01 62 20 51 23 61 : field type 0x05, length 0x09, IMSI
-
06 14 ff ff ff ff bf 4f 80 ef 7f 00 80 0f 71 84 08 83 63 60 00 00 : field type 0x06, length 0x14, возможно профиль терминала
-
90 00: field type 0x09, length 0, неизвестно
Заключение
Из пяти тир-1 SIM-карт четыре проактивно отправляют сообщения или инициируют соединения через сотовый модем. Поскольку эти операции происходят между SIM-картой и baseband-процессором, их, вероятно, невозможно отследить с помощью процессора приложений и его программ под Android/iOS/любой другой оси.
Комментариев нет:
Отправить комментарий