Covenant для пентестинга

Дата: 15.07.2021. Автор: Игорь Б. Категории: Статьи по информационной безопасности
Covenant для пентестинга

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

Что такое Covenant?

Covenant — это фреймворк NET Command and Control, который был создан для нацеливания на поверхность .NET и обеспечения возможности дать ответный удар при нападении. Он представляет собой платформу C2 для выполнения Red Team Assessment. Фреймворк был разработан в ASP.NET Core. Это также кроссплатформенное приложение, которое имеет интерактивный интерфейс для работы сразу с несколькими пользователями. Помимо этого, его можно запустить в веб-браузере.

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

  • Поддержка сразу нескольких пользователей. Есть возможность предоставить платформу для совместной работы с данными нескольких пользователей. Это является ключом к успешному Red Team Assessment.
  • Интерфейс. Простой и удобный интерфейс помогает пользователю быстро выполнить свою работу. Есть возможность управлять сервером с помощью веб-интерфейса, что упрощает весь процесс и обеспечивает независимость Red Teams от выбранной платформы.
  • Профили. Можно превратить листенеры в профили, что обеспечивает пользователю контроль над различными «имплантатами».

Установка

Установка Covenant начинается с копирования всех файлов с официальной страницы GitHub.

git clone --recurse-submodules https://github.com/cobbr/Covenant
Covenant для пентестинга

Пользователь перемещает все файлы в каталог под названием Covenant. Есть несколько способов установки. Пользователь будет использовать docker, поскольку тогда с его стороны потребуется очень мало вмешательства. Человек создает приложение в docker, как показано ниже.

cd Covenant/Covenant
docker build -t covenant .
Covenant для пентестинга

После создания Covenant нужно запустить контейнер. Здесь пользователь укажет локальные порты, которые контейнер должен использовать для запуска приложения. Следует также выбрать абсолютный путь к Covenant на своем ПК.

docker run -it -p 7443:7443 -p 80:80 -p 443:443 --name covenant -v /root/Covenant /Covenant /Data:/app/Data covenant
Covenant для пентестинга

Поскольку контейнер docker был запущен и работает сейчас, пользователь может получить доступ к платформе Covenant с помощью своего браузера. Он работает на порту 7433, так как человек указывал именно этот порт при запуске docker на предыдущем этапе. При первом запуске он попросит пользователя создать новую учетную запись.

Covenant для пентестинга

Создание листенера

После создания нового пользователя и входа в систему можно заметить, что информация аккуратно распределена по разделам и меню. Именно здесь пользователя впервые знакомят с листенером. Создать его совсем не сложно. В соответствии с конфигурациями по умолчанию листенеры HTTP будут прослушивать интерфейсы. Чтобы начать их создание, нужно просто нажать на кнопку «Create», как показано ниже.

Covenant для пентестинга

Как уже было сказано ранее, листенеры прослушивают протокол HTTP. Человек может назвать их так, как захочет. Пользователь собирается создать один из них под названием Ignite. Он выбирает адрес привязки как 0.0.0.0, поскольку он и используется по умолчанию. Порт привязки также оставлен по умолчанию, т. е. 80. Порт подключения установлен на такое же значение. Необходимо указать адрес подключения, поскольку это очень важно при выполнении Red Team Assessment. Для этого потребуется настроить среду C2. Есть возможность создать HTTPProfile. Это дает возможность управлять тем, как сетевые запросы будут взаимодействовать с Covenant. После заполнения всех деталей пользователь нажимает на кнопку «Create».

Covenant для пентестинга

Теперь в разделе «Listeners» должен быть показан листенер, который только что был создан. На его имя можно щелкнуть, чтобы открыть подробную информацию.

Covenant для пентестинга

Создание лаунчера

Далее пользователю потребуется лаунчер. Лаунчер – это полезная нагрузка, которая будет выполняться и подключаться к цели во время размещения стейджера для установления соединения с машиной. Доступные средства запуска варьируются от MSBuild до CScript. Чтобы выполнить демонстрацию в своей родной среде, пользователь будет использовать Binary Launcher.

Covenant для пентестинга

Как только пользователь нажимает на Binary Link, перед ним появляется форма, с помощью которой он может настроить лаунчер в соответствии с его требованиями. Пользователь также предоставляет доступ к листенеру из созданного раскрывающегося меню. Переключение Dot Net Version становится доступным. Есть и другие варианты, если человек хочет использовать Certificate Pinning, задержка должна быть принята лаунчером Jitter Percentage. Существует также возможность запланировать Kill Date для лаунчера.

Covenant для пентестинга

Пользователь выбирает все необходимые опции и нажимает на кнопку «Generate» и кнопку «Download», чтобы скачать программу запуска на свой локальный компьютер. Он видит, что у него есть исполняемый файл, созданный и сохраненный под именем GruntHTTP.exe. Пользователь может переименовать его перед загрузкой в соответствии с его требованиями.

Covenant для пентестинга

Эксплуатация

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

Covenant для пентестинга

В данной статье не рассматривается метод, используемый для переноса лаунчера на цель и выполнения его, поскольку для этого существует бесконечное множество способов. Читатели могут выбрать предпочтительный метод именно для них. Однако как только лаунчер будет запущен, Covenant вызывает Grunts и агентов PowerShell Empire или Session. Каждый grunt будет иметь свое имя, а также включать в себя такую информацию, как имя хоста, имя пользователя и подробности о нем.

