Схема функционирования SMS-шлюза

SMS-спам мобильных телефонов — это достаточно редкое явление в настоящее время. Выглядят подобные атаки обычно следующим образом: на мобильный телефон неожиданно приходит SMS со странным содержанием: «Скоро ваш телефон не сможет принимать сообщения» или же с любым другим текстом. Более того, подобное сообщение может прийти со странного телефонного номера. Через секунду приходит еще одно сообщение, потом еще и еще. За минуту может прийти до ста подобных сообщений. Сообщения будут приходить до тех пор, пока память телефона, выделенная для хранения SMS-сообщений, не будет полностью исчерпана. Даже, если владелец мобильного устройства постарается быстро удалить все поступающие SMS, то ему этого сделать не удастся, так как сообщения будут поступать слишком интенсивно. Узнать от кого приходят странные сообщения невозможно, так как каждое сообщение может быть с различными телефонными номерами отправителей. Причем номера могут быть следующими: ‘+700000000’, ‘ +700000001’ и так далее.

Даже не искушенному пользователю мобильного телефона понятно, что это не шутка кого-то из друзей. Это запланированная и хорошо продуманная атака, направленная на отказ мобильного устройства принимать SMS-сообщения. К тому же отправка даже ста SMS — это совсем не дешево, а значит либо злоумышленник не скупится на средства, чтобы вывести ваш телефон из строя, либо в его арсенале есть очень эффективное средство атаки.

Как реализуется атака?

В ближайшее время SMS-спам для мобильных устройств может стать серьезной угрозой. Очевидно, что SMS-спам — это не рассылка SMS-сообщений с мобильных телефонов, так как для того, чтобы переполнить память с помощью отправляемых сообщений потребуется весьма значительный бюджет. SMS-спам стал возможен благодаря плохой защищенности SMS-шлюзов. SMS-шлюз — это сервисная служба, которая позволяет отправлять и получать SMS-сообщения без использования мобильного телефона.

В общем виде SMS-шлюз представляет собой некий сервер в сети Интернет, который установлен на передающей и принимающей GSM-станции. Этот сервер имеет возможность не только взаимодействовать по тем или иным протоколам с компьютерами в глобальной сети, но и обмениваться SMS-сообщениями с мобильными телефонами пользователей. При этом SMS-шлюз получает из сети Интернет запросы на отправку SMS-сообщений и направляет их получателю. Аналогичным образом происходит обратная пересылка.

Схематично принцип действия подобного SMS-шлюза показан на приведенной выше иллюстрации.

Подобные SMS-шлюзы известны многим пользователям именно благодаря возможности бесплатной отправки SMS-сообщений с сайтов в сети Интернет.

Мало кто знает, что эти же SMS-шлюзы позволяют подключаться к ним коммерческим приложениям для массовой отправки SMS-сообщений.

Многие коммерческие программы пользуются этими возможностями для того, чтобы внедрить на предприятии систему оповещения сотрудников о выплате заработной платы, изменениях в расписании работы и т.д. Это также позволяет автоматизировать процесс отправки SMS-сообщений с поздравлениями в дни рождений работников компании или сообщить зарегистрированным покупателям интернет-магазина, что в продаже появились новые дисплеи для китайских мобильных телефонов.

Для связи с коммерческими приложениями в SMS-шлюзах предусмотрен специальный интерфейс взаимодействия. Обычно такой интерфейс представляет собой четко прописанную последовательность обмена HTTP-запросами.

К сожалению, в настоящее время какого-либо серьезного контроля на таких SMS-шлюзах нет. Поэтому любой злоумышленник может зарегистрировать свою учетную запись на SMS-шлюзе и отсылать SMS-сообщения на любые номера с произвольным содержанием. Все, что необходимо для этого злоумышленнику — это оплатить создание своей собственной учетной записи и пополнить свой баланс на определенную сумму, из которой будут вычитаться деньги за отправленные SMS-сообщения. С учетом того, что многие мобильные устройства выделяют ограниченный размер памяти для хранения SMS-сообщений, злоумышленник может организовать непрерывную посылку сообщений на произвольный номер и, переполнив память телефона, препятствовать получению необходимой информации через SMS-сообщения.

