Как я создал бота знакомств и как вся история дошла до полиции

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

Действительно, причем тут мемы?
Действительно, причем тут мемы?

Меня зовут Рустам, я разработчик ботов (Python), сайтов (WordPress, бакенд Spring Boot) и бывший интернет-маркетолог. И я поведаю про довольно интересный и стрессовый момент в своей жизни, когда думал, что всё держу под контролем, но это оказалось не так.

Июль-август, 2020

В тот момент я менял профессию, т. к. разочаровался и перегорел в интернет-маркетинге (настраивал таргет FB*, Instagram*, VK и т. д.) и решил уйти в айти. Оба направления стрессовые, но в маркетинге правила меняются каждые 2 недели, в айти же этот промежуток условно можно представить как полгода-год.

Но проблема. Я не знаю Python и для его более глубокого изучения решаю сделать бота. У меня есть студенческое региональное сообщество (VK), которое довольно активно и для ещё бóльшего вовлечения я решаю сделать бота знакомств. Если ты имеешь в своем сообществе не только мемы, а ещё и такого бота — все конкуренты будут меркнуть на твоём фоне.

Бот разработан, запущен, я заливаю код на Github как pet-project для будущего поиска работы на фрилансе и благополучно о нём забываю.

Декабрь, 2020

Я создаю ютуб-канал на айтишную тематику (который потом забрасываю), где первым видео рассказываю, как я легко и просто за 3 недели сделал бота знакомств (как Дайвинчик) без предварительного знания Python. Ссылку на канал добавлю в конце статьи (если прям будет интересно), т. к. речь сейчас не о нём.

Так как в названии видео фигурировал «Дайвинчик» — естественно это видео смотрели преимущественно школьники. Спустя год оно залетело в какой-то SEO-запрос и эти школьники начали долбить личку мне с идиотскими предложениями. Были, конечно, и адекватные предложения, но это очень малый процент. К примеру — школьник пытается выслужиться перед любимым ютубером (видимо пересылая ему мои ответы), пытаясь предложить какие-то крутые темы:

Как я создал бота знакомств и как вся история дошла до полиции

Или их примерные ожидания в цене за покупку исходников новой версии бота (такие школьники обычно покупают и перепродают исходники на форумах):

Как я создал бота знакомств и как вся история дошла до полиции

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

Март, 2022

Прошло почти 2 года с момента создания первой версии бота знакомств. Я на фрилансе 1,5 года как разработчик. В основном для зарубежных заказчиков я правил сайты, для СНГ-заказчиков — делал ботов для VK и Telegram.

Я уже был на максимальной уверенности, что не допускал никаких фатальных ошибок в этой теме. Пока не настало…

16:14, 11 марта, 2022

Я захожу в своё студенческое сообщество просто посмотреть комментарии и замечаю, что количество подписчиков уже не пятизначное, а четырехзначное. Меня прошибает пот: «Кого-то взломали…»

Захожу в Журнал действий и вижу там такую картину:

Как я создал бота знакомств и как вся история дошла до полиции

Взломали. Но. Меня.

Любой ключ доступа с этого момента потенциально опасен. Вычищаю:

Как я создал бота знакомств и как вся история дошла до полиции

Сразу пишу в чат админов. Насчет 10к человек, конечно, я тогда погорячился:

Реакция других админов описывает всё
Реакция других админов описывает всё

Не думайте что это «какие-то там 5к подписоты», для узкотематических региональных сообществ это довольно много.

Кроме ключей доступа я сразу убрал из админов новоназначенного хакера, который успел назначить себя админом:

Как я создал бота знакомств и как вся история дошла до полиции

И через 9 минут я уже писал в ТП по поводу возврата подписчиков:

Как я создал бота знакомств и как вся история дошла до полиции

Можете не читать всё полотно текста от ТП, там никакой конкретной информации, просто копипаст про информационную безопасность. Но спасибо им за оперативность, ответили за 5 часов и решили проблему через 7 часов.

Вот, кстати, как выглядело всё после решения:

Как выглядит статистика того самого сообщества в тот самый день
Как выглядит статистика того самого сообщества в тот самый день