Covenant для пентестинга

При нажатии на Grunt Name в разделе Grunt пользователю будет показана подробная информация о цели. Помимо всего прочего, у него есть некоторые возможности в плане функциональности, которыми он может воспользоваться. На вкладке «Info» показана информация о цели; вкладка «Interact» предоставляет возможность взаимодействия с Grunt. Затем есть вкладка «Tasks» для выполнения различного рода задач на целевой машине. В списке есть задания, для которых подробно описываются различные задачи, выполняемые на целевой машине.

Covenant для пентестинга

Пост-эксплуатация

Пользователь переходит на вкладку «Interact», чтобы найти там интерфейс командной строки, который можно использовать для взаимодействия с целью с помощью набора предопределенных команд. Этот список команд для изучения можно найти в меню справки.

Covenant для пентестинга

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

Covenant для пентестинга

Следующей командой в списке была проверка всех задач, которые предположительно выполняются на целевой машине в данный момент. Пользователь использует команду «ProcessList» для извлечения этой информации. Он видит, что у него есть подробная информация о различных задачах, таких как Process ID, Name, Session ID и Owner of the process.

Covenant для пентестинга

Covenant интегрирован с Mimikatz. Это означает, что у пользователя есть вся функциональность Mimikatz без хлопот, которые связаны с использованием инструмента. Чтобы проверить это, пользователь вводит команду «SamDump» для активации Mimikatz и сбора учетных данных из SAM. Он видит, что у него есть хэш администратора целевой машины.

Covenant для пентестинга

Теперь пользователь будет отслеживать нажатия клавиш на целевом компьютере. Для этой задачи он будет использовать команду «Keylogger». Требуется выбрать время (в секундах), в течение которого будет записан результат. Для демонстрации данной команды был использован 120-секундный интервал. Пользователь видит, что цель посещает веб-сайт и вводит свои учетные данные, которые регистрируются и будут показаны взломщику.

Covenant для пентестинга

Пользователь не ограничен только командами, которые видны при вызове справки. Он может запустить все команды Shell на целевой машине. Для этого нужно будет предварить каждую команду командой «shellcmd». Пользователь, к примеру, выполнил команду «ipconfig» на целевой машине.

Covenant для пентестинга

Человек переходит на вкладку «Tasks», чтобы посмотреть, какие задачи он может выполнить на целевой машине. Он видит список различных задач в раскрывающемся меню с надписью «GruntTask». Пользователь выбирает PortScan. Он может указать порты или диапазон портов для тестирования. Можно также отключить пинг. После заполнения всех полей следует нажать на кнопку «Task».

Covenant для пентестинга

Пользователь возвращается на вкладку «Interact», чтобы увидеть, что на целевой машине было выполнено сканирование портов. Он видит, что на машине открыты два порта: 445 и 3389.

Следующая задача, которую можно выполнить, — это List Directory. В нем будет указано содержимое запрошенного каталога. По умолчанию используется текущий каталог, если путь не был выбран. Пользователь нажал на кнопку «Task», чтобы выполнить задачу на целевой машине.

Пользователь видит, что текущий каталог – это Загрузки учетной записи Raj. Хакер видит размер файлов, их время создания и время последнего открытия.

После перечисления содержимого пользователь нашел конкретный файл, который нужно извлечь с целевой машины. Он может использовать задачу «Download», чтобы перенести этот файл на его локальный компьютер. Для этого требуется имя файла, который следует загрузить. В данном примере пользователь загружает файл Sysmon.zip из текущего каталога.

Чтобы получить доступ к файлу, который был загружен, нужно перейти в раздел «Data». Здесь пользователь видит раздел «Downloads». Есть имя файла и его размер. Нажав на кнопку «Downloads», пользователь сохранит нужный файл на его ПК.

Постановка задач

Следует вернуться к Grunt и выбрать параметр «Active Grunt». Пользователь переходит на вкладку «Tasks», чтобы просмотреть широкий список задач, которые он выполнил на целевой машине. Данная информация включает в себя название задачи, ее статус, имя пользователя и команду, которая использовалась для выполнения задания.

Учетные данные

Речь идет о различных данных, которые собираются на основе команд, что выполняются на целевой машине. Как было сказано ранее, пользователь выполнил задачу «SamDump» на цели. Он захватывает учетные данные различных пользователей. В разделе «Data» собирается вся эта информация.

Создание пользователей

Человек может создавать и управлять несколькими пользователями в Covenant. Это помогает эффективно контролировать различных членов команды и сотрудничать с ними. Нужно перейти в раздел «Users» в меню слева. Откроется специальная форма, которая требует, чтобы человек указал имя пользователя и пароль, что можно использовать для входа в систему.

После ввода всех данных и нажатия на кнопку «Create» пользователь видит, что теперь есть два пользователя, которые могут получить доступ к Covenant Framework. Этими пользователями являются raj и aarti, причем raj имеет статус администратора.

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

Игорь Б

Об авторе Игорь Б

Автор на портале cisoclub.ru. Добавляйте ваш материал на сайт в разделе "Разместить публикацию".
Читать все записи автора Игорь Б

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *