Создание трояна с управлением через GitHub

RAT троян icon

В этой статье расскажу, как создать троян (RAT), используя GitHub в качестве платформы для управления проектом и хранения кода. Мы пройдем через все этапы — от настройки репозитория на GitHub до написания и тестирования модулей трояна. Я постараюсь максимально подробно объяснить процесс на основе материалов книги «Black Hat Python» и собственных дополнений.

Еще по теме: Как написать троян на Python

Создание трояна с помощью GitHub

Remote Access Trojan, или RAT (Рат /  Ратник), — это вредоносное ПО, которое позволяет получить несанкционированный удаленный доступ к целевому компьютеру. RAT дает возможность удаленно управлять компьютером жертвы. Управление может быть частичным, например, запись нажатий клавиш, или полным, включая выполнение команд, доступ к файлам и контроль над мышью и клавиатурой. Подробнее см. в статье «Что такое RAT»

Распространение вредоносных программ карается лишением свободы до четырех лет (статья 273). Мы не хотим, чтобы вы сломали себе жизнь в местах не столь отдаленных, поэтому публикуем статью исключительно в образовательных целях. Ведь лучший способ разобраться в работе зловредного ПО — это узнать, как оно создается.

Настройка GitHub

Первое, что нужно сделать, — это создать аккаунт на GitHub. Это бесплатно и несложно.

После регистрации аккаунта создайте новый репозиторий нажав Add new repository (Добавить новый репозиторий) и дайте ему имя. Можно сделать его публичным или приватным. После создания репозитория сгенерируйте API-ключ для подключения к аккаунту GitHub.

В правом верхнем углу нажмите на круг с вашим именем или аватаркой.

Настройка GitHub для создания трояна

Затем прокрутите вниз и выберите Settings (Настройки).

Создание проекта GitHub

В самом низу страницы перейдите на вкалду Developer settings (Настройки разработчика).

Настройки разработчика GitHub

Откройте выпадающий список Personal access tokens и выберите Tokens (classic).

Personal access tokens GitHub

Нажмите на Generate new token (Создать новый токен) и затем снова на Generate new token (classic).

Generate new token GitHub

Дайте токену название и срок действия. Я выбрал неограниченный срок и дал полный доступ. Прокрутите вниз и нажмите Generate token (Сгенерировать токен).

Создание токена GitHub

На следующей странице увидите токен. Скопируйте его и сохраните для дальнейшего использования.

Теперь создадим каталоги и подключим GitHub.

Инициализация репозитория

В терминале выполните следующие команды:

После этого, в репозитории на GitHub, должен появится файл .gitignore. Папки пока не отображаются, так как они пусты.

Модули

Модули будут отдельными компонентами трояна, каждый из которых отвечает за конкретную задачу, такую как кейлоггинг, эксфильтрация данных или обратный шелл. Эти модули будут представлять собой отдельные скрипты. Давайте создадим два простых модуля.

Создайте файл dirlister.py в папке modules и добавьте следующий код:

Теперь, когда вы добавляете что-то новое в программу, не забывайте коммитить изменения. Используйте следующие команды всякий раз, когда вносите изменения в код:

Этот скрипт просто выводит список файлов в текущей рабочей директории. В будущем, когда будете создавать новые модули, убедитесь, что у каждого модуля есть функция run, которая принимает переменное количество аргументов. Это позволит загружать каждый модуль одинаково, поддерживая модульную структуру программы.

Давайте создадим еще один модуль. В терминале создайте новый файл environment.py и добавьте следующий код:

Этот тоже простой модуль, который возвращает все переменные окружения, доступные текущему процессу.

Файл конфигурации

Теперь создадим файл конфигурации. В папке config создайте JSON-файл abc.json и добавьте в него следующий код:

Мы используем JSON по нескольким причинам:

  • JSON легкий и не увеличивает размер файла. Это по сути текстовый файл с компактным форматом, который эффективно парсить и обрабатывать.
  • JSON не привязан к какому-либо конкретному языку программирования, что делает его удобным для использования.

Конечно, есть и другие причины, но это основные. А теперь переходим к самому интересному!

Код скрипта

Для начала я покажу весь код скрипта Python, а потом разберем все подробнее.

Импорты

Начнем с подключения нужных модулей. Нам понадобятся библиотеки для работы с GitHub, кодирования данных, работы с потоками, и несколько других:

Подключение к репозиторию GitHub

Сначала нужно подключиться к репозиторию на GitHub. Для этого создадим функцию, которая будет считывать токен из локального файла и использовать его для аутентификации:

Получение содержимого из репозитория

Теперь,после подключения можно написать функцию для получения содержимого файла из репозитория:

Класс Trojan

Основной функционал будет реализован в классе Trojan. Этот класс будет отвечать за получение конфигурации, выполнение модулей и сохранение результатов:

Получение конфигурации

Ратник будет загружать конфигурационный файл с GitHub, который определяет, какие модули запустить:

Запуск модулей и сохранение результатов

После загрузки конфига троян будет выполнять модули и сохранить результаты на GitHub:

Основной цикл работы трояна

Рат будет работать в бесконечном цикле, периодически проверяя конфиг и выполняя модули:

Динамическая загрузка модулей с GitHub

Чтобы троян мог загружать и выполнять модули прямо с GitHub, создадим класс GitImporter, который будет отвечать за динамическую загрузку кода:

Запуск трояна

Для того чтобы запустить ратник, нужно добавить GitImporter в системный путь поиска модулей и создать экземпляр класса Trojan:

Проверка трояна

Код написан, давайте его протестируем. Сначала создадим файл secret.txt в той же директории, где находится trojan.py, и добавим туда наш токен GitHub.

Не забудьте добавить этот файл в .gitignore, чтобы он не попал в репозиторий.

Запустим:

Запуска трояна GitHub

После запуска, дайте немного поработать, затем остановите с помощью Ctrl + C. Теперь давайте загрузим данные из репозитория на GitHub:

Запуска трояна GitHub в терминале

Если все прошло успешно, вы увидите два файла в директории data вашего репозитория.

Работа ратника GitHub в терминале

Файл с именем abc. В нем содержатся все данные, которые получили от модулей. Перейдите в каталог abc:

Создание ратника на GitHub

Здесь данные с установленными временными метками. Давайте посмотрим, что в них содержится.

Содержимое отчета ратника

Информация зашифрована. Давайте расшифруем и посмотрим что там внутри.

Как создать ратник

Для расшифровки данных из файлов можно использовать следующую команду:

Создать рат GitHub

Данные модуля dirlister. Теперь вы можете сделать то же самое с другим файлом.

Заключение

Наш простой троян успешно работает, и теперь у вас есть базовое понимание того, как создаются подобные инструменты на Python. В будущем я планирую написать больше статей на эту тему, где расскажу, как добавлять новые модули. Но пока, можете поэкспериментировать с этим кодом сами, добавляя свой функционал.

ПОЛЕЗНЫЕ ССЫЛКИ:

QUASAR

Этичный хакер и компьютерный ниндзя. Новые статьи в нашей Телеге!

Добавить комментарий