Но вернемся к общению с ТП. Обратите внимание, я написал, что взломали мой токен. Я сразу понял, что если я назначил админом кого-то — взломали мой личный токен, выданный на моё standalone-приложение.

Для непросвещенных:

  • Токены для ботов сообществ. Они имеют конкретные методы, которые им дозволено иметь. И неважно, это бот, который отвечает Вам в личке или бот, которого добавляют в какой-то пользовательский чат. Как пример — они имеют метод удаления пользователя из чата, но не имеют метода для добавления пользователя в чат. Т. е. у них существенные ограничения. В документации VK для разработчиков в методах, которые им разрешены — прямо пишется, что его можно вызвать с токеном сообщества.
  • Личные токены через standalone-приложение. Эти токены затрагивают личный аккаунт пользователя и работают уже с более широким пулом методов. При этом для каждого токена можно выдать доступ к одной или к нескольким группам методов (friends, groups и т. д.)

Удалять пользователей из паблика токен сообщества не может, т. к. этот метод работает только с личным токеном. Значит меня взломали именно через личный токен. И назначили админа через этот токен. Все эти мысли помогли мне найти источник проблемы, о которой я расскажу позже.

А в этот момент я, естественно, вычистил все личные токены и на всякий остановил все личные standalone-приложения.

Реакция хакера не заставила себя ждать:

Как я создал бота знакомств и как вся история дошла до полиции

Я не стал ничего отвечать, т. к. не хотел давать никакой реакции. Его, судя по всему, это задело и он начал атаковать мой личный аккаунт своими ботами (у половины, кстати, лица для аватарок были сгенерированы нейросетью), которые кидали мне заявку в друзья (2-3 в минуту):

В общей сложности ко мне прилетело около 600 заявок в друзья в тот день
В общей сложности ко мне прилетело около 600 заявок в друзья в тот день

Я проанализировал тогда эти аккаунты. Это были стандартные ботоаккаунты, которые монетизировали через вступление в кучу групп.

Как я создал бота знакомств и как вся история дошла до полиции

17:30, 11 марта, 2022

Я в полиции. Составляю заявление по факту атаки. У меня железная логика, что 5000 удаленных пользователей — это минимум на 5000 рублей ущерба (если считать по ценам 2015 года, а так, конечно, я бы оценил ущерб минимум в 100 тысяч, по 20 рублей за подписчика, ввиду того что мы имеем региональную 18+ аудиторию в 2022 году). Ну а 5000 рублей — это уже уголовная ответственность. Даже если откинуть этот момент — то просто факт взлома я бы интерпретировал как неправомерный доступ к компьютерной информации, при этом это деяние повлекло уничтожение или модификацию некоторых данных. На момент написания заявления ТП VK ещё не вернула подписчиков, поэтому всё это имело силу.

Сам поход в полицию был довольно комичным. Сначала мою историю слушал дежурный с улыбкой на лице, постоянно переспрашивая:
— Сообщество? Во ВКонтакте? С мемами?
— Да-да.

Или:
— Ой, Вы что фильмов пересмотрели, где полиция так легко ловит хакеров?

Ну я то понимал, что один запрос от полиции в VK в рамках уголовного дела — и всё было бы действительно легко. VK выдал бы и IP и номер привязанной симки. Конечно, 100% симка была с сервиса sms-активаций, а сам пользователь сидел бы под прокси, но клубок бы начал распутываться.

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

Как я создал бота знакомств и как вся история дошла до полиции

Забегая вперед — через 4 дня пришло письмо с отказом о возбуждении уголовного дела: «В связи с отсутствием события преступления». Я не решился обжаловать это решение, т. к. к этому времени уже остыл, хотя, возможно, стоило бы. Да и подписчиков к этому моменту уже вернули и доказать факт ущерба уже было не особо реально.

Поздний вечер и ночь, 11-12 марта, 2022

Я дома. Я должен понять, как меня взломали. Для этого я смотрю логи бота, смотрю личку сообщества, к которому был подключен бот, смотрю доступ к своему личному e-mail, телефону, смотрю логи доступа к серверу, на котором хостится бот. Ничего.

Существовали методы атаки бота через SQL-инъекции, когда при заполнении анкеты, к примеру, вводили:

