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

Статья Погружаемся в Covenant - оружие в руках пентестера

yashechka

Генератор контента.Фанат Ильфака и Рикардо Нарвахи
Эксперт
Регистрация
24.11.2012
Сообщения
2 344
Реакции
3 563
В этой статье будет продемонстрирована установка, процесс взлома компьютера с Windows, а также различные атаки и задачи, которые могут быть выполнены на этой скомпрометированной машине с помощью Covenant.

Введение

Covenant - это .NET C&C фреймворк, который был создан для нацеливания через поверхность .NET и обеспечения возможности наступления. Он предоставляет платформу C2 для совместной работы для Red Team. Фреймворк разработан в ASP.NET Core. Фреймворк представляет собой кроссплатформенное приложение, которое также имеет интерактивный интерфейс, обслуживающий нескольких пользователей и доступный через веб-браузер.

В наших статьях по Red Team мы рассмотрели огромное количество платформ C&C. В этих фреймворках нет недостатка, но мы, кажется, всегда возвращаемся к некоторым из наших надежных фреймворков. Следовательно, когда мы использовали и тестировали Covenant, мы почувствовали, что это один из фреймворков, который может быть выбором по умолчанию для многих пользователей. Что нас восхищает в Covenant:

- Многопользовательская поддержка: возможность предоставить платформу для совместной работы с данными от нескольких пользователей является ключом к успешной работе Red Team.

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

- Возможность управления сервером из веб-интерфейса упростила его использование, а также предоставила Red Team независимость от платформы.

- Профили: возможность превратить слушателей в профили обеспечивает злоумышленнику контроль между различными имплантатами и слушателями.


Установка

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

git clone --recurse-submodules https://github.com/cobbr/Covenant

300.png


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

cd Covenant/Covenant
docker build -t covenant .

301.png


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

docker run -it -p 7443:7443 -p 80:80 -p 443:443 --name covenant -v /root/Covenant /Covenant /Data:/app/Data covenant

302.png


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

303.png


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

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

304.png


Как уже говорилось, прослушиватели слушают протокол HTTP, и злоумышленник может собираемся их по своему желанию. Сейчас мы назвать создать его под названием Ignite. Мы выбираем адрес привязки 0.0.0.0, поскольку он является значением по умолчанию. Порт привязки также оставлен по умолчанию, то есть 80. Порт подключения установлен на 80. Нам нужно предоставить ConnectAddress, это важно при выполнении Red Team, поскольку вам потребуется настроить среду C2. Есть возможность установить HTTPProfile. Это опция может управлять тем, как сетевые запросы будут взаимодействовать с Covenant. Заполнив все данные, нажмите кнопку "Создать".

305.png


Теперь в разделе Listener должен отображаться только что созданный прослушиватель. Щелкнув по имени, можно получить доступ к сведениям о слушателе.

306.png


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

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

307.png


Как только мы нажимаем на Binary Link на предыдущем этапе, нам предоставляется форма, в которой мы можем настроить Launcher в соответствии с нашими требованиями. Мы выбираем Listener из выпадающего меню, который мы создали. Злоумышленник может переключиться на версию .Net. Есть и другие варианты, если злоумышленник хочет использовать Certificate Pinning, и величина задержки должна быть принята программой запуска с процентным соотношением джиттера. Также есть возможность запланировать дату самоуничтожения для лаунчера, которая может пригодиться.

308.png


Мы предоставляем все необходимые параметры и нажимаем кнопку "Создать" и "Загрузить", чтобы загрузить программу на наш локальный компьютер. Мы видим, что у нас есть исполняемый файл, созданный с именем GruntHTTP.exe. Мы можем переименовать его перед загрузкой в соответствии с нашими требованиями.

309.png


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

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

310.png


Мы не рассматриваем метод, который следует использовать для передачи лаунчера на цель и выполнения, поскольку существует бесконечное количество способов сделать это, и вы можете выбрать свой предпочтительный метод для этого. Но как только программа запуска запускается, у нас появляется то, что Covenant называет Grunts, и мы называем агентами в PowerShell Empire или сессия если бы ещё проще. Раздел Grunt будет содержать имя, имя-хоста, пользователя и другую информацию, относящуюся к конкретному гранту.

311.png


