Реклама услуги оплаты пиццы для постоянных клиентов с помощью отправки SMS-сообщения с мобильного телефона

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

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

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

Такие системы достаточно распространены при работе с постоянными клиентами. Так в США многие пиццерии позволяют своим постоянным клиентам делать заказ прямо с мобильного телефона, номер которого есть в базе данных кафе-ресторана и привязан к адресу проживания их клиента.

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

Признаки атаки:

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

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

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

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

Все большее количество SMS-шлюзов переходит на работу по протоколу SMPP.

SMPP (Short Message Peer to Peer) является протоколом взаимодействия клиента и SMS-шлюза. SMS-шлюз, как уже говорилось, является связующим звеном между пользователем, работающим в Интернете, и оператором сотовой связи, который отвечает за непосредственную отправку SMS-сообщений.

Протокол SMPP является гораздо более сложным, чем протокол HTTP, но при этом производительность его гораздо выше. Это объясняется тем, что данный протокол является бинарным. Этот протокол используется в режиме постоянного подключения, в то время как при работе с протоколом HTTP клиент устанавливает соединение, отправляет запрос, сервер ему отвечает, и соединение закрывается. Постоянное подключение позволяет значительно повысить скорость передачи, так как не требуется каждый раз устанавливать соединение.

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

Чтобы отправить SMS-сообщение по SMPP-протоколу через SMS-шлюз, необходимо:

  • подключиться к SMPP-шлюзу;
  • отправить серверу сообщение BIND_TRANSMITTER, указывающее на запрос со стороны клиента с целью создания постоянного соединения с SMS-шлюзом;
  • дождаться от сервера сообщения BIND_TRANSMITTER_ RESP, которое указывает на то, что запрос о создании соединения принят или отвергнут;
  • отправить сообщение SUBMIT_SM, которое отвечает за отправку SMS-сообщения и содержит текст этого сообщения;
  • дождаться от сервера сообщения SUBMIT_SM_RESP;
  • разорвать соединение, отправив сообщение UNBIND.

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

Подключение к SMPP-cepвepy. SMPP-сервер — это часть SMS-шлюза, которая отвечает за работу с клиентскими приложениями по SMPP-протоколу.

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

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

Отправка BIND_TRANSMITTER. Необходимо отметить, что работа по протоколу SMPP состоит в обмене пакетами данных между клиентом и сервером в обоих направлениях. Все сообщения, которыми обмениваются клиент и сервер, имеют стандартизованные названия, например: BIND_TRANSMITTER, BIND_TRANSMITTER_ RESP и т. д. Каждое сообщение состоит из нескольких частей — заголовка и непосредственно тела сообщения.

Сообщение BIND_TRANSMITTER необходимо отправлять для того, чтобы открыть сессию. Если попытаться сразу отправить SUBMIT_SM, то SMPP-сервер сообщит об ошибке.

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

Следует заметить, что злоумышленник не делает этого, поскольку задача атакующего только отправить SMS, затратив при этом минимум усилий.

Ожидание BIND_TRANSMITTER_RESP. До того, как придет BIND_ TRANSMITTER_RESP, сессию нельзя считать открытой, а потому никакие другие сообщения отправлять не следует. Получив BIND_ TRANSMITTER_RESP, нужно убедиться в том, что значение поля «статус» в заголовке равно нулю. Это означает отсутствие ошибок при выполнении команды. Только клиент с минимальными возможностями может позволить себе не анализировать это поле, поскольку его ненулевое значение обычно связано с некоторыми серьезными проблемами.

Отправка SMS с помощью SUBMIT_SM. Кульминацией работы по SMPP-протоколу является отправка SMS-сообщения. В случае с рассматриваемым протоколом речь идет об отправке сообщения, которое включает в себя адрес получателя, адрес отправителя, текст сообщения и множество других параметров. Как правило, служебная информация сообщения содержится в заголовке (время отправки, кодировка и т. д.), а само сообщение следует сразу за заголовком.

Ожидание сообщения SUBMIT_SM_RESP. Этим сообщением сервер подтверждает факт принятия SMS в обработку. Это еще не означает, что SMS отправлено, и даже не означает, что сообщение будет отправлено. Но в большинстве случаев можно считать сообщение отправленным. Однако злоумышленник может усложнить атаку, вынудив клиента получить подтверждение от сервера о состоявшейся доставке сообщения клиенту.

Разрыв соединения. Перед разрывом самого соединения надо закрыть сессию, отправив сообщение UNBIND и дождавшись сообщения UNBIND_RESP. Если этого не сделать, то отправка сообщения все равно произойдет, но таким образом можно «испортить отношения» с сервером, которому придется самому инициировать разрыв соединения.

Перейдем к рассмотрению действий злоумышленника при возможной реализации данной атаки. Для понимания принципов и технических аспектов функционирования средств, используемых злоумышленником, рассмотрим пример, написанный на языке программирования РНР, который является достаточно простым для понимания.

1 <?
2 require_once(‘$mppclass.php’);
3 $smpphost = «203.199.142.41»;
4 $smppport = 2345;
5 $systemid = «idsfds»;
6 $password = «es223″;
7 $system _type = «Rdsd «;
8 $from = «79035050210»;
9 $smpp = new SMPPCIassQ;
10 $smpp->SetSender($from);
11 $smpp->Start($smpphost, $smppport, $systemid, $password, $system_type);
12 $smpp->Te$tLink();
13 $smpp->Send(«4378″, «Picca:FAVl»);
14 $smpp->End();
15 ?>

В первой строке примера подключается специальный класс РНР для работы с SMPP-протоколом. Подобные классы реализованы практически для всех языков программирования, чтобы пользователь имел возможность, не вникая в тонкости работы бинарного протокола, реализовать свое приложение. Далее идет блок, где определяются основные переменные, которые позже используются в программе. В переменных $smpphost и $smppport определены ІР-адрес и порт SMPP-сервера соответственно [3], [4]. Далее в переменных $systemid, $password и $system_type определяются необходимые для авторизации на сервере данные: идентификатор и пароль, а также идентификатор пользователя на SMPP сервере, соответственно [5], [6], [7]. В переменной $from определяется ключевая с точки зрения атаки информация — номер отправителя, который может быть любым [8]. Далее идет непосредственная реализация кода программы.

В строке 9 создается новый класс SMPP, который как раз призван облегчить работу с SMPP-протоколом. Первым делом после этого злоумышленник устанавливает номер отправителя с помощью команды класса SetSender [10]. После этого осуществляется подключение к SMPP-серверу и авторизация.

Эта сложная операция осуществляется всего лишь одной строкой кода с использованием объявленной в классе функции Start [11]. Эта функция осуществляет как подключение к серверу, так и отправку сообщения BIND_TRANSMITTER, а также получение сообщения BINDTRANSMITTERRESP.

Все эти непростые операции скрыты от нас благодаря использованию класса РНР. Отправка SMS с помощью сообщения SUBMIT_ SM и получение подтверждения SUBMIT_SM_RESP также выполняются с помощью функции класса Send, которой передается два параметра: номер получателя (в этом примере короткий номер службы оплаты), а также текст сообщения (в нашем случае текст формата «Товар: код заказываемого товара») [13]. И наконец, окончание соединения оформляется с помощью функции End класса SMPPClass() [14].

ЗАЩИТА ОТ АТАКИ

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

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

Не стоит оставлять без внимания такие проявления злонамеренных действий, так как, предупредив эти атаки, вы сможете сэкономить миллионы рублей честным обладателям мобильных устройств.

К сожалению, настроить собственный телефон таким образом, чтобы исключить возможность незаконного съема средств невозможно. Ни антивирусные системы, ни настройки мобильных устройств не смогут полностью вас обезопасить. Таким образом, лучшим оружием в данной ситуации должна быть ваша бдительность.

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

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

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