Я уже упоминал этот проект, как возможность продвижения, в заметке про скам-бота.
Многие люди публикуют свои проекты на github-подобных git-хостингах, для обеспечения общего доступа (это даёт множество преимуществ во многих случаях).
Часто, ввиду неопытности, при публикации, люди сливают чувствительные данные (в частности токены Telegram-ботов).
Я и сам, пару раз, по неосторожности публиковал свои токены. Интересно то, что оба раза токены были обнаружены.
В этой статье я постараюсь ответить на следующие вопросы:
Какая подготовка необходима?
Насколько реально на данный момент найти утечки токенов?
Сколько токенов я найду и сколько из них будут работоспособными?
Что по конкуренции?
Насколько критична для бота утечка его токена?
0. Какая подготовка необходима?
Для начала нам нужно запастись базовым функционалом:
Разработать регулярные выражения для поиска токенов.
Написать скрипт для анализа репозиториев.
Написать панель.
Регулярное выражение для поиска (для его разработки, просто взял и сравнил несколько своих токенов):
# tg (bot)
[0-9]{9,10}:AA[A-Z][a-zA-Z0-9_-]{32}
Я бы мог чекать токены и для других платформ, но меня это не особо интересовало.
Было бы круто иметь инструментарий для быстрой проверки своих репозиториев на наличие чувствительных данных.
Для написания скрипта, нужно разобраться с логикой и стеком.
Изначально, я хотел писать на rust
, ввиду его скорости, т. к. предстояло просканировать огромное кол-во репозиториев.
Но потом я вспомнил одну популярную статью, схожей тематики, там были представлены исходники на python
и в статье, для демонстрации работы был код на sh
(терминал, по большому счёту).
Вкратце, алгоритм доставал удалённые файлы из репозитория и проверял наличие чувствительных данных внутри.
Так и родилась идея, связки:
Sh
Скрипт клонирование репозитория, через git
и поиск удалённых файлов).
Я пошёл ещё дальше, и использовал gix (
git
наrust
) внутриsh
скрипта (он значительно ускорил работу).
Python
Но для анализа репозиториев, нам нужно сначала где-то их взять. Логичным решением было использование GitHub API.
Затем я сделал минимальную панель:
База данных
Кеш
Логи
И небольшое ответвление для аналитики. Анализировал логи, ибо изначально не указал нужных данных в бд. Интересное направление деятельности, напоминает задачки из ЕГЭ, только чуть сложнее.
1. Насколько реально на данный момент найти утечки токенов?
В первый день анализа я нашёл порядка 20 токенов и был очень рад этому, правда, были проблемы со стабильностью системы. Но после немногочисленных фиксов, всё заработало.
Тогда еще не было скрипта, для автопроверки токенов, и приходилось вручную их проверять.
Вывод: токены найти можно.
2. Сколько токенов я найду и сколько из них будут работоспособными?
После доработок я запустил автопоиск на несколько дней.
Вот краткая сводка данных:
Репозиториев просканировано: 24348
Токенов найдено: 2429
То есть, токены сливают, в каждом десятом репозитории..
Также, скрипт для аналитики поддерживает генерацию графиков распределения токенов по поисковым запросам:

3. Что по конкуренции?
При запуске первых найденных мной ботов, они почти сразу выводили в консоль сообщение о конфликте. Значит, конкуренция, всё таки присутствует.
Большинство ботов используются в рекламных целях.
Однако, мне удавалось находить и крупных ботов, без конкуренции, которые админят крупные чатики (по странному стечению обстоятельств, они все были на арабском), у одного из них было 50к пользователей в месяц.
4. Насколько критична для бота утечка его токена?
Думаю тут особо пояснения не нужны, ваш бот полностью под чужим контролем.
Однако, при утечке, можно переиздать токен у BotFather-а за несколько секунд.
Кстати, я видел несколько ботов, у которых поменяли оформление (в рекламных целях), имея только токен. Правда, я пока не понял как..
Применение "армии ботов"
Логичным вопросом будет: "а что даст злоумышленнику личная армия ботов?".
В качестве эксперимента, я решил заставить ботов отвечать на любое сообщение "Hacked by @iamlostshe_blog"
, указав юзернейм своего канала.
Итоги скоромные: +1 подписчик, ~150 просмотров, +3 реакции
(боты были запущены в течение 20 минут).
Я связываю, такую активность, с тем, что аудитория не целевая, большая часть, даже не говорит на русском.
Однако, армия отлично подойдёт для задач, где не важна целевая группа (опять же, скам-бот, фишинг).
Кстати, параллельный запуск настолько большого кол-ва ботов, не такая уж и простая задачка для компьютера. Лично у меня при запуске, комп начинает шуметь, как турбина (у меня ведро).