Бот в telegram, который следит за доменом
В процессе изучения PHP, пришла в голову мысль, для практики написать какого-нибудь бота на PHP, без использования фрэймворков.
Выбор пал на бота, который будет получать информацию о жизни домена (whois), затем доставать оттуда дату регистрации и добавлять этот домен в БД (mysql), с последующий привязкой к пользователю и уведомлением в telegram.
Исходный код в моем репозитории на гите.
Мне захотелось использовать MVC структуру, что оказалось на мой взгляд не совсем верным, так как view не был задействован и это уже нельзя назвать mvc, но да ладно…
Структура приложения
Controllers — Связующее звено, соединяет model и логику приложения.
Models — Файлы «бизнес-логики» приложения (Старался «запихнуть» сюда весь sql).
Core — Файлы «ядра» приложения.
Library — Библиотеки, использовал библиотеку для парсинга информации о доменном имени.
Маршрутизация
Файл маршрутизации (routes.php) расположил в каталоге core.
В приложении добавлены 2 адреса:
/bot — По этому адресу идет telegramm (необходимо установить webhook на этот адрес «uri/bot»).
/check — По этому адресу ломиться wget с помощью cron 1 в день (в 12 часов), об этом чуть позже.
BotController
При переходе в данный контролер, получаем значения из тела POST запроса, и декодируем его в виде массива.
CheckerController
При переходе в данный контроллер, срабатывает скрипт, который проверяет все добавленные домены и ssl сертификаты на окончание срока действия, с интервалом:
- текущая дата
- 2 дня
- 7 дней
- 30 дней
Добавление пользователей
Когда пользователь пишет сообщение боту webhook telegram, отправляет его на наш сайт, далее нам приходит сообщение в json формате, которое нам нужно декодировать, и преобразовать в массив для дальнейшей работы.
Будем работать с массивом message.
Получаем из массива message[‘chat’]: id , first_name
где:
id — идентификатор чата
first_name — Имя пользователя
А из массива message[‘text’], получаем отправленную пользователем команду.
Находим пользователя в таблице users, если его нет, создаем
Добавление Доменов и SSL
При отправке команды /addDomain url боту, получаем url домена из команды и получаем данные о регистрации домена с помощью этой библиотеки.
Получаем домен
Нам приходит ответ в виде текста:
Из него с помощью регулярных выражений, получаем дату регистрации домена.
Получаем SSL
SSL сертификат решил получать с помощью openssl для linux.
Таким образом получаем:
Разбираем полученное с помощью регулярных выражений
Остается только добавить полученные данные в таблицу.
Привязываем домен и ssl к пользователю
Полученные данные нужно просто записать в промежуточную таблицу для того чтобы не «размножать» домены.
Проверка даты окончания домена
Когда wget переходит по адресу /check, происходит выборка всех доменов и ssl сертификатов, у которых срок действия подходит к концу, и если такие есть, отправляет сообщение в чат к которому привязан данный домен.
Крон в данном проекте нужен для организации перехода по адресу ‘/check’, каждый день в 12 часов.
TOR PROXY
Пару слов о отправки сообщений в telegram.
К сожалению на территории мой страны (Россия), блокируют telegram, в том числе и его api.
Приходится использовать прокси, мой выбор пал на tor proxy (еще с прошлого проекта).
REG.RU создал Whois-бота в Telegram
Крупнейший российский регистратор доменов и хостинг-провайдер REG.RU (по данным StatOnline.ru, занимает первое место по количеству зарегистрированных доменов и размещённых сайтов в национальных зонах .RU и .РФ) первым среди регистраторов создал собственного Telegram-бота. Он позволяет проверить статус домена и получить информацию в сервисе Whois через интерфейс мессенджера.
Чат-боты в мессенджерах — тренд последних лет. Мода на них пришла с востока: первыми возможность использовать ботов получили китайские программы для обмена сообщениями. После внедрения соответствующей платформы в Telegram, «бот-революция» дошла и до России.
Whois-бот появился в Telegram
Запустили ещё одного Telegram-бота: «ещё одного» — потому что тема «создание бота для чего-нибудь» по-прежнему популярна. Компания REG.RU — российский регистратор доменных имён, поэтому там решили создать «помощника», который через интерфейс мессенджера общается с сервисом Whois. В сообщении REG.RU о запуске Whois-бота отмечено, что компания первой среди регистраторов создала собственного Telegram-бота.
Маловероятно, что такой способ получения информации о том или ином домене будет востребован в массовом масштабе. В компании REG.RU считают, что среди пользователей мессенджера Telegram найдутся такие, которым будет удобнее проверить занятость какого-либо домена, воспользовавшись новым ботом.
Whois-бот позволяет не только узнать статус домена («свободен» или «занят»), но и выдаёт информацию о владельце домена, если эта информация доступна через сервис Whois. Если домен не занят, то можно перейти на сайт компании и «забрать» его себе, зарегистрировавшись, и оплатив как обычно. Найти бота можно через поиск в Telegram, введя @WhoisDomBot.
Конечно же, никуда не делся «старый» способ получения информации о доменном имени — через строку запроса на сайте.
Whois в телеграмме для чего
Мы начинаем погружаться в интереснейший мир Телеграмного OSINT-а.
Итак. как и ВКонтакте, каждый пользователь Telegram имеет уникальный и неизменяемый идентификационный номер ID, а также (по желанию) никнейм (имя с «собачкой»). Кроме этого, пользователи могут указывать свои имя и фамилию.
Чтобы получить эти данные следует воспользоваться парой Telegram-ботов:
@userinfobot — перешлите в него сообщение любого пользователя
@CheckID_AIDbot — отправьте ему никнейм пользователя
‼ Пользователь может в любой момент поменять никнейм или номер привязанного мобильного телефона. Но его ID останется неизменным. В связи с этим установление точного идентификационного номера представляется важным элементом расследования.
В проиндексированной части Telegram есть свой поисковики, которые позволяет найти не только словосочетания, но и сообщения конкретного автора:
Ну а кроме этого, получить сведения об участии пользователя в открытых чатах поможет бот @telesint_bot. Поиск в нем ведется по никнейму или ID.
Telegram — это уже фактически филиал Даркнета. В нем предлагаются различные незаконные товары и услуги: от пробива по полицейским базам и биллинга сотовых, до наркотиков и хакерских атак.
Допустим мы нашли чат в Телеграм, в котором сидят злодеи (ДП, наркоторговцы, хакеры и т.д.). Пара сотен человек, а то и больше, руками всех не переберешь. А нужно скопировать разом их никнеймы — комментирует основатель компании Интернет-Розыск Игорь Бедеров.
Выгрузить никнеймы всех участников Telegram-чатов можно при помощи бота @list_member_bot
Как узнать номер телефона, привязанный к тому или иному профилю в Telegram?
Зайдите в бот Телеграм-Деанонимайзер @deanonym_bot. Запросите у бота данные по никнейму (без @) или идентификационному номеру (ID) пользователя. Можно и просто переслать боту любое сообщение проверяемого пользователя. Если данные о телефоне пользователя уже есть в базе, то бот их предоставит бесплатно. База сервиса содержит информацию по 29 млн. пользователям Telegram со всего мира.
Кроме Телеграм-Деанонимайзера в сети еще есть сервис: https://anonimov.net/
Полная версия Телеграм-Деанонимайзера дает еще возможность видеть логи и активность пользователей мессенджера. Но это в полной версии сервиса — комментирует основатель компании Интернет-Розыск Игорь Бедеров.
Если данных о пользователе пока нет в Телеграм-Деанонимайзере, то вы можете идентифицировать его самостоятельно. Для начала выберите один из ботов представленных ниже:
Поиск телефона по профилю Telegram
Доступ в группы и чаты
Поиск информации по номеру телефона
Предложите Вашему собеседнику воспользоваться одним из этих ботов, разместите ссылку на него в чате или Telegram-канале. Как только Ваш собеседник осуществит взаимодействие с одним из ботов — запросите в @deanonym_bot информацию о нем по никнейму (без @) или номеру ID.
Как еще узнать номер телефона пользователя Telegram? В чате с собеседником нажать «Отправить свой телефон» и дождаться, когда он в ответ пришлет любое сообщение. С этого момента в приложении станет видно его телефон, если только собеседник не занесет пользователя в черный список.
Учитывая, что Telegram позволяет переходить по внешним ссылкам, переходы пользователей можно логгировать. Давайте попробуем показать как это работает на практике — предлагает руководитель компании Интернет-Розыск Игорь Бедеров.