Технологии

Подмена номера и маяк: как сделать проверку, на которой мошенник устанет

← Все статьи

Маяк - это самый простой способ подтвердить номер. Человек звонит на номер, который вы ему показали, мы не берём трубку, и всё, номер подтверждён. Для него этот звонок бесплатный, а для вас это самый дешёвый код - от 2 ₸.

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

Если вы ещё не знаете, как вообще работает входящий звонок, то сначала загляните в нашу статью про OTP входящим звонком. Там разобраны все четыре способа с примерами.

Что на самом деле проверяет маяк

Маяк проверяет только одно: с какого номера пришёл звонок. А номер звонящего, его ещё называют Caller ID, это просто поле в звонке. Заполняет его та сторона, которая звонит. В обычной мобильной сети это поле ставит сам оператор, и просто так его не подделать.

Но есть серые схемы. Звонок заводят через интернет-телефонию, через так называемые серые SIP-транки, и в поле «кто звонит» вписывают любой номер какой захотят. И звонок приходит так, как будто звонил сам владелец номера.

Как это выглядит на практике

  1. Мошенник берёт чужой номер. Например, из слитой базы.
  2. Регистрируется у вас на этот номер. Вы показываете ему номер, на который надо позвонить.
  3. Он звонит через серый транк и подставляет номер жертвы.
  4. Мы видим звонок с нужного номера. Номер подтверждён, хотя его владелец даже не знает, что где-то регистрировался.

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

Операторы с этим борются

Операторы связи в Казахстане про подмену номера знают и борются с ней. Такие звонки ловят на стыках сетей, а серые транки закрывают.

Но, увы, до конца проблема не решена. В сети РК такие звонки всё ещё встречаются. Поэтому надеяться только на оператора не стоит, лучше поставить защиту и у себя.

Честный человек звонит сразу

Вот главное наблюдение, на котором всё держится. Когда человек сам вводит свой номер, то он сразу же нажимает кнопку «Позвонить». Телефон сам набирает номер, звонок идёт пару секунд, и готово. Он никуда не уходит и ничего не ждёт.

У мошенника всё сложнее. Ему нужно получить номер для звонка, подставить чужой номер в транке и запустить звонок. Даже если у него всё автоматизировано, то это всё равно лишние шаги. А каждый лишний шаг, это шанс, что что-то пойдёт не так.

Поэтому первый совет простой: не давайте лишнего времени. У входящего звонка есть параметр ttl, это сколько секунд мы ждём звонка. По умолчанию 120, можно поставить от 30 до 300. Для маяка хватит от 60 до 120 секунд, честному человеку этого с запасом.

Лестница проверок

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

  1. Маяк Просто позвонить. ttl от 60 до 120 секунд. Почти все честные пользователи заканчивают прямо здесь. от 2 ₸
  2. Позвонить и набрать код или сказать слово Способы press и say. Мало позвонить, нужно ещё набрать на клавиатуре код с экрана или произнести слово. от 3 ₸
  3. WhatsApp или Telegram Код приходит в мессенджер на этот номер. Подменённый номер звонящего тут уже ничем не поможет. от 7 ₸

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

А если вместо кода дать задачу, например «сколько будет 7 плюс 5», или вопрос на казахском, то ему станет совсем грустно. Такие хитрости мы собрали в прошлой статье, там их пять штук.

Если и во второй раз время вышло, то включайте тяжёлую артиллерию: код в WhatsApp или Telegram. Он придёт в мессенджер, который привязан к номеру. Чтобы его получить, нужен доступ к самому аккаунту мессенджера. И никакая подмена номера тут уже не спасёт.

Дело тут не в экономии

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

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

Как это сделать у себя

Считайте попытки на своей стороне. То есть сколько раз этот номер уже просил код, скажем, за последние 10 минут. И по этому счёту выбирайте способ:

Попытка 1 → POST https://autocall.kz/api/v1/otp/incoming-call
{ "number": "+77011234567", "type": "missed", "ttl": 90 }

Попытка 2 → POST https://autocall.kz/api/v1/otp/incoming-call
{ "number": "+77011234567", "type": "press", "code": "4817", "ttl": 120 }

Попытка 3 → POST https://autocall.kz/api/v1/otp/whatsapp
{ "number": "+77011234567" }

И пара мелочей, которые стоит знать:

  • Новая заявка на тот же номер гасит прежнюю. Старый номер для звонка сразу перестаёт работать, так что «догнать» первую попытку не получится.
  • На один номер мы принимаем не больше 5 заявок за 10 минут по всем каналам. Это защита от перебора, и она работает сама, вам ничего делать не надо.
  • Если у человека нет WhatsApp, то мы сообщим об этом в вебхуке (no_whatsapp). Тогда просто отправьте код в Telegram или по SMS.

Все способы можно бесплатно попробовать на себе на странице входящего звонка. А все параметры запросов есть в документации API.

Частые вопросы

Не разозлит ли это честных пользователей?

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

Какой ttl поставить для маяка?

От 60 до 120 секунд. Этого хватает, чтобы спокойно нажать кнопку и дождаться гудка. Ставить больше смысла нет.

Что если у человека нет ни WhatsApp, ни Telegram?

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

Настройте лестницу проверок у себя

Без договора и абонентской платы.
Тестовый баланс сразу после регистрации.

Зарегистрироваться бесплатно →