![image](https://habrastorage.org/files/4c2/70c/12f/4c270c12fed34469af0c2f673962c6d7.jpg)
Немного подумав с коллегами, мы решили рассказать, как данная услуга осуществима в реальной жизни.
Изначально мы были скептически настроены по поводу содержания приведённой выше статьи, очевидно написанной неспециалистом в данной области, поэтому решили посмотреть, что на эту тему есть в интернете. Вот несколько ресурсов (safecalls.ru, видео работы, ещё одно видео), которые нас убедили в работоспособности предлагаемой услуги (под вопросом осталась только заявленная безопасность звонков, так как мы не смогли рассмотреть этого на видео, поэтому её наличие ещё будет обсуждаться далее). Кроме того добавились такие требования, как работа с любыми мобильными телефонами и смартфонами, отсутствие необходимости установки программ и наличия подключения к интернету.
Описание работы услуги
Мы постараемся не утомлять читателя техническими подробностями и опишем некоторые процессы на достаточно абстрактном уровне. В случае интереса к каким-то неосвещённым деталям, просим писать вопросы в комментарии. Надеемся, это дополнит общую картину.
Подключение и регистрация в сети
При установке новой sim-карты, первым делом телефон пытается подключиться к домашней сети. Как уже было много раз написано, телефон сортирует доступные частоты по уровню сигнала в порядке убывания и затем настраивается на них по очереди в поисках своего оператора, пока данный процесс не завершится успехом. Рассматриваемая sim-карта, как заявлено, работает в любых странах мира, поэтому, очевидно, что, как правило, работа её проходит не в домашней сети – sim-карта находится в роуминге и для связи использует базовые станции, предоставляемые другими операторами. Только другие операторы «просто так» не предоставляют своё оборудование «не своим» клиентам, происходит это лишь в том случае, если между операторами заключены роуминговые соглашения.
Однако, во-первых, ассоциация GSM старается широко распространить стандартизованные роуминговые соглашения, а во-вторых никто не проверял как работает данная сим-карта в других странах. По непроверенным данным в современном мире чаще всего у всех со всеми есть эти соглашения, но здесь важно не это, а то, что у провайдеров такой услуги должен быть лицензированный оператор, который предоставляет им sim-карты, а у оператора есть роуминговые соглашения.
Как было только, что сказано по умолчанию Ваш телефон подключается к базовой станции с наибольшим уровнем сигнала. Но в целях обеспечения безопасности, а именно – защиты от IMSI Catcher’ов, при использовании данной sim-карты подключение происходит ко второй по мощности BTS (Base Transceiver Station). С технической точки зрения сделать это можно лишь на очень низком уровне, ведь всю логику работы с радиоканалом выполняет baseband processor (модем – отдельное устройство в Вашем телефоне со своей архитектурой и ОС). На Defcon 21 был представлен доклад «The Secret Life of SIM Cards», из него можно понять, что и на sim-карте есть своя ОС и свои приложения. При этом приложения на sim-карте могут отображать простейшие UI control’ы – к примеру услуга «Живой баланс» реализуется именно так, открывать url’ы, отправлять sms’ки, совершать звонки, получать уведомления о начале/завершении вызова.
Данные приложения пишутся на сильно урезанной версии языка Java и для взаимодействия используют SIM Toolkit (STK) API. Документации по поводу работы SIM Applets и baseband processor’а мало, но если функция выбора второй по мощности базовой станции работает, то реализоваться это может именно с помощью SIM Applet’а. Это действительно трудоёмкая и сложная работа (возможно даже невыполнимая — мы не изучали детально документацию на предоставляемый baseband’ом интерфейс), выполнить которую может только высококвалифицированный специалист, но наше мнение – эта функция не поддерживается в этих sim-картах, так как для её выполнения требуется очень много ресурсов, а результат мало того, что сомнительный, так и для абсолютного большинства незаметный (не каждый может проверить). Поэтому скорее всего это просто маркетинговая уловка. Ещё одним аргументом в пользу того, что данная функция не реализована является то, что написанное приложение нужно «залить» на sim-карту. Сделать это, естественно, может не кто угодно, а лишь обладатель ключа OTA Install Key, уникального для каждой sim-карты.
В презентации, указанной выше, есть слайд с оператором Shadytel и распространяемой им sim-картой с Ki, IMSI и OTA Install Key. Мы не знаем является ли он лицензированным, но если является, и организаторы услуги «Hacker SIM» используют этого или подобного оператора, то пользователю данной sim-карты должно плохо спаться, потому что пока он спит на его карту третьи лица могут вовсю заливать код (ведь они знают OTA Install Key).
Что касается принудительного использования алгоритма шифрования A5/1 для трафика между MS и BTS при участии данной sim-карты, то это опять отсылает нас к предыдущему абзацу. Команда на установление алгоритма шифрования приходит MS от BTS в сообщении Ciphering Mode Command протокола Radio Resource Management (поверх LAPDm). Таким образом, sim-карте нужно получить от baseband’а этот пакет и в случае «неподходящего» алгоритма отклонить команду и завершить соединение. Для всего этого baseband должен предоставлять sim-карте очень развитой интерфейс. И опять же встаёт проблема разработки и установки приложения на sim-карту (непонятно даже, что сложнее). Кроме того, возникает ещё один риторический вопрос: а почему только алгоритм A5/1 используется? Понятно, что A5/1 нужен для совместимости со старым оборудованием, но если телефон пользователя и оборудование оператора поддерживают A5/3, то почему бы не использовать его, ведь он, по мнению специалистов в области криптографии, безопаснее? Так что скорее всего и эта фича не реализована.
Осуществление звонка с любого номера
Теперь перейдём к самому интересному – тому, что демонстрируется в видео, подтверждается комментариями к статье, а значит и реализовано – совершению звонков с абсолютно любых номеров.
Идея данного приёма заключается в том, что для звонка в телефонных сетях для идентификации вызывающей стороны (Caller’а) используются одновременно два идентификатора: идентификатор номера, по которому выставляется счёт, и номера, который высвечивается на оборудовании принимающей звонок стороны (Callee).
Те, кого интересуют подробности и детали данной темы могут могут ознакомиться с ней чуть подробнее:
Для начала важно понимать, что обычная телефонная сеть на самом деле состоит из двух. Первая сеть используется для передачи трафика вызовов пользователей, вторая — сеть с коммутацией пакетов, которая используется для установления голосовых вызовов, их завершения, поддержки различных других возможностей, в частности caller id и особых номеров, начинающихся с 800. Эта сеть и есть общеканальная система сигнализации № 7 (Signal System 7, SS7). Изначально доступ к ней имели лишь узлы коммутации и базы данных операторов связи. Однако позже доступ был частично расширен и на PBX (private branch exchange — частные корпоративные линии) для предоставления доступа к caller id и другим возможностям SS7 через ISDN PRI (вид подключения к ISDN и кабеля, используемого для него).
Очевидно, что с возможностью манипулирования сигнальной информацией в SS7 открываются широкие возможности для различных трюков в телефонной сети, в том числе и подмена исходящего номера. Для того, чтобы понять каким образом это делается необходимо рассмотреть процесс установки звонка в обычной телефонной сети. Во время совершения вызова коммутатор на вызывающей стороне формирует и отсылает принимающему коммутационному оборудованию два сообщения по каналу сигнализации SS7. Первое сообщение называется IAM (Initial Address Message). Оно содержит номер абонента, к которому пытаются дозвониться, а также специальный номер ANI (Automated Number Identification) по старой терминологии, или как он сейчас называется CHARGED DN. Этот номер используется для идентификации звонящего абонента и выставления счета (биллинга). Манипулировать им, как правило, невозможно. Этот номер формируется и отправляется коммутационным оборудованием обслуживающего клиента оператора связи. ANI или CHARGED DN высвечивается при приеме звонка у экстренных служб (т.е. вариант позвонить в МЧС с фэйковым номером отпадает – у них на оборудовании отображается ANI, который в общем случае не подменить) и может быть получен частными клиентами для входящих вызовов при использовании доступа к телефонной сети при помощи PRI или SIP.
Коммутационное оборудование принимающего оператора в ответ на первое сообщение IAM формирует второе, которое называется INR (Information Request) и в свою очередь тоже отправляет его по каналу сигнализации SS7 коммутационному оборудованию оператора абонента, осуществляющего вызов.
В ответ на это сообщение, коммутационное оборудование оператора абонента, совершающего вызов, формирует второе сообщение INF. Именно это сообщение и содержит тот самый печально известный CPN (Called Party Number) / Caller ID. Это и есть тот самый номер, который отображается на экране телефона при приеме входящего вызова. Помимо самого номера в сообщении может присутствовать флаг «приватности», который предписывает принимающему коммутационному оборудованию не выдавать номер оборудованию конечного пользователя. В случае если у абонента подключена услуга, позволяющая ему видеть все номера входящих вызовов, то номер скорее всего отобразится в независимости от флага приватности.
Ниже схематично изображён процесс обмена описанными сообщениями:
![image](https://habrastorage.org/r/w1560/files/479/17b/3b7/47917b3b76774c47b8dc44985f292264.png)
Caller ID может быть изменен коммутатором, входящим в состав PBX, и подключенным к каналу сигнализации через PRI или SIP-шлюз.
Следует заметить, что CPN/Caller ID может высылаться сразу в первом сообщении IAM, в таком случае запрос INR и ответ INF не производятся. Однако сути это не меняет: есть отдельный номер, по которому выставляется счет, и отдельный номер, который просто высвечивается на экране телефона, принимающего звонок абонента.
Очевидно, что с возможностью манипулирования сигнальной информацией в SS7 открываются широкие возможности для различных трюков в телефонной сети, в том числе и подмена исходящего номера. Для того, чтобы понять каким образом это делается необходимо рассмотреть процесс установки звонка в обычной телефонной сети. Во время совершения вызова коммутатор на вызывающей стороне формирует и отсылает принимающему коммутационному оборудованию два сообщения по каналу сигнализации SS7. Первое сообщение называется IAM (Initial Address Message). Оно содержит номер абонента, к которому пытаются дозвониться, а также специальный номер ANI (Automated Number Identification) по старой терминологии, или как он сейчас называется CHARGED DN. Этот номер используется для идентификации звонящего абонента и выставления счета (биллинга). Манипулировать им, как правило, невозможно. Этот номер формируется и отправляется коммутационным оборудованием обслуживающего клиента оператора связи. ANI или CHARGED DN высвечивается при приеме звонка у экстренных служб (т.е. вариант позвонить в МЧС с фэйковым номером отпадает – у них на оборудовании отображается ANI, который в общем случае не подменить) и может быть получен частными клиентами для входящих вызовов при использовании доступа к телефонной сети при помощи PRI или SIP.
Коммутационное оборудование принимающего оператора в ответ на первое сообщение IAM формирует второе, которое называется INR (Information Request) и в свою очередь тоже отправляет его по каналу сигнализации SS7 коммутационному оборудованию оператора абонента, осуществляющего вызов.
В ответ на это сообщение, коммутационное оборудование оператора абонента, совершающего вызов, формирует второе сообщение INF. Именно это сообщение и содержит тот самый печально известный CPN (Called Party Number) / Caller ID. Это и есть тот самый номер, который отображается на экране телефона при приеме входящего вызова. Помимо самого номера в сообщении может присутствовать флаг «приватности», который предписывает принимающему коммутационному оборудованию не выдавать номер оборудованию конечного пользователя. В случае если у абонента подключена услуга, позволяющая ему видеть все номера входящих вызовов, то номер скорее всего отобразится в независимости от флага приватности.
Ниже схематично изображён процесс обмена описанными сообщениями:
![image](https://habrastorage.org/files/479/17b/3b7/47917b3b76774c47b8dc44985f292264.png)
Caller ID может быть изменен коммутатором, входящим в состав PBX, и подключенным к каналу сигнализации через PRI или SIP-шлюз.
Следует заметить, что CPN/Caller ID может высылаться сразу в первом сообщении IAM, в таком случае запрос INR и ответ INF не производятся. Однако сути это не меняет: есть отдельный номер, по которому выставляется счет, и отдельный номер, который просто высвечивается на экране телефона, принимающего звонок абонента.
Воздействовать на первый идентификатор (он носит название ANI (Automated Number Identification) или CHARGED DN) противозаконно и, как правило, невозможно. Манипулирование же вторым параметром (Caller ID) может совершаться любым PBX’ом (private branch exchange — частные корпоративные линии), подключённым к ISDN. Таким образом, всякий обладающий доступом к телефонной линии через SIP или PRI, может менять Caller ID на какой ему вздумается не особо переживая о последствиях. Операторы телефонной связи ISDN обычно не проверяют соответствие Caller ID реальному. Провайдеры VoIP еще менее склонны к уменьшению функциональности своих клиентов.
Из этого следует, что номер, отображаемый на экране принимающей стороны подменить очень легко. Так же видно, что анонимность, при совершении вызова в телефонной сети общего пользования полностью отсутствует. Достигается это за счет ANI или CHARGED DN. Именно на основе этого номера работают системы следственно-розыскных мероприятий, в то время, как Caller ID в таких случаях уже никого не интересует.
Практические руководства по тому, как можно это реализовать своими руками, Вы найдёте по запросу в поисковике «Caller ID spoofing».
Кстати, забегая вперёд, скажем, что только звонки имеют Caller ID. При отправке sms’ки сообщение с этим полем не используется. Этим объясняется то, что предлагаемые sim-карты не поддерживают отправку sms. Хотя на сайте это преподносится, как в «целях безопасности».
Установить PBX – по сути, обычную телефонную сеть в офисе – не составляет никакого труда, как с финансовой точки зрения, так и административной. PBX в свою очередь подключается к телефонной сети общего пользования при помощи PRI (провайдер протягивает кабель до Вашего офиса), либо при помощи SIP уже не по телефонному кабелю, а по доступному интернет-каналу. В результате данного мероприятия Вашему офису выделяется пул городских номеров, с которых и на которые можно свободно звонить.
Резюмируя только что сказанное: для звонка с произвольного номера необходимо просто заказать у телефонного оператора ISDN предоставление вам доступа к телефонной сети через PRI или у SIP провайдера телефонной связи доступ через SIP, с возможностью манипулировать некоторыми параметрами голосовых вызовов (в частности Caller ID).
Официальный регулирующий орган FCC (Federal Communications Commission, Федеральная комиссия по связи США) по этому поводу высказываются следующим образом: «Операторы связи должны предоставлять корректный номер для отображения для конечно пользователя, и по возможности имя компании, осуществляющей вызов». За предоставление недостоверной информации для операторов США предусмотрены штрафы. Однако ситуация, когда Caller ID меняется не оператором, не регулируется никак даже в США.
Но, используя данный подход, можно позвонить с произвольным номером (как мы выяснили это Caller ID) лишь с телефона организации, которой принадлежит PBX, а провайдеры услуги произвольного номера заявляют и демонстрируют в многочисленных видео, что позвонить с заданным номером можно с любого мобильного телефона при отсутствии интернета и любого стороннего ПО.
Решение данной проблемы нам кажется действительно интересным (можно даже сказать хакерским). Процесс звонка с мобильного телефона на другой с произвольным исходящим Caller ID изображён на схеме:
![image](https://habrastorage.org/files/61a/cec/c62/61acecc62bec4104aaa588583812551c.png)
На схеме изображено, как абонент с номером 1234567 (будем называть его абонент А) звонит абоненту 7654321 (абонент Б) с произвольным номером.
Первым делом, согласно инструкции с одного из сайтов, предоставляющих услугу sim-карты с возможностью менять исходящий номер, необходимо ввести USSD команду типа 150*номер_телефона*, что абонент А и делает.
Телефон подключён к сети, он находится в роуминге, поэтому первые два шага, изображённые на схеме выполняются тривиально, в полном соответствии с документацией GSM. На третьем шаге MSC (Mobile Switching Center), согласно своим таблицам маршрутизации отправляет запрос на HLR домашнего оператора sim-карты и получает указание на переадресацию USSD на номер 1234123, который в свою очередь является офисным телефоном организации, подключённым к PBX. Последний при помощи кабеля, проложенного провайдером ISDN, через PRI ISDN подключён к SS7. Таким образом, на 4-ом шаге исходная USSD-команда доходит до АТС распространителей это sim-карты. На этом оборудовании, вероятно, запущено специфичное ПО, которое по данному запросу добавляет себе в конфиг правило по замене номера, от которого пришёл запрос, на номер в USSD команде.
Далее абонент А производит звонок абоненту Б. Шаги 1-5 в точности повторяются и звонок доходит до АТС, после чего она «сбрасывает» абонента А. Приложение на АТС в свою очередь, используя Caller ID spoofing для подмены номера, совершает звонок на номера абонентов А и Б. Звонок доходит до абонента А и ему «высвечивается» либо случайный номер, либо номера телефона, подключённого к PBX, параллельно звонок доходит до абонента Б, на экране телефона он видит фэйковый номер телефона и берёт трубку. Далее АТС просто «пробрасывает» трафик, который передаётся во время разговора абонентов.
Хочется отметить, что хоть звонки и устанавливаются через стороннюю АТС, это не прибавляет анонимности, поскольку эту АТС всегда можно найти физически – она зарегистрирована. И после этого нужные люди обязательно узнают, кто и зачем через неё звонит, сопоставят время звонков и получат данные ничем не уступающие детализации звонков, которую можно получить от оператора в случае совершения звонка абонентом с обычной sim-карты.
Так как утверждается, что весь голосовой трафик проходит через одну АТС, несложно догадаться, что именно там меняется тональность голоса абонента. Но это и создает дополнительные риски – поскольку все звонки проходят через неё, не составляет особого труда их там записывать/сохранять/анализировать.
Выводы
В завершении хочется выразить мнение, что звонок с любого номера с выбранной тональностью голоса – штука, бесспорно крутая для розыгрышей и приколов – мы уверены теперь сможет сделать при наличии желания любой читатель, защищённость разговоров, не превышающая обычную, а местами так и уступающая дефолтной защищённости в 2G-сетях (операторы зачастую используют A5/3, о 3G-сетях даже не говорим), отсутствие декларированной анонимности и защиты от прослушки, отсутствие поддержки смс и Интернета, а также потенциальная возможность сбора Вашего голосового трафика третьими лицами (ведь понятно, что они могут не только менять тональность голоса, но и параллельно сохранять и анализировать), — сомнительная услуга за немалые деньги даже при учёте издержек на роуминг.
Отдельно хочется выделить «хакерскую» мысль разработчиков, которые задействовав возможности, которые предоставляет оператор, абсолютно легально (за исключением, быть может, продажи sim-карт без документов) – а ведь у многих первым делом возникал вопрос о легальности данного сервиса – организовали данную услугу. Но, к сожалению, это тот случай, когда выглядит всё намного привлекательнее, чем есть на самом деле.
Следует отметить, что предлагаемая реализация данной услуги с высокой долей вероятности совпадает с тем, что реализовано у людей, её продающих. Но при этом не стоит забывать, что и мы можем ошибаться. Для того же, чтобы расставить все точки над “i”, необходимо приобрести данную sim-карту и поисследовать, как она работает. Но стоимость данного мероприятия остужает исследовательский пыл.