[Перевод] Проактивные SIM-карты

23f7c9aaa616f3224bc94585a92babce.jpeg

После столкновения с проактивными SMS-сообщениями от SIM-карты AT&T (перевод статьи тут) я решил проверить и другие SIM-карты. Не секрет, что практически все они поддерживают проактивные функции, но мне стало интересно, сколько карт используют их фактически. Итак, я подготовил испытательный стенд для проверки имеющихся у меня симок.

SIM-карты

На первом этапе я ограничил тестирование крупными «тир-1» операторами, картами которых пользуется множество людей. Вот, что было у меня под рукой:

Все эти SIM-карты были выпущены в период с 2014 по 2019 год.

Испытательный стенд

image-loader.svg

Стенд такой же, как и в первой статье, здесь повторяется для удобства:

  • Инструмент SIMTrace2, который размещается между SIM-картой и телефоном, позволяя отслеживать связь между ними.

  • Телефон. Я использовал Allview Soul.

  • The Legba Lab Kit, настольный эмулятор сети.

  • Обычный считыватель смарт-карт ипрограмма для управления SIM-картами PySim.

Метод

Цель метода — отслеживать обмен данными между SIM-картой и телефоном, чтобы выяснить, какие проактивные функции использует симка. Чтобы активировать карту, будем использовать Lab Kit для имитации домашней сети SIM-карты. Шаги следующие:

  1. «SUT» — это тестируемая SIM-карта.

  2. Используйте PySim и считыватель карты, чтобы получить IMSI тестируемой карты.

  3. Используйте первые 5 или 6 цифр IMSI, чтобы получить PLMN домашней сети SUT.

  4. Запрограммируйте PLMN домашней сети SUT в GSM-эмулятор Lab Kit.

  5. Выключите телефон.

  6. Установите SUT в устройство SIMTrace2.

  7. Начните новый захват в Wireshark.

  8. Запустите программу simtrace2-sniff с пакетами, направленными на ваш хост Wireshark.

  9. Включите телефон.

  10. Обычно телефон распознает домашний PLMN своей SIM-карты и немедленно подключается к эмулируемой сети. Если нет, выберите его вручную.

  11. Оставьте телефон на 5 минут.

  12. Сделайте короткий телефонный звонок.

  13. Отправьте SMS самому себе.

  14. Дайте телефону постоять еще 5 минут.

  15. Проверьте логи 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 у нас есть:

  1. 0060 XX XX XX 11 51 01 01 03 08 3a 25 76 03 08 91 23 …;. Q….:% V… #

  2. 0070 06 04 0a 98 04 01 81 10 11 30 73 48 f5 05 09 08……… 0sH….

  3. 0080 29 62 01 62 20 51 23 61 06 14 ff ff ff ff bf 4f) bb Q # a…… .O

  4. 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 0×03, length 0×08, IMEI

  • 04 0a 98 04 01 81 10 11 30 73 48 f5: field type 0×04, length 0×0a, ICCID

  • 05 09 08 29 62 01 62 20 51 23 61: field type 0×05, length 0×09, 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 0×06, length 0×14, возможно профиль терминала

  • 90 00: field type 0×09, length 0, неизвестно

Заключение

Из пяти тир-1 SIM-карт четыре проактивно отправляют сообщения или инициируют соединения через сотовый модем. Поскольку эти операции происходят между SIM-картой и baseband-процессором, их, вероятно, невозможно отследить с помощью процессора приложений и его программ под Android/iOS/любой другой оси.

image-loader.svg

© Habrahabr.ru