Т. е. вводили SQL-запросы, который дробили изначальный на части и после они исполнялись. Но:

  • У меня была защита от такого вида атаки. Я просто заменял все кавычки, звездочки и точки с запятой на пустоту перед добавлением в SQL-запрос.
  • Даже если бы подобная атака прошла — в БД не было токенов. Я там их не хранил, они были в самом Python-коде в тот момент.

И почти в 2 часа ночи я понял, как произошёл взлом:

Моё озарение в чате админов
Моё озарение в чате админов

Перенесёмся на 1,5 года назад. Я не просто так добавил в статью, что тогда заливал код на Github. Я делал бота, запушил первую версию бота в репозиторий, спустя несколько дней запушил измененную вторую версию.

Для непросвещенных, опять же:

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

Github — это не файлообменник, хотя он может выполнять его функции:

Как я создал бота знакомств и как вся история дошла до полиции

Проблема была в том, что моя первая версия была с этими самыми токенами. Я не проверил все файлы перед пушем в репозиторий и далее, конечно, я их не увидел, потому что при изменении кода токены остались в истории изменения (в так называемых commits), а в новой версии кода всё уже было хорошо.

И я смог понять всю хронологию событий:

  • Моё видео на ютубе нашли и решили глянуть код
  • Нашли публичный репозиторий с кодом, зашли оттуда в коммиты
  • Увидели токены и решили извлечь лулзы

Так как этот токен был с ограниченными правами (я выдал ему доступ только к разделам groups и donut), то доступа к моим личным сообщениям у него не было. Поэтому единственный способ, как извлечь из этого что-то интересное — сделать что-то с сообществом. Что удалось.

Выводы

Мне всегда нравился сериал Мистер Робот (тот самый про хакера с Рами Малеком) и я всегда представлял себя на месте главного героя. Но в реальной жизни оказалось всё наоборот.

Как я создал бота знакомств и как вся история дошла до полиции

Как мне потом сказали: «Ты отделался малой кровью». У меня было две ошибки (сам слив и что я заметил его не сразу, а спустя 2 часа), но, при этом, несколько верных действий:

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

Это был интересный опыт и я сделал один важный вывод для себя:

Если ты ленишься, не проверяя всё — это сделает кто-то другой.

UPD. Тут в комментариях несколько моментов затронули, которые нужно подробнее объяснить:

  • Это не взлом.
    Если интерпретировать слово "взлом" как в Гугле, а именно что это "несанкционированное проникновение в компьютерную систему" — то это именно он. Человек мог либо пройти мимо, либо проинформировать меня. Но он выбрал путь взлома. Не имеет значения, какую ошибку я допустил. Имеет значение, какой умысел был при взломе.
  • Зачем идти в полицию?
    Потому что я плачу за это налоги. И потому что это ущерб, который теоретически не смогли бы откатить. Люди должны отвечать за действия.

Можете посмотреть мой кринжовый видос с того самого ютуб-канала. Удалять я эти видео не буду, пусть останутся, как история. Но я далее буду делать более взрослый контент (не хочу школьников в личке), связанный с моим опытом в IT и с опытом анализа получения трафика различными методами.

Что также вы сможете найти в моем Telegram-каналеJdigit. Подписывайтесь, контент-план уже расписан на месяц.

Если вам нужен свой бот знакомств или любой другой (для VK и Telegram), практически любой сложности — велком в личку.

*Meta, владеющая Instagram и Facebook, признана экстремистской в России.

6161
43 комментария

нафиг я это прочитал, хотелось услышать что ты поднял дохуя бабла и тебя вконце закрыли. мне так эта статья рисовалась по заголовку

86
Ответить

Маркетологи бывшими не бывают

43
Ответить

"Как я создал бота знакомств с ментами"

7
Ответить

простите, но вас развели как ребенка)

3
Ответить

всем спасибо за лайкосы, неужели я в плюс уйду, до этого комента карма была минус сто.

Ответить

Не совсем понял, на что ты рассчитывал, идя в ментовку.

12
Ответить

видимо автор планировал подключить Дукалиса к расследованию

20
Ответить