Simmobilykit что это за программа
Эмуляция и перехват SIM-команд через SIM Toolkit на Android 5.1 и ниже (CVE-2015-3843)
Я обнаружил эту уязвимость, исследуя возможность перехвата одноразовых паролей, которые отправлялись банком поставщику телекоммуникационных услуг, а затем поступали на специальное приложение SIM-карты и выводились на пользовательский интерфейс Android.
Перехват
Представьте, что на SIM-карте есть небольшое приложение, которое получает сообщение от оператора связи и показывает его на экране вашего Android-устройства. Если покопаться в исходниках Android, можно наткнуться на класс com.android.internal.telephony.cat.CatService, который отвечает за передачу команд между слоем радиоинтерфейса (Radio Interface Layer, RIL) и ОС.
И, наконец, broadcastCatCmdIntent() :
А вот эта часть довольно занятная:
Как злоумышленник может этим воспользоваться?
Например, использовать вредоносное приложение, не требующее дополнительных привилегий, для перехвата команд, отправляемых SIM-картой на телефон. Для этого необходимо лишь зарегистрировать receiver с действием android.intent.action.stk.command и получить STK CMD из интента.
Пример перехваченной команды:
Это объект Parcelable в байтах. Преобразовав Hex в ASCII, вы получите сообщение SIM-карты.
Эмуляция
Однако это лишь половина уязвимости. Рассмотрим приложение, которое получает вот такое широковещательное сообщение:
Это приложение называется SIM Toolkit (STK) и является частью стандартного Android-фреймворка. Исходники можно найти тут.
1. SIM-карта запрашивает подтверждение некоторой операции, скажем, транзакции в интернет-банке, выводя на экран телефона сообщение типа «Подтвердить транзакцию № 1234 на сумму 100 500 рублей» с двумя опциями — «ОК» и «Отмена». Код на StkDialogActivity.java:
2. Если пользователь нажмет «ОК», будет вызвана команда sendResponse(StkAppService.RES_ID_CONFIRM, true) ; в противном случае — sendResponse(StkAppService.RES_ID_CONFIRM, false) ;.
3. Что, если при помощи действия android.intent.action.stk.command создать такое же диалоговое окно с другим текстом (поддельное) и вывести его на экран за несколько секунд до генерации SIM-картой оригинального сообщения («Подтвердить транзакцию № 1234 на сумму 100 500 рублей»)? В тексте сообщения напишем «Нажмите ОК для закрытия», а кнопки оставим те же — «ОК» и «Отмена».
4. Пользователь не увидит оригинальный диалог с подтверждением транзакции, пока не выберет одну из этих опций в поддельном окне, так как все команды, требующие взаимодействия с пользователем, помещаются в очередь.
5. Итак, мы остановились на следующем:
Здесь сообщается, что «Недопустимым является отклик, который не имеет соответствующей проактивной команды и отправка которого может “сбить с толку” baseband/ril». На деле, если RIL или SIM-карта будут получать от вас неожиданные отклики, последствия могут быть непредсказуемыми. В ходе моего исследования несколько SIM-карт вышло из строя, так и не загрузив меню.
Заключение
Команда AOSP устранила эту ошибку в обновлении Android 5.1.1 для Nexus-устройств (сборка LMY48I).
Вот некоторые из моих патчей:
Автор: Руководитель отдела безопасности мобильных приложений Positive Technologies (англоязычная версия материала)