Представьте обычный интернет-магазин. Посетитель вводит номер телефона, нажимает «Получить код», магазин отправляет SMS и платит оператору несколько рублей. Ничего необычного. Теперь представьте, что за ночь кто-то нажал такую кнопку 50 тысяч раз, подставляя разные номера. Новых покупателей почти нет, зато счёт за связь вырос на сотни тысяч рублей. Причём сайт никто не взламывал, пароли не крал, а серверы продолжали исправно работать.
Так действует СМС-пампинг (SMS pumping), разновидность телекоммуникационного мошенничества, при которой злоумышленники искусственно увеличивают объём платных сообщений. В международной терминологии используется также название Artificially Inflated Traffic (AIT), то есть искусственно раздутый трафик. В отличие от классического взлома, атакующие часто используют вполне законные функции сайта. Достаточно найти форму, которая отправляет SMS по запросу пользователя, и превратить её в источник постоянных расходов.
Особенность схемы заключается в экономике. Каждый запрос может обходиться компании в копейки или рубли, но десятки тысяч запросов превращают небольшую техническую недоработку в серьёзный финансовый убыток. Иногда организатор атаки получает часть доходов от искусственно созданного трафика. В других случаях злоумышленник просто пытается разорить конкурента или нарушить работу сервиса.
Первое, что стоит проверить владельцу бизнеса, сколько SMS компания оплачивает и сколько получателей действительно завершают регистрацию или вход. Если количество отправленных кодов быстро растёт, а успешных подтверждений почти не прибавляется, нужно проверить трафик на признаки злоупотребления. Не менее полезно сразу установить ограничения на повторные запросы и выяснить, способен ли SMS-провайдер автоматически останавливать расходы.
Проверяйте защиту только на собственных системах или с разрешения владельца. Массовые запросы SMS на чужих сайтах способны вызвать реальные расходы и нарушить работу сервисов. При анализе событий учитывайте требования к защите персональных данных и не сохраняйте коды подтверждения в открытых журналах.
Как работает СМС-пампинг и откуда у мошенников деньги
Обычная схема подтверждения номера устроена просто. Пользователь вводит телефон, сервер обращается к SMS-провайдеру через программный интерфейс API, провайдер передаёт сообщение в мобильную сеть, а получатель вводит код на сайте. Компания оплачивает услугу по тарифу, который зависит от направления, оператора, условий договора и особенностей сообщения.
Слабое место появляется там, где отправка SMS не требует достаточной проверки самого запроса. Если сервер принимает произвольные номера и не ограничивает частоту отправки, злоумышленник получает возможность расходовать деньги компании практически без участия реальных пользователей.
Типичная атака проходит несколько этапов.
- Поиск платной функции. Мошенники обнаруживают регистрацию по телефону, восстановление пароля, отправку ссылки на приложение, подтверждение заказа или другую операцию, которая вызывает SMS.
- Подготовка номеров. Для атак могут использоваться большие наборы телефонных номеров, включая диапазоны определённых операторов или направлений с высокой стоимостью доставки.
- Автоматизация запросов. Боты имитируют обращения пользователей к сайту или мобильному API. При слабой защите каждый допустимый запрос заставляет сервер инициировать новое сообщение.
- Создание оплачиваемого трафика. SMS-провайдер обрабатывает сообщения, мобильные сети получают трафик, а расходы относятся на компанию, которая заказала отправку.
- Получение выгоды. При мошенничестве с разделением доходов часть денежных поступлений от трафика достаётся организаторам схемы через участников телекоммуникационной цепочки или посредников.
Последний этап отличает классический SMS pumping от обычного SMS-бомбинга. При SMS-бомбинге атакующие могут заваливать сообщениями конкретного человека, мешать нормальной работе приложения или расходовать лимиты. При коммерческом пампинге главным мотивом становится заработок на искусственном трафике. Однако для владельца сайта первоначальные симптомы часто одинаковы.
Почему операторы вообще могут участвовать в подобной схеме? Международный SMS-трафик проходит через цепочку поставщиков связи и маршрутизаторов сообщений. Между участниками действуют договоры и взаиморасчёты. В отдельных схемах мошенники договариваются с посредниками или эксплуатируют коммерческую модель небольших операторов, получающих доход от входящего трафика.
При этом участие мобильного оператора в такой цепочке не доказывает его сговора с мошенниками. Организатор может использовать существующие правила взаиморасчётов без ведома оператора. Именно поэтому обнаружить подозрительный телефонный диапазон проще, чем доказать, кто конечный выгодоприобретатель.
Высокая цена направления также не делает номер мошенническим. Многие международные SMS действительно стоят заметно дороже внутренних. Атакующим выгодно сочетать высокую стоимость доставки с большим количеством сообщений, но само по себе дорогое направление не служит доказательством преступной схемы.
Сколько денег можно потерять
Предположим, интернет-магазин отправляет 5000 SMS в день, а средняя стоимость одного сообщения составляет 3 рубля. Обычные ежедневные расходы равны 15 тысячам рублей.
Во время атаки появляется ещё 40 тысяч платных сообщений по направлению стоимостью 9 рублей за SMS. Дополнительный расход составит 360 тысяч рублей. Если атака продолжается трое суток, сумма вырастет до 1,08 млн рублей. Числа условные и показывают механизм расчёта, а не среднерыночные тарифы.
Реальные потери зависят от цены каждого направления, количества тарифных сегментов, комиссии провайдера и условий списания средств. Отдельная неприятность связана с длиной SMS. Одно длинное сообщение может тарифицироваться как несколько.
Например, стандартное SMS с кириллицей обычно использует кодировку UCS-2. В один сегмент помещается до 70 символов, а при склейке длинного сообщения на каждый сегмент остаётся 67 символов. Текст длиной 80 символов уже потребует двух сегментов. В таком случае провайдер с посегментной тарификацией может выставить двойную стоимость. Существуют особенности отдельных сетей и договоров, поэтому окончательную стоимость нужно проверять по детализации.
Есть и более неприятный нюанс. Неудачная доставка не всегда означает отсутствие расходов. Например, Twilio взимает плату за сообщения, для которых была предпринята попытка доставки, даже если статус впоследствии изменился на undelivered. Для части неудачных запросов могут действовать отдельные сборы. У других поставщиков правила отличаются.
Получается, мошеннику необязательно читать SMS, знать код подтверждения или контролировать каждый телефон. Финансовый ущерб возникает раньше, чем пользователь завершит регистрацию.
Как обнаружить СМС-пампинг до получения огромного счёта
Главная ошибка многих компаний заключается в том, что SMS-трафик учитывается отдельно от бизнес-результата. Разработчики видят успешные обращения к API, маркетологи считают новые регистрации, бухгалтерия получает счета, но никто не сопоставляет отправленные сообщения с подтверждёнными номерами.
Для выявления пампинга нужно следить не только за количеством SMS, но и за поведением пользователей после отправки кода.
| Признак | Что происходит | Что проверить |
|---|---|---|
| Резкий рост SMS | Количество сообщений многократно превышает обычную нагрузку | Время начала, источники запросов, страны назначения и изменения в продукте |
| Мало подтверждений | Коды отправляются, но пользователи редко вводят их | Долю успешных проверок, ошибки доставки и работоспособность формы |
| Скопление номеров | Трафик концентрируется в отдельных диапазонах | Операторов, префиксы, стоимость маршрутов и историю отправок |
| Новые направления | Сообщения внезапно уходят в страны без обычной клиентской активности | Географические ограничения и реальные рынки присутствия |
| Много новых устройств | Запросы приходят из необычных сессий и технических окружений | Поведенческие признаки автоматизации и связи между запросами |
| Рост расходов без заказов | SMS-бюджет расходуется, но продажи и активные пользователи не растут | Стоимость успешного подтверждения и новые зарегистрированные аккаунты |
Особенно полезна конверсия подтверждений, то есть доля процедур, в которых пользователь действительно ввёл правильный код. Допустим, в обычные дни 75% запросов завершаются подтверждением, а сегодня показатель упал до 8%. Подобное изменение требует проверки, особенно если одновременно выросли расходы.
Однако фиксировать универсальный порог нельзя. На конверсию влияют проблемы доставки, задержки мобильных сетей, ошибки интерфейса и даже маркетинговые кампании, которые приводят менее заинтересованную аудиторию. Злоумышленники также могут подтверждать часть номеров, чтобы трафик выглядел естественнее.
Для мониторинга полезно собирать события отправки и подтверждения в одну систему. Например, в PostgreSQL можно выполнить запрос к таблице otp_sessions, если приложение хранит одну запись на процедуру подтверждения, количество отправленных сообщений, страну и фактическую стоимость.
SELECT
date_trunc('hour', created_at) AS hour,
country_code,
COUNT(*) AS requests,
SUM(sms_count) AS messages,
COUNT(*) FILTER (
WHERE verified_at IS NOT NULL
) AS confirmed,
ROUND(
SUM(COALESCE(sms_cost_rub, 0)),
2
) AS cost_rub
FROM otp_sessions
WHERE created_at >= NOW() - INTERVAL '24 hours'
GROUP BY 1, 2
ORDER BY cost_rub DESC;
Названия таблицы и полей приведены как пример, поэтому запрос нужно адаптировать к собственной базе. Поле sms_count должно учитывать повторные отправки, а стоимость лучше получать из событий биллинга SMS-провайдера. Если провайдер передаёт цену с задержкой, система должна отдельно оценивать ещё не выставленные расходы.
Полезно дополнительно группировать трафик по идентификатору оператора, клиентской сессии, устройству и диапазону номеров. Телефоны лучше приводить к международному формату E.164 до анализа. При этом префикс не всегда позволяет точно определить действующего оператора из-за переноса номеров между сетями.
Не следует хранить больше персональных данных, чем требуется для расследования. Для объединения событий можно использовать защищённые внутренние идентификаторы или ключевой HMAC номера, а полный телефон оставлять только в системе, где доступ действительно необходим.
Проверка на практике. Возьмите статистику за последние две недели, рассчитайте обычные расходы и конверсию по часам, дням недели и странам. Затем настройте уведомления при отклонении от привычного диапазона. Начать можно с простых порогов, но окончательные правила лучше подбирать по накопленной статистике, чтобы не блокировать реальные рекламные кампании и сезонные всплески.
Как защитить бизнес от SMS pumping
Надёжная защита строится в нескольких местах одновременно. Проверять нужно не только саму веб-форму, но и серверную логику, SMS-провайдера, расходы и способы входа пользователей. Одна CAPTCHA не заменяет ограничения отправки, а ограничения по IP не спасают от распределённых ботов.
Ограничьте отправку на стороне приложения
Начать стоит с запрета бесконтрольных повторов. Для типовой формы подтверждения разумным первоначальным правилом может быть не чаще одного SMS на номер в 60 секунд, не более трёх отправок за час и пяти за сутки. Порог нужно подбирать по реальному поведению клиентов. Для отдельных сценариев восстановление доступа может требовать других значений.
Ограничивать только конкретный номер недостаточно. Мошенник способен менять телефоны на каждом запросе. Дополнительные ограничения должны учитывать IP-адрес, пользовательскую сессию, признаки устройства, телефонный диапазон, страну и суммарную стоимость отправок.
На практике правила должны работать совместно. Если с одного устройства запрашивают коды на десятки разных телефонов, приложение повышает уровень риска. Если большое количество устройств внезапно начинает отправлять сообщения в небольшой диапазон номеров, защита реагирует на общий поток, даже когда каждое устройство отдельно соблюдает лимит.
При этом жёсткая блокировка одного IP создаёт побочные эффекты. Тысячи обычных пользователей могут выходить в интернет через общий адрес мобильного оператора, корпоративный шлюз или публичный Wi-Fi. Поэтому IP полезен как один из признаков риска, но не как единственный критерий.
Для реализации лимитов подходит Redis или другое быстрое хранилище с атомарными операциями и ограниченным временем жизни счётчиков. Проверять лимит нужно до обращения к платному SMS API, а не после ответа провайдера. Повторные запросы с тем же идентификатором операции следует обрабатывать без создания лишних отправок.
Хорошая практика заключается в повторном использовании ещё действующего кода вместо генерации нового при каждом нажатии кнопки. Но повторная передача действующего кода тоже расходует SMS-бюджет, поэтому таймер и ограничения повторной отправки должны сохраняться.
Поставьте защиту от ботов перед формой и API
CAPTCHA помогает отсечь часть автоматических обращений, особенно простые сценарии с массовой отправкой форм. Подходят Cloudflare Turnstile, reCAPTCHA или аналогичные механизмы, совместимые с инфраструктурой компании.
Критичная деталь касается серверной проверки. Например, для Cloudflare Turnstile обязательно проверять токен через Siteverify. Простой виджет в браузере не защищает сервер, если API принимает запросы без подтверждения действительности токена.
Однако CAPTCHA нельзя считать окончательным решением. Более сложная автоматизация способна имитировать обычных пользователей, распределять запросы и использовать разные устройства. Защитные механизмы должны также анализировать поведение клиента и ограничивать платные операции непосредственно на сервере.
Отдельно проверьте мобильное приложение. Нередко разработчики защищают веб-страницу, но оставляют открытым тот же API для мобильного клиента. Если сервер доверяет запросам приложения без собственных проверок, веб-защита не решает проблему.
Включите антифрод у SMS-провайдера
Часть операторов коммуникационных платформ уже предлагает специализированную защиту от искусственно раздутого трафика. Подобные системы анализируют распределение сообщений, исторические шаблоны, направления и другие признаки подозрительной активности. Их преимущество заключается в возможности остановить сообщение до передачи в мобильную сеть.
Twilio. Для клиентов Twilio Verify доступен Verify Fraud Guard. В Twilio Console можно открыть раздел Verify, затем Services, выбрать службу подтверждения и проверить параметр Enable Fraud Guard на вкладке SMS. Для отправки через Programmable Messaging предусмотрена отдельная функция SMS Pumping Protection, доступная в Communications, Messaging, Settings.
Дополнительно в Twilio Verify стоит открыть Settings, Geo permissions и проверить страны назначения. Сервис позволяет отключать направления или использовать мониторинг мошенничества. Важная оговорка заключается в том, что доступные режимы и условия оплаты зависят от используемого продукта и настроек учётной записи.
AWS. В AWS End User Messaging работает SMS Protect. Через конфигурации защиты можно задавать правила для стран и отдельных сценариев отправки, использовать мониторинг или фильтрацию рискованных сообщений. Проверить нужно и стоимость самой защиты, поскольку отдельные функции анализа тарифицируются дополнительно.
Google Firebase и Identity Platform. В Firebase Authentication доступна политика регионов SMS. Через настройки Authentication можно перейти к SMS region policy и разрешить только нужные направления. В Identity Platform также предусмотрена интеграция reCAPTCHA SMS defense для выявления SMS toll fraud. По документации Google функция SMS defense имеет статус Preview, поэтому доступность, требования и режимы применения необходимо проверять для конкретного проекта.
Если компания использует российского SMS-агрегатора, нужно выяснить, поддерживает ли поставщик ограничения по странам и операторам, суточные бюджеты, защиту от накрутки, проверку номеров и оперативную блокировку подозрительного трафика. Название «антифрод» само по себе ничего не гарантирует. Попросите показать, какие события действительно блокируются до тарификации и какие журналы доступны заказчику.
При этом проверка оператора или типа номера через отдельный API тоже стоит денег у некоторых поставщиков. Экономическую пользу такой проверки нужно считать, а не предполагать. Для дешёвых внутренних SMS стоимость дополнительного запроса иногда окажется сопоставимой с расходами, которые компания пытается предотвратить.
Установите финансовый предохранитель
Самое неприятное в SMS pumping заключается в том, что бизнес может обнаружить атаку слишком поздно. Даже качественная система обнаружения не предотвратит убытки, если за уведомлением никто не следит и отправка продолжается автоматически.
Поэтому бюджеты стоит ограничивать не только на уровне ежемесячного счёта. Нужны почасовые и суточные пороги, отдельные лимиты на дорогие направления и возможность приостановить несущественные SMS при превышении допустимых расходов.
Обратите внимание на разницу между уведомлением и настоящей блокировкой. Например, Twilio Usage Triggers уведомляет приложение при достижении порогов расхода, но сам механизм уведомления не равен автоматическому отключению отправки. Для жёсткой остановки нужна отдельная логика.
В AWS End User Messaging можно настроить принудительный лимит расходов, после достижения которого сервис прекращает отправлять сообщения. Однако AWS предупреждает, что распределённая инфраструктура может остановить отправку не мгновенно, поэтому фактические расходы способны немного превысить установленный порог.
Для критически важных систем лучше разделять бюджеты авторизации, транзакционных сообщений и маркетинговых рассылок. Тогда атака на публичную регистрацию не должна полностью лишать уже существующих клиентов возможности получать необходимые уведомления. Но исключённые из общей блокировки каналы тоже требуют собственных ограничений.
Сократите зависимость от SMS
Самый радикальный способ уменьшить расходы на пампинг заключается в том, чтобы реже отправлять платные сообщения. Для постоянных пользователей можно использовать ключи доступа passkeys, приложения-аутентификаторы с одноразовыми кодами TOTP и другие способы подтверждения, не требующие SMS на каждый вход.
Дополнительная экономия возникает за счёт отказа от ненужных подтверждений. Например, интернет-магазин может не отправлять SMS при каждом просмотре статуса заказа, если пользователь уже вошёл в доверенную сессию. При этом нельзя просто убрать подтверждение из операций, связанных с денежными переводами или критичными изменениями аккаунта, без полноценной оценки рисков.
Переход на passkeys полезен не только для борьбы с пампингом. В руководстве NIST SP 800-63B передача кодов по телефонной сети рассматривается как ограниченный способ внешней аутентификации. SMS не обеспечивает защиты от фишинга и подвержен дополнительным рискам, включая перевыпуск SIM-карт и перенос номеров.
Однако переход на альтернативную авторизацию не отменяет защиту восстановления доступа. Если пользователь входит с помощью passkey, но может бесконечно запрашивать SMS для восстановления аккаунта, платная точка входа для атакующего сохраняется.
Ошибки защиты и что делать, если атака уже началась
СМС-пампинг неприятен ещё и тем, что стандартные средства информационной безопасности не всегда видят проблему. Запросы к серверу могут выглядеть корректно, веб-приложение не испытывает перегрузки, вредоносные файлы отсутствуют, а ни одной уязвимости для удалённого выполнения кода злоумышленник не использует.
Часто компании полагаются на четыре ошибочных представления.
«У нас стоит WAF, значит атака не пройдёт». Межсетевой экран веб-приложений полезен против многих угроз, но разрешённый запрос к функции отправки SMS может пройти обычные проверки. Нужны правила, учитывающие именно стоимость и частоту бизнес-операций.
«CAPTCHA решит проблему полностью». CAPTCHA снижает количество примитивных запросов, но не исключает автоматизацию. При высокой потенциальной прибыли мошенникам бывает выгодно использовать более сложные способы обхода защиты.
«Заблокируем подозрительные страны». Географические ограничения хорошо работают для локального бизнеса, который не обслуживает иностранных клиентов. Международному сервису жёсткий запрет может принести дополнительные убытки из-за отказов реальным пользователям. Номер телефона также не всегда соответствует текущему местонахождению абонента.
«Провайдер сам всё заблокирует». Даже специализированные системы защиты не гарантируют полного предотвращения атак. Они могут ошибочно блокировать легитимные сообщения или пропускать распределённый трафик, похожий на обычные запросы.
Если расходы уже растут, действовать нужно в первую очередь на уровне отправки. Временно ограничьте наиболее подозрительные направления и функции повторного запроса, проверьте доступные механизмы остановки у провайдера, затем изучите динамику отправок и успешных подтверждений. Не следует сразу отключать все SMS без оценки последствий для клиентов, особенно в банковских и других критичных системах.
Параллельно сохраните технические доказательства. Время запросов, идентификаторы отправок, стоимость, статусы доставки, страны и операторы помогут расследовать инцидент. Проверьте также ключи доступа к SMS API. Если расходы возникли из-за компрометации ключа, а не злоупотребления публичной формой, потребуется отдельная процедура реагирования и замены учётных данных.
После ограничения атаки свяжитесь с поставщиком SMS и запросите детализацию, включая список дорогих направлений, фактическую стоимость и историю срабатываний антифрода. Возможность пересмотра начислений зависит от договора и обстоятельств. Автоматического права на возврат денег только потому, что трафик оказался мошенническим, обычно предполагать нельзя.
Проверять эффективность защиты лучше на тестовом контуре или с использованием тестовых номеров провайдера. Убедитесь, что повторные запросы блокируются до платной отправки, лимиты учитывают разные устройства и номера, а финансовая остановка действительно прекращает расходовать бюджет. После запуска сравнивайте число ложных блокировок, долю завершённых подтверждений и стоимость одной успешной регистрации.
Частые вопросы о СМС-пампинге
Может ли СМС-пампинг затронуть небольшой интернет-магазин?
Да. Размер компании не играет решающей роли. Если сайт автоматически отправляет платные SMS по запросу из публичной формы и не проверяет допустимость таких запросов, злоумышленник может создавать расходы независимо от оборота бизнеса. Небольшая компания с ограниченным бюджетом иногда даже чувствительнее к подобным атакам.
Могут ли мошенники зарабатывать на SMS, которые никто не читает?
Да. В схемах с искусственно раздутым трафиком доход возникает за счёт телекоммуникационных взаиморасчётов, а не чтения сообщений пользователями. Конкретный порядок начислений зависит от операторов и договоров. Не каждое недоставленное SMS приносит доход мошеннику, но отсутствие подтверждённой доставки само по себе не исключает расходов отправителя.
Чем СМС-пампинг отличается от обычного SMS-спама?
При SMS-спаме отправитель обычно стремится доставить нежелательную рекламу или мошеннический текст получателю. При SMS pumping злоумышленник заставляет чужой сервис инициировать платные сообщения. Главная цель классической коммерческой схемы заключается в создании оплачиваемого трафика. Содержание сообщения может не иметь для атакующего никакого значения.
Поможет ли запрет международных SMS?
Для бизнеса, который обслуживает клиентов исключительно в одной стране, запрет ненужных зарубежных направлений может заметно сократить финансовый риск. Но полностью устранить пампинг таким способом нельзя. Злоумышленники могут использовать внутренние номера, а международные компании рискуют заблокировать реальных клиентов. Географические ограничения следует сочетать с антифродом и лимитами.
Можно ли защититься от СМС-пампинга только через Cloudflare?
Cloudflare способен отфильтровывать часть автоматических запросов с помощью WAF, Turnstile и средств защиты от ботов. Но ограничения платных операций всё равно должны работать в самом приложении. Если злоумышленник обращается напрямую к незащищённому API или использует разрешённые запросы в больших объёмах, одна веб-защита может оказаться недостаточной.
Можно ли определить СМС-пампинг по одному резкому росту трафика?
Нет. Резкий рост количества сообщений может быть связан с рекламной кампанией, сезонным спросом или изменением пользовательского интерфейса. Для более обоснованного вывода нужно сопоставить число отправок, подтверждений, стоимость, географию, операторов и технические признаки запросов. Даже совокупность аномалий не всегда позволяет установить личность организатора атаки.
Стоит ли полностью отказаться от SMS-подтверждений?
Не обязательно. SMS остаётся удобным каналом для пользователей, которым недоступны другие способы подтверждения. Однако постоянную авторизацию разумно по возможности переводить на passkeys или TOTP. SMS лучше сохранять для обоснованных сценариев, ограничивая количество отправок и обеспечивая альтернативное восстановление доступа.
Может ли компания вернуть деньги, потраченные во время атаки?
Иногда поставщик связи может пересмотреть спорные начисления, но возврат не гарантирован. Потребуются детализация сообщений, данные об аномальном трафике, время инцидента и условия договора. Если отправка происходила через законно выданный API-ключ, ответственность за вызовы может оставаться на клиенте. Лучше заранее обсудить с провайдером порядок блокировки, расследования и оспаривания расходов.
Вывод. СМС-пампинг показывает, как обычная функция приложения превращается в финансовую уязвимость. Мошенникам необязательно взламывать инфраструктуру. Достаточно заставить бизнес оплачивать сообщения, которые не приносят реальных клиентов.
Для небольшого сайта разумно начать с серверных лимитов, CAPTCHA с обязательной проверкой токена, географических ограничений и ежедневного контроля расходов. Более крупным сервисам нужны многоуровневые антифрод-правила, анализ операторов и устройств, автоматическая остановка подозрительных отправок и альтернативные способы авторизации.
Главный критерий эффективности защиты не количество заблокированных ботов, а способность системы не допустить неоправданных расходов, сохранив нормальный вход для реальных пользователей. Если компания умеет ограничивать стоимость каждого сценария, быстро обнаруживать аномалии и останавливать платные операции до исчерпания бюджета, СМС-пампинг перестаёт быть угрозой с практически неограниченным финансовым ущербом.
