Просто хотел поделиться этой историей. Знаю, я мог бы лучше подготовиться к этому инциденту, но так уж получилось. :)
Сегодня утром я открыл почтовый ящик и обнаружил около 150 предупреждений из программы мониторинга лога. Я подумал, что случайно запушил какой-то баг в продакшн — и быстро начал расследование. Но вскоре стало понятно, что некий парень очень быстро создаёт новые учетные записи на нашем сервисе API скриншотов ApiLeap и быстро расходует весь кредит бесплатного плана на каждом аккаунте.
Он делал скриншоты этой страницы и майнил криптовалюту на машинах, где работают инстансы Chrome, которые мы используем для скриншотов.
Я выяснил, что он зависает на главной странице нашего сайта, так что можно поговорить с ним через онлайновый чат Crisp — инструмент, который мы используем для общения с потенциальными клиентами на сайте. Вот это разговор:
Я: Здравствуйте. Пожалуйста, прекратите создавать несколько учётных записей на ApiLeap, вы нарушаете условия предоставления услуг.
Он: Откуда ты знаешь?
Я: Из нашего интерфейса администратора, у нас есть метрики для мониторинга использования.
Он: Значит вы отследили мой IP? Вау!!!
Я: У нас есть юридические обязательства по сбору данных от наших клиентов.
Он: О, простите. Я использовал ваш сервер для майнинга криптовалют. Извините, я остановлю его.
Я: Спасибо.
Он: Будут какие-то судебные разбирательства? :D
Я: Если остановитесь сейчас, нет. Если продолжите, то да.
Он: Но вы сами виноваты. Вы не внедрили никаких механизмов для предотвращения ботов или автоматического доступа.
Я: Мы позволяем пользователям свободно создавать учётные записи, но у нас есть различные инструменты для бана. У нас также есть подрядчик, который может подготовить судебный иск, если понадобится.
Он: Ладно, я понимаю. Но это ваша обязанность — убедиться, что автоматизированный софт не может создать аккаунт на вашем сайте.
Я: Мы можем добавить меры безопасности, если нужно.
Он: Я тоже веб-разработчик, могу помочь. Я ведь только что создал инструмент на php для автоматического создания аккаунтов на вашем сайте.
Я: Мы это поняли. Selenium?
Он: Неа, PHP curl. Могу помочь вам, если хотите. Так что, вы вообще не разбираетесь в веб-безопасности или просто лень её реализовывать? Поставьте хоть капчу, она защитит он таких ботов.
Я: Спасибо за совет. Наш сайт первый, на который вы напали?
Он: Нет… :D
Это мое хобби. Ради удовольствия и прибыли.Я: Вы зарабатываете приличные деньги на Coinhive?
Он: Нет. Я ещё ничего не сделал. Поэтому подумал об использовании таких сайтов для майнинга. Сожалею, если нанёс вам какой-то убыток.
Я: Всё в порядке, мы ничего не потеряли. Есть куча других сервисов для скриншотов, которые вы можете попробовать.
Он: :D
Это использует их вычислительные ресурсы, ты же понимаешь.Я: Да, это майнинг Monero в браузере.
Он: Кстати, а почему ты хочешь, чтобы я попробовал другие веб-сайты? Просто чтобы нанести им какой-то ущерб? :D
Я: Нет, не надо. Я просто пошутил. :)
Он: Ладно. Возьмёте меня на работу?
Я: Извините, у нас уже есть штатный разработчик.
Он: ;)
В любом случае, было приятно познакомиться.Я: Уверен, ты отличный парень глубоко внутри. Существует куча лучших способов заработать деньги в качестве разработчика. Приятно было познакомиться. Удачи! Надеюсь, у тебя будет всё замечательно! :)
Он: Спасибо. Пока :)
Думаю, это один из самых мирных способов, каким я устранил атаку — и хакер оказался не таким уж плохим парнем, в конце концов.
Автор: m1rko