12 ноября 2015
Степан Зайцев
Можно ли по номеру телефона узнать, где находится человек? Можно! А заодно можно его ограбить и подслушать его разговоры. И если верить специалистам Positive Technologies, это совсем не так уж сложно
Некоторое время назад в Интернете была популярна «разводка» в виде «программы для пробивки мобильного номера». Где-то ее предлагали бесплатно скачать, где-то продавали за деньги, где-то она была «реализована» в виде онлайн-сервиса – итог был в любом случае один: зараженный трояном компьютер или утечка средств с мобильного счета через платную подписку или другие подобные относительно честные способы. Наученные горьким опытом и комментариями сотовых операторов пользователи практически уверовали в то, что создание такой программы невозможно физически.
Тем не менее взломать сотовую сеть и определить местоположение абонента, прочитать его SMS, подслушать разговоры и даже украсть со счета деньги с помощью USSD-запроса не просто, а очень просто. Компания
Positive Technologies выпустила
отчет о безопасности сетей сотовой связи; проведенное ею исследование наглядно демонстрирует, что подобные «фокусы» доступны даже начинающему хакеру.
Типичное предложение услуг на одном из форумов
Никаких «шпионских штучек» (хотя, по данным Сноудена, именно этими способами пользовалось АНБ для слежки за людьми по всему миру) для этого не потребуется. Тем более что сами спецслужбы в них и не нуждаются: все сети и так подключены к СОРМ, поэтому все ваши разговоры и переписка, а при проведении разыскных мероприятий – и местоположение вполне доступны соответствующим органам и без взломов. А вот то, что доступ к вашей персональной информации может получить фактически любой школьник – не самая хорошая новость.
Спрос на услуги есть, цена доступная практически каждому
Главная уязвимость находится в протоколах сигнализации ОКС-7 (в западной литературе называется SS7), разработанных в конце 1970-х годов и принятых в 1981-м. Тогда это был прорыв в плане безопасности, потому что для сигнализации (то есть для передачи служебных команд во время установления телефонного соединения) стал использоваться отдельный канал, физически недоступный абоненту. До этого все команды в виде тоновых сигналов передавались прямо в линию и, например, на основе недокументированных функций старых протоколов удалось реализовать АОН на аналоговых АТС: телефонный аппарат отправлял запрос номера и получал от станции ответ. Изначально это было придумано для междугородных АТС, чтобы после набора восьмерки на городской АТС можно было понять, кому выставлять счет за разговор. Однако использование для сигнализации того же канала, что и для разговора, позволило определять номера кому угодно, а особенно продвинутым – и вовсе разговаривать по межгороду за чужой счет путем спуфинга запросов номера.
«Но сигнальный канал же недоступен для абонента!» — скажете вы. Однако дело в том, что в начале 2000-х годов была разработана спецификация SIGTRAN, позволяющая передавать команды ОКС-7 по IP-сетям. И получилось так, что незащищенные протоколы (ведь их разработчики исходили из того, что до сигнального канала никто физически не доберется, поэтому сочли нецелесообразным все усложнять) оказались в общедоступных IP-сетях, и теперь достаточно только компьютера с подключением к Интернету и нехитрого ПО: авторы отчета использовали Linux-систему с установленным SDK для формирования пакетов SS7. Вся идея взлома строится на том, что система не проверяет источник пакета (еще раз: по логике разработчиков, он физически не может появиться извне), поэтому обрабатывает команды злоумышленника точно так же, как и легитимные, позволяя полноценно «вклиниться» и реализовать атаку типа man-in-the-middle. Фильтровать эти пакеты невозможно, потому что нельзя достоверно установить их легитимность.
Схема подключения для атаки через ОКС-7
Впрочем, немного огорчим
кулхацкеров, уже собравшихся похулиганить, не вставая с дивана: для проведения атак недостаточно установить нужное ПО, эмулирующее оборудование оператора. Нужно еще и подключение в качестве оператора, которое, однако, легко купить на черном рынке: в ряде стран, где операторскую лицензию выдают кому попало, подобный «бизнес» процветает, а для успешной атаки не важно, из какой страны ваш «оператор»: заплатил за доступ к шлюзу – и атакуй абонента в любой точке мира. Блокировка пакетов ОКС-7 из-за рубежа в данном случае не спасет, потому что приведет к невозможности работы роуминга и международной связи. Кроме того, получить доступ к сети оператора можно, например, и путем взлома фемтосоты. И наконец, можно вообще быть гуманитарием и просто заказать услугу. Например, ее под брендом SkyLock предлагает компания Verint.
В рамках сервиса SkyLock можно купить подключение напрямую к оператору через IP-SEC
Прежде чем перейти к описанию самих атак, напомним о том, как устроены сети мобильной связи. У вас есть номер. Например, +79992128506. Это MSISDN (Mobile Subscriber Integrated Services Digital Number). Он не хранится в SIM-карте, как многие думают. В SIM-карте хранится другой идентификатор – IMSI (International Mobile Subscriber Identity), который передается в сеть только во время регистрации абонента. Это 15-значное число вида 250115556667778, в котором 250 – код страны, 11 – код оператора, а остальные 10 цифр – внутренний уникальный номер данной SIM-карты (MSIN, Mobile Subscriber Identification Number). Именно IMSI используется для идентификации абонента внутри сотовой сети, то есть для совершения каких-либо операций с номером.
Информация о соответствии IMSI и MSISDN (то есть у какого абонента какая SIM-карта) хранится в базе данных, именуемой HLR (Home Location Register), причем таких баз может быть несколько – именно поэтому, например, при попытке поменять SIM-карту на новую в салоне оператора может не оказаться SIM-карт именно для вашего номера, так как IMSI имеющихся SIM-карт могут быть уже занесены в другую HLR. При этом для каждого из сегментов сети (коммутаторов) используется аналогичная база данных VLR (Visitor Location Register) — ее отличие заключается в том, что данные в ней хранятся временно, копируясь из HLR при появлении абонента именно в этой части сети. В VLR также хранятся данные о текущем местоположении абонента (чтобы знать, через какую базовую станцию ему направлять входящий звонок и сообщение), настройки переадресации и тому подобное. Всеми этими данными пользуется для своей работы коммутатор, он же MSC (Mobile Switching Center).
В сервисе SkyLock местоположение любого абонента указывается на карте: интерфейс понятен любому, весь взлом выполняет программа
Итак, как же происходит взлом? Изначально у злоумышленника есть только номер телефона (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-карту, номере которой не будет знать никто из вашего круга общения.