Щелкнув Grunt Name в разделе Grunt, мы получим подробную информацию о цели и, среди прочего, мы увидим, что у нас есть некоторые действия, которые мы можем выполнить. На вкладке Info отображается информация о цели, а на вкладке "Взаимодействие" можно взаимодействовать с грантом. Затем у нас есть вкладка Task для выполнения различных предопределенных задач на целевой машине, также в списке у нас есть Taskings, которые содержат подробную информацию о различных задачах, выполняемых на целевой машине.

312.png


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

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

313.png


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

314.png


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

315.png


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

316.png


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

317.png


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

318.png


Мы переходим на вкладку Tasks, чтобы увидеть, какие различные задачи мы можем выполнять на целевой машине. Мы видим список различных задач в раскрывающемся меню GruntTask. Выбираем PortScan. Мы можем ввести порты или диапазон портов для тестирования. Мы также можем отключить Ping. Заполнив все данные, нажмите кнопку Task.

319.png


Вернемся на вкладку Interact и увидим, что на целевой машине было выполнено сканирование портов. Видим, что на машине открыто два порта: 445 и 3389.

320.png


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

321.png


Мы видим, что текущий каталог оказался каталогом Downloads для пользователя Raj. Мы видим размер файлов, время создания и время последнего доступа для различных файлов и каталогов внутри выбранного каталога.

322.png


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

323.png


Чтобы получить доступ к загружаемому файлу, нам нужно перейти в раздел Data меню Covenant. Здесь мы видим раздел Downloads на вкладке Downloads. Мы видим имя файла и размер запрошенного файла. У нас есть кнопка Download, с помощью которой файл будет загружен на нашу локальную машину.

324.png


Задания

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

325.png


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

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

326.png


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

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

327.png


После заполнения информации и нажатия кнопки Create мы видим, что теперь есть два пользователя, которые могут получить доступ к Covenant Framework. Это пользователи - raj и aarti, а пользователь raj имеет административный доступ.

328.png


Заключение

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

Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/covenant-for-pentester-basics/
 
Последнее редактирование:
Спасибо за статью!

Кто хочет посмотреть какие ещё бывают фреймворки постэксплуатации читать тут:
xakep.ru/2019/10/18/post-exploitation-frameworks/
 
не нашел в нем сокса - может кто подскажет на гите таск под сокс не завалялся?
https://ku.nz/blog/covenant_socks.html //не реклама
 
подскажите, какой командой сделать чтобы админка стала доступна из интернета а не на локальном серваке ?
получить статику у провайдера, пробросить порты
 
получить статику у провайдера, пробросить порты
ну а какой командой ?
На обычном пк никак.
дак у меня сервак выделенный на линуксе
 
Пожалуйста, обратите внимание, что пользователь заблокирован
this is one of the best frameworks right now but not many people have put it in real environment and worked with it also it crashes if you have many grunts
the crashes due to a high amount of beacons are expected I have experienced one in almost every post exploitation framework i've worked with whether it be cobalt strike shadow or something else
 
Пожалуйста, обратите внимание, что пользователь заблокирован
the crashes due to a high amount of beacons are expected I have experienced one in almost every post exploitation framework i've worked with whether it be cobalt strike shadow or something else
cobalt holds better
 
Этой штуке можно как-то задать интерфейс(адрес) на котором стартовать ? Или она обязательно на локалхосте стартует, а там если мол вам надо, сами порты прокидывайте ?
 
Этой штуке можно как-то задать интерфейс(адрес) на котором стартовать ? Или она обязательно на локалхосте стартует, а там если мол вам надо, сами порты прокидывайте ?
Если ты про это: Covenant has started! Navigate to https://127.0.0.1:7443 in a browser, то там можно с любого интерфейса заходить, на самом деле.

Ну а в листенерах можно любой интерфейс указать. Ну и там 0.0.0.0 по-дефолту стоит.
 
Если ты про это: Covenant has started! Navigate to https://127.0.0.1:7443 in a browser, то там можно с любого интерфейса заходить, на самом деле.

Ну а в листенерах можно любой интерфейс указать. Ну и там 0.0.0.0 по-дефолту стоит.
Так вот дело в том, что он не видит нужный мне интерфейс до вебпанельки и отстуки на него не летят если не крутить маршрутизацию.
Было бы хорошо если бы ему можно было как то указать запускаться например на eth1 и не трогать eth0, eth2 и т.д.
 


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