Бэкдор для windows 10

HackWare.ru

Этичный хакинг и тестирование на проникновение, информационная безопасность

Как удалённо управлять компьютерами через бэкдор

Эта статья — продолжение инструкций по Pupy. Первые две части:

Работа с подключёнными сессиями

Команда sessions выполняет задачи, связанные с управлением сессиями:

  • вывод списка подключённых удалённых компьютеров
  • выбор сессии для отправки команды компьютеру
  • отключение от одного или сразу всех компьютеров

По умолчанию все команды, которые вы вводите для выполнения на удалённых системах (запуск модулей) pupy выполняет сразу на всех подключённых клиентах. Благодаря этому можно, к примеру, одной командой запустить mimikatz на всех подключённых клиентах и собрать пароли сразу везде.

Чтобы вывести список сессий выполните команду:

Команды Pupy для выполнения на удалённом компьютере

На самом деле, правильно это называется не команды, а модули, поскольку, на самом деле, на удалённых компьютерах можно выполнять любые команды, которые поддерживают эти системы.

Что касается модулей — это в них собраны некоторые часто используемые команды, а также комбинированные действия, в том числе с использованием сторонних инструментов (например, для извлечения всех паролей).

Итак, начнём с обзора всех модулей.

Для запуска команды нужно использовать ту строку, которая стоит в столбце «Имя».

К примеру, чтобы вывести список дисков во всех системах выполните команду:

Чтобы получить справку по модулю, введите его имя с опцией -h. К примеру, я хочу узнать справку для модуля persistence (включение и отключение закрепления):

Пример создания на удалённой системе бэкдора, который будет запускаться при старте компьютера:

Эта запись означает, что конфигурационный файл для автозапуска сохранён по пути /home/mial/.config/systemd/user/dbus.service.d/hgzenu.conf, а сам исполнимый файл сохранён в /home/mial/.dropbox-dist/dropboxc

Ещё несколько примеров.

Для просмотра информации о сетевых подключениях на удалённых системах:

Для извлечения всех паролей:

Захватчик нажатий клавиш:

Получение информации о системах:

Чтобы получить скриншоты рабочих столов удалённых компьютеров:

Выполнение команд только на определённых удалённых системах

Можно переключаться между сессиями, например, чтобы переключиться на первую сессию, чтобы введённые команды выполнялись только на ней:

Необязательно указывать именно номер сессии — поддерживаются разнообразные фильтры, благодаря которым можно выбрать одну или сразу несколько систем. Например, для взаимодействия только со всеми Windows 7:

Поддерживается фильтрация по различным параметрам, вы сможете их все увидеть выполнив команду:

Используйте автодополнение!

При вводе команд, нажимайте клавишу TAB, чтобы дополнить имена команд и опций.

Экранируйте ваши аргументы

Каждая команда в оболочке pupy использует unix подобный синтаксис экранирования. Если вам нужен пробел в одном из ваших аргументов, вам нужно поместить ваш аргумент между кавычек:

Если вы отправляете путь в Windows, вам нужно экранировать обратный слэш ещё одним — вторым обратным слэшем, либо всё поместить в кавычки:

Создавайте псевдонимы

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

то запуск команды

будет эквивалентом запуску команды:

Пример создания псевдонима для добавления команды убийства клиентского процесса pupy сигналом 9:

Работы

Работы (jobs) — это команды, запущенные в фоне. Некоторые модули, такие как socks5proxy или portfwd, автоматически запускают работы, но все модули могут быть запущены как работа, если использовать аргумент —bg:

Переключатель —bg обычно используется, когда вы хотите выполнить длительную команду/модуль и хотите, чтобы по время её работы оболочка продолжала оставаться функциональной.

Читайте также:  Защита от локальной сети windows

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

Командой jobs также можно выводить список работ и завершать работы.

Обычные работы могут быть установлены в вашем рабочем окружении Linux/Unix запуском вашего скрипта pupysh.py внутри утилиты Screen. Затем вы можете настроить cronjobs для запуска команды с любыми требуемыми вам интервалами. Замените 1674 вашим идентификатором сеанса экрана. Команда echo в этом примере по сути эмулирует нажатия клавиши Enter:

Команда run

Эта команда нужна для запуска модулей, но её можно пропускать, если вы не собираетесь использовать дополнительные возможности, такие как выполнение команды в фоне, сохранение результатов в файл и/или только для определённых клиентов.

Защитник Windows 10 может обнаруживать бэкдоры в инструментах специальных возможностей

Обычно такие взломы осуществляются с помощью параметра debugger для ключа Image File Execution Options.

В техническом смысле, ключ реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options позволяет добавлять инструменты отладки к программе, которые автоматически запускаются при запуске приложения. Обычно данная возможность позволяет разработчикам упростить процесс отладки приложения.

Для этого нужно задать параметр “debugger” в ключе “Image File Execution Options” (IFEO), указав название и путь до отладчика. В примере ниже мы назначили программу Notepad2.exe отладчиком для Notepad.exe. Это приведет к тому, что Notepad2.exe будет запускаться каждый раз, когда открывается Notepad.exe.

Хотя данная функция была первоначально создана для получения отладочной информации, она часто используется для других целей. Например, если вы хотите заменить Notepad.exe на другую программу, например Notepad2, то можете воспользоваться примером выше. Другим примером использования данного ключа является замена Диспетчера задач (Taskmgr.exe) на Process Explorer.

К сожалению, данный ключ представляет интерес и для разработчиков вредоносного ПО, в частности с целью настройки бэкдоров. Ключ IFEO может создаваться вредоносной программой, которая будет запускаться каждый раз, когда пользователь начинает работу с другой надежной программой. Затем зловред запустит исходную безопасную программу, и жертва атаки не заметит ничего необычного.

Image File Execution Options может использоваться для установки бэкдоров в системе, которые можно запустить напрямую с экрана блокировки Windows. Некоторые программы из категории специальных возможностей, в частности Sticky Keys (sethc.exe), можно запустить прямо с экрана блокировки, 5 раз нажав Shift, а Utility Manager (utilman.exe) вызывается с помощью горячих клавиш Windows+U.

Создав ключ IFEO для данных программ и установив C:\Windows\System32\cmd.exe в качестве отладчика, вы получите вполне жизнеспособный бэкдор, который можно легко открыть с экрана блокировки:

Пользователю останется 5 раз нажать Shift на экране блокировки, и откроется командная строка. Также будет иметь место эскалация привилегий, так как командная строка в этом случае будет обладать правами администратора, что позволит злоумышленнику получить полный контроль над компьютером жертвы.

Командная строка бэкдора открыта с помощью залипания клавиш

Чтобы защитить пользователей Windows от данных видов атак, Защитник Windows 10 теперь научился обнаруживать ключи IFEO, которые созданы для закрепления отладчиков cmd.exe или taskmgr.exe к инструментам специальных возможностей, доступных с экрана блокировки.

Данные типы атак будут идентифицироваться как Win32/AccessibilityEscalation. В случае их обнаружения, Защитник Windows автоматически удалит конфликтующий отладчик из ключа реестра. Данный тип обнаружения можно спровоцировать при добавлении средства отладки C:\Windows\System32\cmd.exe к IFEO ключу sethc.exe.

Обнаружение Win32/AccessibilityEscalation в Защитнике Windows 10

В тестах Защитник Windows выполнял мониторинг следующих программ на предмет отладчиков, которые могут использоваться в качестве бэкдоров.

  • Переключение дисплеев: C:\Windows\System32\DisplaySwitch.exe
  • Экранная клавиатура: C:\Windows\System32\osk.exe
  • Экранная лупа: C:\Windows\System32\Magnify.exe
  • Экранный диктор: C:\Windows\System32\Narrator.exe
  • Горячие клавиши специальных возможностей (залипание клавиш): C:\Windows\System32\sethc.exe
  • Менеджер утилит: C:\Windows\System32\utilman.exe

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

Проведенный тест не является исчерпывающим. Скорее всего, другие программы и отладчики также могут спровоцировать обнаружение Защитника Windows.

HackWare.ru

Этичный хакинг и тестирование на проникновение, информационная безопасность

Инструкция по Pupy: как создать бэкдор

Смотрите начало в статье «Как установить Pupy».

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

Читайте также:  Microsoft touchpad driver windows 10

