Dmitry Astapov (_adept_) wrote,
Dmitry Astapov
_adept_

Categories:

SMS Fraud: часть 1/X

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

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

Начнем с того, что рассмотрим, каким же путем доставляется обычный SMS с мобильного А на мобильный B.

Для начала - необходимая оговорка. Вместо навевающих депрессию пассажей вида:"мобильный телефон, в который вставлена SIM-карта, в учетной записи которой в соответствующем HLR присутствует сервис "телефония", которому назначен MSISDN A" я буду писать просто: "мобильный с телефоном А", или даже еще проще: "мобильный А". Ну, а вы уже сами в голове достраивайте весь этот дом-который-построил-Джек, ок?

Вторая необходимая оговорка заключается вот в чем: если излагать устройство SMS в деталях и подробностях, придется пересказать половину стандартов GSM, и получится книга в 400 страниц толщиной. Чтобы этого не получилось, я все буду сильно-сильно упрощать, стараясь не растерять по пути важные детали. Я знаю, что меня читают несколько спецов по контентным услугам, програмисты SIM Toolkit-ов и прочие люди, для которых все это - ежедневный хлеб насущный. Убедительная просьба - не судите строго, и ткните пальцем, если я где-то пропущу что-то важное.


mobile-to-mobile SMS
Впрочем, вернемся к SMS-ам. На картинке схематически представлен процесс прохождения SMS-а с мобильного на мобильный. Дальше следует детальное описание каждого пункта.
  1. Итак, с мобильного А отправляется SMS на номер B. Телефон договаривается с базовой о том, что неплохо было бы передать SMS, и довольно скоро SMS долетает по эфиру до базовой, оттуда - до контроллера базовой, а оттуда уже рукой подать до коммутатора (MSC). Как видно, в заголовке SMS указывается, через какой центр обработки SMS (так называемый SMSC) мы хотим отправить SMS. Нужный центр указывается своим адресом, который для всех практических целей выглядит точно так же, как и обычный номер телефона.
  2. Коммутатор, который обслуживает абонента A, получает SMS и стремится побыстрее сбыть его с рук. Для этого он посылает указанному SMS сообщение forwardSMS, передавая в нем SMS в точности в том же виде, в котором он его получил. Обратите внимание, что при этом MSC указывает свой адрес.
  3. SMSC получает сообщение и сохраняет его у себя в очереди. На практике, если абонент B доступен, то SMS в очередь не ставится и сразу происходит его доставка получателю. Однако мы не ищем простых путей и предположим, что абонент B  в это время спустился в железобетонный подвал, чтобы проверить срок годности на запасах консервов, которые он хранит на случай ядерной войны. Адресованный ему SMS оседает в очереди SMSC. При этом SMSC отправляет сообщение в HLR абонента B о том, что SMSC не против будет узнать, когда абонент B снова появится в сети.
  4. Идут годы SMS хранится в очереди SMSC, и занимает тем самым ценные ресурсы дорогостоящего оборудования. У SMSC есть два варианта - выкинуть сообщение или же доставить его. Выкинуть сообщение можно в том случае, если истекло максимальное время ожидание (конфигурируется на SMSC и указывается отправителем, не может быть больше 5 дней). Доставить же SMS можно тогда, когда абонент B появится в сети и будет морально и технически готов этот SMS принять - у него будет свободное место в памяти телефона или SIM-карты, уверенный прием в зоне радиопокрытия и т.п. Попытки доставить SMS происходят либо тогда, когда абонент B регистрируется в сети (HLR абонента B пошлет SMSC нотификацию, о которой тот просил в конце шага 3), либо по истечении определенного промежутка времени. Временные паузы между попытками доставки постепенно возрастают, чтобы не насиловать зря сигнальную сеть
  5. Ура! Абонент B вылез из железобетонного подвала, и SMS может быть ему доставлен. Для этого SMSC надо узнать адрес доставки.
  6. Последнее известное местоположение абонента хранится в его записи в HLR, и именно туда и обращается SMSC, посылая сообщение sendRoutingInfoFor(B).
  7. В ответ HLR сообщает адрес коммутатора, который в настоящее время обслуживает абонента B. 
  8. Радостный SMSC сбывает с рук SMS, отправляя коммутатору сообщение forwardSMS, При этом SMSC сообщает свой адрес (почему эта техническая подробность важна - я объясню позже).
  9. Коммутатор, обслуживающий абонента B, запрашивает в своем VLR более точный адрес абонента B - location area и номер соты в ее пределах.
  10. VLR сообщает информацию, переданную телефоном B во время последнего location update
  11. Коммутатор проводит ковровое бомбометание пейджинг в указанном районе, "будит" телефон абонента B и доставляет ему SMS
Если бы вместо абонента A сообщение отправляла бы какая-то информационная система, то схема, вобщем-то, осталась бы такой же. Единственное отличие - процесс бы начался с шага "2" и сообщение forwardSMS отправляла бы информационная система, а не коммутатор.

Если вы знакомы с тем. как устроен протокол SMTP, то вы наверняка увидите в этой схеме мого общего с тем, как путешествует обычный email. Вместо поиска MX через систему DNS тут используется жестко заданый адрес SMSC. Механизмы sendRoutingInfoFor и getLocationFor напоминают работу протоколов роутинга IP. Слово "адрес" в моем тексте по смыслу очень похоже на "IP адрес" или "доменное имя".

На этом на сегодня всё, а в следующей серии - рассказ про то,  как посылаются SMS-ы от имени "чужого" номера.

Вопросы? (если вы не читали мои старые посты по теме и не знаете смысла некоторых терминов - JFGI или же обратитесь к коллекции моих старых постов на сайте "Про GSM")
Tags: gsm
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 38 comments