{"id":14262,"url":"\/distributions\/14262\/click?bit=1&hash=8ff33b918bfe3f5206b0198c93dd25bdafcdc76b2eaa61d9664863bd76247e56","title":"\u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u0435 \u041c\u043e\u0441\u043a\u0432\u0435 \u0438\u043d\u043d\u043e\u0432\u0430\u0446\u0438\u044e \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0434\u043e 1,5 \u043c\u043b\u043d \u0440\u0443\u0431\u043b\u0435\u0439","buttonText":"\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435","imageUuid":"726c984a-5b07-5c75-81f7-6664571134e6"}

Нашел на 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 комментариев
Написать комментарий...
Юрий Б.

API доступен из интернета, авторизации нет никакой (то есть любой черт может делать запросы на использование платного ресурса - смс), так сделано у кучи сайтов... В индустрии так принято что ли?

 Как и везде, SMS с сайта мы отправляем через API стороннего сервиса

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

PS статью не мешало бы вычитать перед отправкой.

Ответить
Развернуть ветку
Serious Mann
Автор

Да, любой чёрт может ( мог ) сделать запрос из  интернета на восстановление пароля. Хотел было туда поставить капчу, но сам терпеть её не могу, поэтому сколько мог не ставил. И так благополучно года 2 отработал сайт в открытую.

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