Skip to content

Недавно, на просторах 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-е.

  • [ ] Разобраться в исходниках чужого бота.

Его можно было назвать готовым, лишь с некоторыми оговорками:

  1. Устаревшие зависимости.
  2. Отсутствие каких-либо инструкций
  3. Боте предлагалось использовать константные значения 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).

  1. Запустить на токенах из базы [[token-finder]].

Написать фильтр ботов, ориентированных на РУ аудиторию (не потому что "осуждаю ворк по РУ", а потому что РУ аккаунты будет сложнее продать, но и поэтому тоже).

#todo #post