Итак, как же происходит взлом? Изначально у злоумышленника есть только номер телефона (MSISDN). Чтобы что-то с ним сделать, нужно получить IMSI. Это можно сделать путем формирования запроса на доставку SMS-сообщения из нашей внешней «сети», эмулируемой на компьютере. В этом случае домашняя сеть сообщает в ответ на запрос адрес MSC/VLR, которыми в данный момент обслуживается абонент: эти данные необходимы для того, чтобы узнать, дома абонент или в роуминге, и если в роуминге, то в какой сети, чтобы в этом случае направлять SMS уже непосредственно туда (с голосовым вызовом так не получится, потому что он всегда проходит через MSC домашней сети — и тот уже определяет, как маршрутизировать вызов дальше). При этом происходит и передача IMSI, поскольку он также необходим для маршрутизации. После этой нехитрой процедуры мы имеем IMSI для управления параметрами «учетной записи» абонента, адрес HLR, в котором эти параметры хранятся, а на сладкое – в какой стране жертва сейчас находится.
Схема атаки для получения IMSI
Теперь можно получить запрос точного местоположения абонента: атакующий, зная текущий MSC/VLR, отправляет туда запрос о том, какой базовой станцией обслуживается абонент с таким-то IMSI. В ответ приходит уникальный идентификатор БС, по которому через открытые базы данных можно узнать, где она находится, и с точностью до пары сотен метров найти абонента — так же, как определяют местоположение смартфоны с выключенным GPS.
Схема атаки для определения местоположения абонента
Почему бы теперь не похулиганить? Давайте сообщим в HLR о том, что абонент зарегистрировался в роуминговой сети: передадим IMSI и адрес нового MSC/VLR. Теперь никто не сможет жертве ни позвонить, ни отправить SMS: домашняя сеть переадресует запросы в никуда, при этом абонент будет по-прежнему зарегистрирован в сети и ничего не заподозрит.
Схема атаки для блокировки доступности жертвы
Кстати, а зачем отправлять звонки и SMS в никуда? Не пропадать же добру! Давайте укажем свой MSC/VLR — и весь трафик будет направлен нам! Например, таким образом можно собрать одноразовые SMS-пароли для двухфакторной авторизации в различных сервисах, а это создает почти что неограниченные возможности для кражи денежных средств и учетных записей. А можно просто читать всю SMS-переписку, причем жертва даже не заподозрит, что за ней следят. Дело в том, что SMS требует от MSC/VLR подтверждения его доставки, и если его не отправлять (у нас же не настоящая сеть, а эмуляция, можно получить сообщение, но сказать, что не получали), а вместо этого перерегистрировать абонента на «настоящий» MSC, то через несколько минут будет предпринята еще одна попытка доставки сообщения и оно поступит адресату. То есть одно и то же SMS будет отправлено два раза: сначала вам, потом ему.
Схема атаки для перехвата SMS-сообщений, адресованных жертве
Как известно, USSD-запросы всегда работают и в роуминге, позволяя проверять баланс, подключать разные услуги и тарифные опции. Сымитировав USSD-запрос от VLR к HLR (тут нужен MSISDN, адрес HLR и собственно сам запрос в виде комбинации цифр, звездочек и решеток), можно, например, инициировать перевод средств с одного счета на другой. У некоторых операторов для подтверждения этой операции используется SMS-авторизация, но SMS перехватывать мы с вами только что научились.
Схема атаки с отправкой USSD-запросов от имени жертвы
Изменив параметры учетной записи абонента в VLR, в частности адрес биллинговой системы, злоумышленник может перехватить запрос на тарификацию исходящего вызова — в нем будет виден номер абонента, которому пытается позвонить жертва. Теперь этого абонента тоже можно сделать жертвой: тот же способ, что и для перехвата SMS, позволит переадресовать вызов на номер злоумышленника, а уже он инициирует конференц-связь с настоящим абонентом, тихо подслушивая разговор. Входящие вызовы, соответственно, прослушать можно тем же способом, но без необходимости эмулировать биллинговую систему. Все эти процедуры проходят за несколько секунд, и никто из собеседников не заподозрит, что между ними есть кто-то третий. Кроме того, можно перенаправить трафик не для прослушивания, а в какой-нибудь дорогой сервис вроде «секса по телефону» и тому подобных: это можно неплохо монетизировать, так как плата за соединение будет списываться со звонящих.
Схема атаки с прослушкой разговоров абонента
Наконец, с помощью ОКС-7 можно устроить настоящую DoS-атаку на коммутатор, которая приведет к невозможности принимать входящие вызовы у всех абонентов, находящихся в зоне его обслуживания. Для этого нужно знать, что при регистрации в VLR выделяется временный роуминговый номер, который нужен, чтобы MSC знал, куда именно направлять вызов. К общеупотребительному понятию роуминга (международного или внутрисетевого) роуминговый номер имеет весьма отдаленное отношение. Он выделяется и в домашней сети: несмотря на то, что MSC и VLR, как правило, объединены, по стандарту GSM это два независимых логических элемента сети, и между ними все равно происходит обмен сигнальными сообщениями. Так вот, если массово отправлять запросы на выделение роуминговых номеров, то их пул закончится, и «настоящим» абонентам никто не сможет дозвониться из-за перегрузки коммутатора.
Схема DoS-атаки на коммутатор
Что же делать? Пока можем рассказать лишь о том, «как страшно жить»: решения для защиты в основном сводятся к мониторингу атак для выявления подозрительной активности по вышеописанным сценариям — это позволяет выборочно блокировать определенные запросы. Между тем операторы стараются не афишировать наличие уязвимостей: на их бизнес возможности взлома практически не влияют, а абонентам можно посоветовать все-таки не вести по телефону конфиденциальных переговоров и не полагаться на SMS для авторизации. Кроме того, для подобных целей лучше приобрести отдельную SIM-карту, номере которой не будет знать никто из вашего круга общения.