{"id":14275,"url":"\/distributions\/14275\/click?bit=1&hash=bccbaeb320d3784aa2d1badbee38ca8d11406e8938daaca7e74be177682eb28b","title":"\u041d\u0430 \u0447\u0451\u043c \u0437\u0430\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0434\u0430\u0432\u0446\u044b \u0430\u0432\u0442\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f72066c6-8459-501b-aea6-770cd3ac60a6"}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

0
147 комментариев
Написать комментарий...
Dmitry Mikushin

Смысл SMS-бомбера в том, чтобы насолить какому-то конкретному номеру бесконечным потоком SMS. Бороться с этим тяжело потому что SMS - технология 80х годов, когда слово "спам" даже не было в ходу. Ещё пару лет этого вала "предложений" и "акций", и SMS будет просто заблокирована по умолчанию, как функция.

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

Ответить
Развернуть ветку
Anton Kuzmichev

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

Ответить
Развернуть ветку
Артём Лисовский

Ну ладно тебе, задетектить спам на эндпоинт апи - совсем простая задача. Начиная с csrf, заканчивая cf и прочими решениями. А по всему сайту капчу смысла нет, если только ты не аптека и тебе надо уберечь свои прайсы от парсинга. Хотя и это успешно решается.

Ответить
Развернуть ветку
144 комментария
Раскрывать всегда