К сожалению, серьезного контроля на коммерческих шлюзах в настоящее время нет, а значит злоумышленники могут использовать их как плацдарм для атаки.

Приведем конкретные примеры подобного вида атак. Подчеркнем, что в приведенном программном коде содержатся преднамеренные неточности, которые не позволят использовать данный код в корыстных целях, но, тем не менее, продемонстрируют реальную опасность возникновения случаев SMS-спама.

Также уточним, что в тексте программы злоумышленника преднамеренно не упоминаются названия небезопасных SMS-шлюзов.

Примитивный HTTP/HTTPS интерфейс для доступа к SMS-шлюзам позволяет организовать массовую рассылку с помощью скриптового языка даже не самому опытному пользователю. При этом какая-либо проверка на большинстве SMS-шлюзов на предмет спама отсутствует.

Более того, некоторые команды, предоставляемые пользователю, работающему через SMS-шлюз, позволяют организовать рассылку однотипных сообщений на несколько мобильных телефонов. Содержание SMS-сообщений в большинстве случаев не проверяется на SMS-шлюзе.

Создание бесконечного цикла отправки SMS приводит к переполнению памяти телефона. Имея на счету даже небольшую сумму денег, злоумышленник способен атаковать несколько мобильных устройств, так как цена одного сообщения на SMS-шлюзе для коммерческой организации крайне мала.

1 <?_
2 $user=»user»;
3 $password=»password»;
4 $apijd=»xxx»;
5 $text=urlencode(«SMS спам!»);
6 $to=»79035555555″
7 $ret= file («http://smscenter.com/auth?user=$user&password=_$password&apiJd=$api_id»);
8 if($ret==»OK»){
9 for ($i=0; $i<100; $i++)
10 {
11 $ret= file (//http://smscenter.com/sendmsg?to=$to&text=$text//);
12 if ($ret == «OK») echo «Success. Message was sent»
13 else echo «Message failed»;
14
15 }
16 else {
17 echo «Authentification failure»; exit();
18 }
19 ?>

В примере приведен код на интерпретируемом языке РНР, который организует переполнение памяти телефона, посылая 100 одинаковых сообщений с помощью услуг SMS-шлюза.

Для осуществления атаки злоумышленник запускает с компьютера, имеющего доступ в Интернет, скрипт, подобный приведенному выше. Скрипт может иметь произвольное название, например, spam.php. Выполнение скрипта осуществляется набором в браузере следующей строки «http://<имя сервера >/spam.php».

Рассмотрим подробнее текст скрипта. В начале программы приводится определение основных используемых переменных, которые нужны для прохождения аутентификации на SMS-шлюзе. Переменные «user» [2] и «password» [3] используются соответственно для хранения имени пользователя и пароля. Идентификатор «api_id» [4] используется для того, чтобы SMS-шлюз мог сопоставить пользователя с его учетной записью и проверить достаточно ли на счету, соответствующем этой учетной записи, денежных средств для отправки SMS-сообщений. Каждый зарегистрированный на SMS-шлюзе пользователь может иметь несколько учетных записей с раздельными денежными балансами. Текст сообщения и адрес атакуемого записываются соответственно в переменные $text [5] и $to [6]. Далее эти переменные используются в самом скрипте.

Согласно протоколу работы SMS-шлюза сначала осуществляется запрос на начало сессии по отправке SMS-сообщения [7]. Ответ принимается с помощью PHP-функции file и проверяется на наличие разрешения на отправку SMS [8]. Выполняется данная проверка путем сравнения ответа с эталонным «ОК». В случае удачной проверки запускается цикл из ста проходов [9].

В каждом из проходов на номер атакуемого абонента отправляется по одному SMS-сообщению. Если отправка прошла удачно, а это проверяется сопоставлением ответа с эталонным «ОК» [12], то на экран выводится сообщение «Success. Message was sent» [12]. Строчка с сообщением «Authentification failure» [17] будет выведена на экран браузера в том случае, если указан неверный идентификатор в переменной $api_id или же на балансе учетной записи пользователя на SMS-шлюзе не хватает денежных средств.