После столкновения с проактивными SMS-сообщениями от SIM-карты AT&T (перевод статьи тут) я решил проверить и другие SIM-карты. Не секрет, что практически все они поддерживают проактивные функции, но мне стало интересно, сколько карт используют их фактически. Итак, я подготовил испытательный стенд для проверки имеющихся у меня симок.   На первом этапе я ограничил тестирование крупными «тир-1» операторами, картами которых пользуется множество людей. Вот, что было у меня под рукой:   AT&T (рассмотрено, но перечислено для полноты) Verizon T-Mobile USA Vodafone Romania Orange Romania Все эти 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/IP на порту 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-текст: «Activate: 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/любой другой оси.