Transport

Transport (транспорт) — это то, каким образом (с использованием каких протоколов и технологий) сервер и клиент передают между собой информацию.

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

  • ssl (используется по умолчанию): TCP транспорт обёрнутый в SSL.
  • rsa: Аутентификация и шифрование с использованием RSA и AES256, часто сочетается с другими протоколами.
  • ssl_rsa: Как и ssl, но вложен в rsa слой.
  • websocket:
  • aes: Использует статичный ключ AES256.
  • http: Делает трафик похожим на обычный HTTP + вкладывается в слой rsa.
  • obfs3: Протокол, который не позволяет третьей стороне определить на основании содержимого сообщений, какой протокол используется. Для большей безопасности Obfs3 вложен в слой rsa.
  • scramblesuit: Полиморфный сетевой протокол для обхода цензуры. Scramblesuit сложен со слоем RSA для лучшей безопасности.
  • udp: Rsa слой но через UDP (может быть нестабильным, не решает проблемы с потерявшимися при передаче пакетами).
  • другие: Слои без особого интереса и приведены в качестве примеров кода: (dummy, base64, XOR, …).

Все транспорты способны быть обёртками друг к другу (stackable). Это означает, что, создавая пользовательскую конфигурацию транспорта (pupy/network/transport/ /conf.py), вы можете сделать так, чтобы ваша сессия pupy выглядела как угодно. Например, вы можете сложить HTTP через HTTP через base64 через HTTP через AES через obfs3.

Launchers

Launchers (лончеры) позволяют pupy запускать настраиваемые действия перед запуском обратного соединения.

  • connect: Выполняется подключение от удалённого компьютера к атакующему.
  • bind: Удалённый компьютер начинает прослушивать порт в ожидании подключения к нему
  • auto_proxy: Получит список возможных SOCKS/HTTP прокси и попробует каждый из них. Методы извлечения прокси: реестр, запросы WPAD, настройки gnome, переменная env HTTP_PROXY
  • dnscnc: DNS эксфильтрация

Лончер connect обычно называют Reverse Shell (Обратный шелл). А bind — это то, что обычно называют просто Shell. Подробности об их различиях и случаях применения здесь.

Listeners

Listeners (прослушиватели) — используются с лончером connect, то есть при Reverse Shell (Обратном шелле), когда нужно ждать подключение от удалённого компьютера.

Если в качестве лончера выбран bind, то нам не нужен прослушиватель на нашем компьютере — нам достаточно сразу подключиться к удалённой системе.

Прослушиватели при запуске должны получить два параметра:

  • порт, к которому будет сделано подоключение
  • транспорт, который использует полезная нагрузка

По умолчанию лончер пытается прослушивать на порту 443 используя транспорт ssl. Эту конфигурацию можно изменить в файле pupy.conf. О том, как добавлять свои собственные прослушиватели, будет рассказано далее.

Формат полезной нагрузки

Pupy умеет создавать файлы для различных операционных систем: Windows, Linux, OSX, Android. Поддерживаются различные архитектуры процессора (64- и 32-битные). При создании полезной нагрузки нужно указывать эти данные в параметрах. Это в первую очередь относится к исполнимым файлам — то есть для исполнимых файлов нужно указать, например, что бэкдор должен быть запущен в операционной системе Windows с архитектурой процессора 64-бита.

Pupy умеет создавать не только исполнимые файлы, но и другие форматы, а именно:

  • client: исполнимые файлы для запуска на целевой машине (.exe, .dll, .lin, .so).
  • py: файл python.
  • pyinst: файл python готовый для использования с pyinstaller.
  • py_oneliner: python oneliner (то есть исполнимый код в одну строку) (запускает в фоне прослушивающий сервер)
  • ps1: файл powershell.
  • ps1_oneliner: powershell oneliner (запускает в фоне прослушивающий сервер).
  • rubber_ducky: полезен с rubber ducky.

Генерировать полезную нагрузку можно двумя способами: используя отдельный файл pupygen.py, либо запустив Pupy и в консоли используя команду

Можно выбрать любой вариант — у этих способов идентичные опции запуска. Я буду показывать на примере работы в сессии Pupy, поэтому начинаю с запуска этой программы.

