Недавно, на просторах Telegram, я обнаружил интересного скам-бота, в ответ на /start он, сразу, просил ввести код для входа в аккаунт.
Интересно, что при отправке кода подтверждения внутри Telegram он сразу становится недействительным, поэтому злоумышленники используют клавиатуру с эмодзи (1️⃣) (или Mini-App см. далее), для ввода кода.
Но отправить сообщение для входа в аккаунт, без номера телефона нельзя => злоумышленнику нужно откуда-то брать телефонные номера.
Есть вариант идти от обратного и проверять номера с помощью юзербота: пример на telethon. Но он имеет ряд ограничений: начиная от объёма проверяемых номеров, заканчивая блокировками аккаунтов Telegram-ом при подозрительной активности.
+7 (XXX) XXX-XX-XX
10^10 = 1 млрдТолько в зоне +7 около миллиарда возможных телефонных номеров, и это займёт вечность...
Однако, кол-во проверяемых номеров можно (не значительно) сократить, используя эффективный алгоритм. Например, двигаться от уже найденный номеров/использовать бинарный поиск, исключить незарегистрированные зоны.
Получается, что уязвимы все аккаунты, у которых (на момент сканирования) включена опция поиска по номеру телефона.
При этом вредоносные боты могут самостоятельно распространяться: воровать токены ботов у захваченных аккаунтов, использовать спам (неэффективен), использовать социальную инженерию (требует человеческих ресурсов/внедрения ии).
=> Сеть таких ботов можно считать полноценным сетевым вирусом (т. к. может самостоятельно распространяться по сети).
Однако, будут проблемы с продажей аккаунтов.
И судя по тому, как тг блокирует купленные аккаунты, придётся использовать много хороших прокси.
Когда я нашёл подобный экземпляр, с mini-app-ом удалось получить доступ к их API:
- [x] ~~Изучить внутреннее устройство скам-бота.
Появилась возможность провести анализ: он правильно давал номера телефона, имея только telegram id, даже у пользователей, со скрытыми телефонными номерами, в любых регионах.
После тщательного анализа удалось найти пару человек, для которых это не работало (отметаем вариант лазейки в API Telegram): у всех были номера мало-популярных операторов связи.
Как выяснилось позднее, после разговора с продавцом подобных ботов: они используют базу, в которой хранятся связки telegram_user_id и phone_number.
Судя по анализу звучит правдоподобно.
Кстати, говоря, позднее, я прикрыл бота конкурента, а потом ещё и арендовал сервера у его провайдера, т. к. действительно дёшево: play2go - моё почтение.
Глава 2. Если не можешь победить толпу - возглавь её.
Никого уже не удивить обычным скам-ботом в телеграме, а что если сделать бота, который сможет взламывать аккаунты, просто по ссылке.
Речь о входе в Telegram через QR-код (по большому счёту там просто ссылка, а значит можно аккуратно засунуть её в кнопку тг бота).
Случайно откопал исходники простого скам-бота на lolz-е.
- [ ] Разобраться в исходниках чужого бота.
Его можно было назвать готовым, лишь с некоторыми оговорками:
- Устаревшие зависимости.
- Отсутствие каких-либо инструкций
- Боте предлагалось использовать константные значения
API_IDиAPI_HASH, полученные с https://my.telegram.org/auth?to=apps (нужен для создания кастомных клиентов Telegram).
Но, наилучшей практикой будет использовать значения из стандартных клиентов:
Список данных клиентов
---- Public Android Beta ---- API_ID = 4 API_HASH = "014b35b6184100b085b0d0572f9b5103"---- Public Static Final ---- API_ID = 5 API_HASH = "1c5c96d5edd401b1ed40db3fb5633e2d"
---- TG for Android ---- API_ID = 6 API_HASH = "eb06d4abfb49dc3eeb1aeb98ae0f581e"
---- Public iOS Beta ---- API_ID = 8 API_HASH = "7245de8e747a0d6fbe11f7cc14fcc0bb"
---- Public MacOs Beta ---- API_ID = 2834 API_HASH = "68875f756c9b437a8b916ca3de215815"
---- Public unknown Beta ---- API_ID = 9 API_HASH = "3975f648bb682ee889f35483bc618d1c"
---- Public Win Beta ---- API_ID = 2040 API_HASH = "b18441a1ff607e10a989891a5462e627"
---- Telegram Desktop (example) ---- API_ID = 17349 API_HASH = "344583e45741c457fe1862106095a5eb"
---- Telegram X (Android) ---- API_ID = 21724 API_HASH = "3e0cb5efcd52300aec5994fdfc5bdc16"
---- web. telegram. org ---- (трансфер аккаунтов) API_ID = 2496 API_HASH = "8da85b0d5bfe62527e5b244c209159c3"
---- TDLib (example) ---- API_ID = 94575 API_HASH = "a3406de8d171bb422bb6ddf3bbd800e2"
---- Telegram messenger CLI ---- API_ID = 2899 API_HASH = "36722c72256a24c1225de00eb6a1ca74"
---- Plus Messenger ---- API_ID = 16623 API_HASH = "8c9dbfe58437d1739540f5d53c72ae4b"
---- Telegram Swift ---- API_ID = 10840 API_HASH = "33c45224029d59cb3ad0c16134215aeb"
Источник - https://lolz.live/threads/8286734
Есть python-библиотека, чтобы реализовать это, он использовалась в боте, но, к сожалению, не совсем по назначению.
Из интересного данные для IOS/Android/Desktop клиентов на работают (выдают ошибку 403).
Помимо этих изменений бот был переписан c python2 и, соответственно aiogram2 на актуальные версии библиотек.
Очень много нюансов нужно предусмотреть: 2FA, неверный пароль, неверный код и тд.
- [x]
Сделать приватный GitHub репозиторий.
На первое время, для распространения, я бы залил трафик с ботов, токены которых утекли в open sourse (см. https://iamlostshe.ru/blog/tg-scam-bot).
- Запустить на токенах из базы [[token-finder]].
Написать фильтр ботов, ориентированных на РУ аудиторию (не потому что "осуждаю ворк по РУ", а потому что РУ аккаунты будет сложнее продать, но и поэтому тоже).
#todo #post