Нашел на GitHub код, который проводит SMS-атаки

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

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

Как и любой компании по доставке еды, у моей «Царицы Роллов» (не спрашивайте о странном названии, долгая история) на сайте стоит авторизация через SMS. Сфера у нас очень конкурентная, каждый процент конверсии на счету, поэтому авторизация через SMS — наше всё.

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

Как и везде, SMS с сайта мы отправляем через API стороннего сервиса, на балансе которого должны всегда лежат деньги. Это и было первое, о чем я подумал: закончились деньги.

Догадки подтвердились. Я, дабы оперативно восстановить авторизацию, с карты закинул на баланс SMS-провайдера 5000 рублей и выкинул из головы.

На следующий день ситуация повторилась — снова звонки клиентов. Снова та же тема. Захожу в кабинет — вижу на счёте ноль.

Сразу заподозрил неладное. Мы не «Додо», и даже несмотря, что в наше время SMS — штука дорогая, у нас 5000 рублей ну если не на месяц, но на пару недель с запасом точно должно хватить. А тут суток не прошло. Полез ковырять отчёты по отправкам. Вижу, все SMS израсходованы на получение пароля. Очень странно.

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

Первым делом, конечно, надо было остановить вакханалию, так как потерять 5000 рублей это не беда, а вот хапнуть клиентского негатива — вещь опасная. А голодный человек, который не может добраться до своих баллов в кабинете, спасибо точно не скажет.

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

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

Какой тут может быть смысл? Только один. Вредить. Ладно, копнём дальше. График нагрузки на сервер показал, что запросов идёт много и начались они несколько дней как, постепенно нарастая.

Рост нагрузки на сайт
Рост нагрузки на сайт

Как я понял, софт отправляет аналогичные форме на сайте POST-запросы, поэтому повесил на этот запрос скрипт, который чекает IP-адрес запроса и записывает в базу. Список в базе стал быстро расти. Поначалу на глаз показалось, что запросы идут с десятка проксей, но когда счёт пошел на десятки тысяч, понял, что дело серьёзнее.

Нашел на GitHub код, который проводит SMS-атаки

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

Естественно, без косяков не обошлось, и поначалу скрипт написал косячно, из-за чего заблокировал API телефонии и банка. Но быстро довёл до ума.

Список заблокированных IP стал также быстро расти.

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

Но и тут моё удивление не закончилось. На текущий момент в списке заблокированных уже 8000 IP-адресов. И список продолжает расти. То есть софтина работает на широкую ногу.

Нашел на GitHub код, который проводит SMS-атаки

Причем, судя по темпам запросов, задачи провести DDoS-атаку не было, а задача стояла именно в скрутке SMS на левые номера, так как запросы отправлялись достаточно медленно и размеренно.

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

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

Но неожиданное открытие сделал «Яндекс.Вебмастер». Нужно было поработать по SEO-шке и сделать уже, наконец, турбо-страницы на «Яндексе», чтобы позиции приподнять. Так вот, по старой дедовской привычке захожу во входящие ссылки посмотреть и вижу входящую ссылку с GitHub.

Ссылка с GitHub на сайт доставки суши в Тюмени. Странно?

Оказалось, что ссылка это ведёт на гитхабовский репозиторий, в котором в вопросах размещен длинный список компаний.

Нашел на GitHub код, который проводит SMS-атаки

Как видно из списка, кто-то заморочился и пробежался по суши- и пицца-сайтам рунета и собрал списки, многие из сайтов которых наверняка обладают огромными SMS-бюджетами (тот же «Суши-мастер» с сетью в несколько сотен заведений, «Авто.ру», Fix Price, «Суши-вок», и много кто ещё) .

Нашел на GitHub код, который проводит SMS-атаки

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

Так что, друзья, обязательно хорошо защищайте свои веб-ресурсы.

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

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

Если кто-то из знакомых управляет какими-то компаниями из списков, напишите, пожалуйста, им, чтобы обратили внимание.

Держите ухо востро! Ну и репостните по возможности.

177177
147 комментариев

ошибка выжившего :). Он переживает за "постоянных" клиентов, у которых кабинет со скидками. Сколько людей просто плюнет, видя дурацкие заборы и пойдет к другим - об этом он не знает, они же не стали его клиентами.

17

Согласен, странный подход. Во-первых, вместо капчи для начала надо открыть для себя мир CDN-frontend-экранов, которые знают "мирные эндпоинты" это отсеит нагрузку и прмитивный бот трафик на 99%

Далее, зачем давать "восстановление пароля" на номера, которые не зареганы в юзербейс?

Дайте смс на произвольный номер только при регистрации и через cdn, все что валидацию по cdn не прошло, через капчу (вообще это сценарий из коробки).

А recovery делайте по почте или на номер из юзербейс.

14

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

12

Тоже такая мысля пришла. В нашей деревне (1млн жителей) заказываю в двух пиццериях, НИКАКИХ смс не требуют, при этом личный кабинет есть))) Программисты наверное посмышленнее...

2

У Санрайза я бы личный кабинет всё же сделал, чтобы помнить адрес и историю заказов.

Может это сам смс шлюз так свой доход увеличивает или тот кто вас по рефералке привел?)) Кем пользуетесь?

38