Запуск Pupy

В статье про установку Pupy я рассказывал о двух вариантах установки и рекомендовал первый. Запуск сессии Pupy различается в зависимости от метода установки. При установке прямо в систему, сессия запускается так:

При первом запуске генерируются ключи и сертификаты, которые используются в программе для шифрования соединений с удалёнными системами:

Читайте также:  Создание своей оболочки для linux

Они сохраняются в файл /root/.config/pupy/crypto/credentials.py

Программа также говорит:

Перевод: Использование данного программного обеспечения для доступа к любой системе, услуге или сети без согласия владельца категорически запрещено. Пожалуйста, следуйте кодексу этики: https://www.eccouncil.org/code-of-ethics/

Опции gen

Как сказано выше, genpupygen.py) используются для генерации полезной нагрузки и у них одинаковые опции. Рассмотрим их.

Как можно увидеть, некоторые значения установлены по умолчанию. Если запустить команду

без каких-либо опций, то будет сгенерирована полезная нагрузка, она в качестве значений по умолчанию примет следующие значения:

  • формат полезной нагрузки: client
  • лончер: connect (то есть обратный шелл до нашей машины)
  • в качестве IP адреса берётся автоматически определённый наш адрес
  • порт для подключения: 443
  • платформа: windows/x86
  • транспорт: ssl

Но все эти опции мы, конечно же, можем перенастроить нашими параметрами.

Все опции рассмотрены выше, поэтому нет смысла детально объяснять команды — если вам в них что-то непонятно, тогда вернитесь к их описанию.

Начнём с создания обратного шелла — в этом случае удалённый компьютер («Жертва») подключается к компьютеру «Атакующего». Поэтому при создании полезной нагрузки нужно указать IP адрес, к которому должна подключаться Жертва. К примеру, IP адреса своих интерфейсов можно посмотреть командой

Я буду делать тесты в локальной сети, у компьютера Атакующего локальный адрес 192.168.1.112 — поэтому я буду использовать его, а вы замените его на ваше значение.

Для создания обратного шелла под 64-битную платформу Windows, который будет подключаться к порту 43210 на IP адресе 192.168.1.112 используя транспорт http:

Файл успешно создан и сохранён по пути /root/.config/pupy/output/pupyx64.KrN0Qe.exe

Переименую и скопирую его в более близкий путь:

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

Кстати, при запуске Pupy один прослушиватель запускается автоматически, об этом говорить строка:

То есть заключается слушатель для транспорта ssl на порту 443.

Новые слушатели создаются, удаляются и показываются командой listen.

Создание слушателей listen

Поскольку для своей полезной нагрузки я выбрал транспорт http, а в качестве порта указал 43210, то слушатель в моём случае запускается так:

Общий вид команды такой:

Говорит о том, что всё прошло успешно.

Выведем список всех слушателей:

Всё готово — теперь я переношу файл с полезной нагрузкой на целевую систему и запускаю его там.

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

К управлению сессиями, выполнению команд на удалённой машине и эксплуатации мы перейдём в следующей части. А пока рассмотрим ещё несколько популярных примеров генерации полезной нагрузки.

Создание бэкдора для Windows

Чтобы создать шелл, который откроет порт 54321 для 64-битной ОС Windows и будет ждать подключение от удалённого компьютера по транспорту http выполните следующую команду:

В этом случае мы не указываем IP адрес, поскольку данная полезная нагрузка никуда не подключается. Но мы указываем порт — этот порт будет открыт на компьютере Жертвы в ожидании подключения Атакующего.

Подключение к бэкдору

Для подключения используется команда connect. Рассмотрим её опции.

Как можно увидеть, обязательно нужно указать IP и порт подключения. Транспорт можно не указывать.

Кстати, в Windows IP адрес можно узнать командой

Для подключения к порту 54321 хоста 192.168.1.101:

Как сделать бэкдор для Linux

Для Linux можно также создать обратный шелл и обычный шелл.

Для создания обратного шелла:

Прослушиватель запускается точно так же, как это было показано выше:

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

Для подключения к нему:

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

В следующей части мы рассмотрим как выполнять команды на удалённой системе: Как удалённо управлять компьютерами через бэкдор

Оцените статью