В этой статье будет продемонстрирована установка, процесс взлома компьютера с 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.
Мы склонировали репозиторий в каталог под названием Covenant. Переход в него возможен несколькими способами. Мы будем использовать методологию докеров, поскольку она требует очень мало конфигураций с нашей стороны. Мы создадим приложение на докере, как показано ниже.
После создания Covenant нам нужно запустить контейнер. Здесь мы укажем локальные порты, которые контейнер должен использовать для запуска приложения. И нам нужно указать абсолютный путь к Covenant на вашей машине.
Поскольку наш контейнер докер запущен и работает, мы можем получить доступ к Covenant с помощью веб-браузера. Он запускается на порту 7433, поскольку мы упоминали этот порт при запуске докера на предыдущем этапе. При первой попытке он попросит пользователя создать учетную запись с именем пользователя и паролем.
Создание прослушивателя
После создания пользователя и входа в систему для указанного пользователя мы видим, что фреймворк аккуратно разделен на разделы и меню с левым боковым меню. Здесь мы впервые знакомимся со Прослушивателем. Создать его совсем не сложно. В соответствии с его конфигурациями по умолчанию прослушиватели HTTP будут прослушивать интерфейсы на машине. Чтобы начать его создание, нам просто нужно нажать кнопку "Создать" как показано ниже.
Как уже говорилось, прослушиватели слушают протокол HTTP, и злоумышленник может собираемся их по своему желанию. Сейчас мы назвать создать его под названием Ignite. Мы выбираем адрес привязки 0.0.0.0, поскольку он является значением по умолчанию. Порт привязки также оставлен по умолчанию, то есть 80. Порт подключения установлен на 80. Нам нужно предоставить ConnectAddress, это важно при выполнении Red Team, поскольку вам потребуется настроить среду C2. Есть возможность установить HTTPProfile. Это опция может управлять тем, как сетевые запросы будут взаимодействовать с Covenant. Заполнив все данные, нажмите кнопку "Создать".
Теперь в разделе Listener должен отображаться только что созданный прослушиватель. Щелкнув по имени, можно получить доступ к сведениям о слушателе.
Создание лаунчера
Далее нам потребуется лаунчера. Лаунчера - это полезная нагрузка, которая будет выполняться и подключаться к цели при размещении стейджера для установления соединения с целевой машиной. Доступны самые разные программы запуска: от MSBuild до Cscript. Чтобы выполнить простую демонстрацию в нашей родной среде, мы используем Binary Launcher.
Как только мы нажимаем на Binary Link на предыдущем этапе, нам предоставляется форма, в которой мы можем настроить Launcher в соответствии с нашими требованиями. Мы выбираем Listener из выпадающего меню, который мы создали. Злоумышленник может переключиться на версию .Net. Есть и другие варианты, если злоумышленник хочет использовать Certificate Pinning, и величина задержки должна быть принята программой запуска с процентным соотношением джиттера. Также есть возможность запланировать дату самоуничтожения для лаунчера, которая может пригодиться.
Мы предоставляем все необходимые параметры и нажимаем кнопку "Создать" и "Загрузить", чтобы загрузить программу на наш локальный компьютер. Мы видим, что у нас есть исполняемый файл, созданный с именем GruntHTTP.exe. Мы можем переименовать его перед загрузкой в соответствии с нашими требованиями.
Эксплуатация
Мы загружаем исполняемый файл на нашу локальную машину, чтобы мы могли передать программу на целевую машину и выполнить ее, чтобы вернуть сеанс к нашему сеансу Covenant.
Мы не рассматриваем метод, который следует использовать для передачи лаунчера на цель и выполнения, поскольку существует бесконечное количество способов сделать это, и вы можете выбрать свой предпочтительный метод для этого. Но как только программа запуска запускается, у нас появляется то, что Covenant называет Grunts, и мы называем агентами в PowerShell Empire или сессия если бы ещё проще. Раздел Grunt будет содержать имя, имя-хоста, пользователя и другую информацию, относящуюся к конкретному гранту.
Щелкнув Grunt Name в разделе Grunt, мы получим подробную информацию о цели и, среди прочего, мы увидим, что у нас есть некоторые действия, которые мы можем выполнить. На вкладке Info отображается информация о цели, а на вкладке "Взаимодействие" можно взаимодействовать с грантом. Затем у нас есть вкладка Task для выполнения различных предопределенных задач на целевой машине, также в списке у нас есть Taskings, которые содержат подробную информацию о различных задачах, выполняемых на целевой машине.
Пост-эксплуатация
Мы щелкаем вкладку Interact, чтобы найти интерфейс командной строки, который можно использовать для взаимодействия с целью с помощью набора предопределенных команд. Мы видим список команд для изучения с помощью команды справки.
Среди различных команд, которые мы можем выполнить на цели, есть и снимок экрана. Как только мы запускаем команду, мы видим снимок экрана, сделанный и показанный в самом интерфейсе командной строки.
Следующая команда в нашем списке должна была проверить все различные задачи, которые предположительно выполняются на целевой машине в данный момент. Мы используем команду ProcessList для извлечения этой информации. Мы видим, что у нас есть подробности о различных задач, такие как идентификатор процесса, имя, идентификатор сеанса и владелец процесса.
The Covenant интегрирован с Mimikatz. Это означает, что у нас есть все функции Mimikatz без лишних хлопот. Чтобы продемонстрировать эту способность, мы используем команду SamDump для активации Mimikatz и сбора учетных данных из SAM. Мы видим, что у нас есть хэш для пользователя-администратора на целевой машине.
Далее мы будем отслеживать нажатия клавиш на нашей целевой машине. Мы будем использовать команду Keylogger для этой задачи. Требуется время в секундах, в течение которого кейлоггер будет работать. Для демонстрации мы использовали 120-секундный интервал. Мы видим, что целевой пользователь посещает веб-сайт и вводит свои учетные данные, которые регистрируются и отображаются нам.
Мы не ограничены командами, которая отображается при запуске команды справки. Мы можем запустить все команды оболочки на целевой машине. Для этого нам нужно будет предварять команду словами shellcmd. Мы выполнили команду ipconfig на целевой машине, как показано на изображении.
Мы переходим на вкладку Tasks, чтобы увидеть, какие различные задачи мы можем выполнять на целевой машине. Мы видим список различных задач в раскрывающемся меню GruntTask. Выбираем PortScan. Мы можем ввести порты или диапазон портов для тестирования. Мы также можем отключить Ping. Заполнив все данные, нажмите кнопку Task.
Вернемся на вкладку Interact и увидим, что на целевой машине было выполнено сканирование портов. Видим, что на машине открыто два порта: 445 и 3389.
Следующая задача, которую мы можем выполнить - это получить список каталогов. По умолчанию используется текущий каталог, если путь не указан. Мы нажали кнопку Task, чтобы выполнить задачу на целевой машине.
Мы видим, что текущий каталог оказался каталогом Downloads для пользователя Raj. Мы видим размер файлов, время создания и время последнего доступа для различных файлов и каталогов внутри выбранного каталога.
После перечисления содержимого мы нашли конкретный файл, который нам нужно извлечь с целевой машины. Мы можем использовать Download, чтобы передать этот файл на наш локальный компьютер. Требуется имя файла, который нам нужно скачать. В нашей демонстрации мы загружаем файл Sysmon.zip из текущего каталога.
Чтобы получить доступ к загружаемому файлу, нам нужно перейти в раздел Data меню Covenant. Здесь мы видим раздел Downloads на вкладке Downloads. Мы видим имя файла и размер запрошенного файла. У нас есть кнопка Download, с помощью которой файл будет загружен на нашу локальную машину.
Задания
Затем мы возвращаемся к Grunt из меню и выбираем активный грант. Здесь мы нажимаем на вкладку Tasking, чтобы увидеть широкий список задач, которые мы выполнили на целевой машине. Различная информация включает в себя имя задачи, состояние задачи, имя пользователя для задачи и команду, которая использовалась для выполнения задачи.
Учетные данные
Как мы продемонстрировали ранее, мы выполнили задачу SamDump для цели. Она собирает учетные данные для различных пользователей на машине. В разделе данных собрана вся эта информация, которую RT должны брать на заметку.
Создание пользователей
Как мы уже говорили во введении, мы можем создавать и управлять несколькими пользователями в Covenant. Это помогает эффективно управлять различными членами команды и сотрудничать. Нам нужно щелкнуть по разделу Users в меню слева. Откроется форма, в которой от нас потребуется указать имя пользователя и пароль, которые можно использовать для входа в систему.
После заполнения информации и нажатия кнопки Create мы видим, что теперь есть два пользователя, которые могут получить доступ к Covenant Framework. Это пользователи - raj и aarti, а пользователь raj имеет административный доступ.
Заключение
Как мы видели, настройка Covenant или его установка - это очень простая задача - выполнить несколько команд и предоставить экземпляр докера. Мы также увидели процесс создания прослушивателя и лаунчера. На гранте мы выполнили большой массив задач. Это охватывает основы использования этой инфраструктуры.
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/covenant-for-pentester-basics/
Введение
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
Мы склонировали репозиторий в каталог под названием Covenant. Переход в него возможен несколькими способами. Мы будем использовать методологию докеров, поскольку она требует очень мало конфигураций с нашей стороны. Мы создадим приложение на докере, как показано ниже.
cd Covenant/Covenant
docker build -t 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 с помощью веб-браузера. Он запускается на порту 7433, поскольку мы упоминали этот порт при запуске докера на предыдущем этапе. При первой попытке он попросит пользователя создать учетную запись с именем пользователя и паролем.
Создание прослушивателя
После создания пользователя и входа в систему для указанного пользователя мы видим, что фреймворк аккуратно разделен на разделы и меню с левым боковым меню. Здесь мы впервые знакомимся со Прослушивателем. Создать его совсем не сложно. В соответствии с его конфигурациями по умолчанию прослушиватели HTTP будут прослушивать интерфейсы на машине. Чтобы начать его создание, нам просто нужно нажать кнопку "Создать" как показано ниже.
Как уже говорилось, прослушиватели слушают протокол HTTP, и злоумышленник может собираемся их по своему желанию. Сейчас мы назвать создать его под названием Ignite. Мы выбираем адрес привязки 0.0.0.0, поскольку он является значением по умолчанию. Порт привязки также оставлен по умолчанию, то есть 80. Порт подключения установлен на 80. Нам нужно предоставить ConnectAddress, это важно при выполнении Red Team, поскольку вам потребуется настроить среду C2. Есть возможность установить HTTPProfile. Это опция может управлять тем, как сетевые запросы будут взаимодействовать с Covenant. Заполнив все данные, нажмите кнопку "Создать".
Теперь в разделе Listener должен отображаться только что созданный прослушиватель. Щелкнув по имени, можно получить доступ к сведениям о слушателе.
Создание лаунчера
Далее нам потребуется лаунчера. Лаунчера - это полезная нагрузка, которая будет выполняться и подключаться к цели при размещении стейджера для установления соединения с целевой машиной. Доступны самые разные программы запуска: от MSBuild до Cscript. Чтобы выполнить простую демонстрацию в нашей родной среде, мы используем Binary Launcher.
Как только мы нажимаем на Binary Link на предыдущем этапе, нам предоставляется форма, в которой мы можем настроить Launcher в соответствии с нашими требованиями. Мы выбираем Listener из выпадающего меню, который мы создали. Злоумышленник может переключиться на версию .Net. Есть и другие варианты, если злоумышленник хочет использовать Certificate Pinning, и величина задержки должна быть принята программой запуска с процентным соотношением джиттера. Также есть возможность запланировать дату самоуничтожения для лаунчера, которая может пригодиться.
Мы предоставляем все необходимые параметры и нажимаем кнопку "Создать" и "Загрузить", чтобы загрузить программу на наш локальный компьютер. Мы видим, что у нас есть исполняемый файл, созданный с именем GruntHTTP.exe. Мы можем переименовать его перед загрузкой в соответствии с нашими требованиями.
Эксплуатация
Мы загружаем исполняемый файл на нашу локальную машину, чтобы мы могли передать программу на целевую машину и выполнить ее, чтобы вернуть сеанс к нашему сеансу Covenant.
Мы не рассматриваем метод, который следует использовать для передачи лаунчера на цель и выполнения, поскольку существует бесконечное количество способов сделать это, и вы можете выбрать свой предпочтительный метод для этого. Но как только программа запуска запускается, у нас появляется то, что Covenant называет Grunts, и мы называем агентами в PowerShell Empire или сессия если бы ещё проще. Раздел Grunt будет содержать имя, имя-хоста, пользователя и другую информацию, относящуюся к конкретному гранту.
Щелкнув Grunt Name в разделе Grunt, мы получим подробную информацию о цели и, среди прочего, мы увидим, что у нас есть некоторые действия, которые мы можем выполнить. На вкладке Info отображается информация о цели, а на вкладке "Взаимодействие" можно взаимодействовать с грантом. Затем у нас есть вкладка Task для выполнения различных предопределенных задач на целевой машине, также в списке у нас есть Taskings, которые содержат подробную информацию о различных задачах, выполняемых на целевой машине.
Пост-эксплуатация
Мы щелкаем вкладку Interact, чтобы найти интерфейс командной строки, который можно использовать для взаимодействия с целью с помощью набора предопределенных команд. Мы видим список команд для изучения с помощью команды справки.
Среди различных команд, которые мы можем выполнить на цели, есть и снимок экрана. Как только мы запускаем команду, мы видим снимок экрана, сделанный и показанный в самом интерфейсе командной строки.
Следующая команда в нашем списке должна была проверить все различные задачи, которые предположительно выполняются на целевой машине в данный момент. Мы используем команду ProcessList для извлечения этой информации. Мы видим, что у нас есть подробности о различных задач, такие как идентификатор процесса, имя, идентификатор сеанса и владелец процесса.
The Covenant интегрирован с Mimikatz. Это означает, что у нас есть все функции Mimikatz без лишних хлопот. Чтобы продемонстрировать эту способность, мы используем команду SamDump для активации Mimikatz и сбора учетных данных из SAM. Мы видим, что у нас есть хэш для пользователя-администратора на целевой машине.
Далее мы будем отслеживать нажатия клавиш на нашей целевой машине. Мы будем использовать команду Keylogger для этой задачи. Требуется время в секундах, в течение которого кейлоггер будет работать. Для демонстрации мы использовали 120-секундный интервал. Мы видим, что целевой пользователь посещает веб-сайт и вводит свои учетные данные, которые регистрируются и отображаются нам.
Мы не ограничены командами, которая отображается при запуске команды справки. Мы можем запустить все команды оболочки на целевой машине. Для этого нам нужно будет предварять команду словами shellcmd. Мы выполнили команду ipconfig на целевой машине, как показано на изображении.
Мы переходим на вкладку Tasks, чтобы увидеть, какие различные задачи мы можем выполнять на целевой машине. Мы видим список различных задач в раскрывающемся меню GruntTask. Выбираем PortScan. Мы можем ввести порты или диапазон портов для тестирования. Мы также можем отключить Ping. Заполнив все данные, нажмите кнопку Task.
Вернемся на вкладку Interact и увидим, что на целевой машине было выполнено сканирование портов. Видим, что на машине открыто два порта: 445 и 3389.
Следующая задача, которую мы можем выполнить - это получить список каталогов. По умолчанию используется текущий каталог, если путь не указан. Мы нажали кнопку Task, чтобы выполнить задачу на целевой машине.
Мы видим, что текущий каталог оказался каталогом Downloads для пользователя Raj. Мы видим размер файлов, время создания и время последнего доступа для различных файлов и каталогов внутри выбранного каталога.
После перечисления содержимого мы нашли конкретный файл, который нам нужно извлечь с целевой машины. Мы можем использовать Download, чтобы передать этот файл на наш локальный компьютер. Требуется имя файла, который нам нужно скачать. В нашей демонстрации мы загружаем файл Sysmon.zip из текущего каталога.
Чтобы получить доступ к загружаемому файлу, нам нужно перейти в раздел Data меню Covenant. Здесь мы видим раздел Downloads на вкладке Downloads. Мы видим имя файла и размер запрошенного файла. У нас есть кнопка Download, с помощью которой файл будет загружен на нашу локальную машину.
Задания
Затем мы возвращаемся к Grunt из меню и выбираем активный грант. Здесь мы нажимаем на вкладку Tasking, чтобы увидеть широкий список задач, которые мы выполнили на целевой машине. Различная информация включает в себя имя задачи, состояние задачи, имя пользователя для задачи и команду, которая использовалась для выполнения задачи.
Учетные данные
Как мы продемонстрировали ранее, мы выполнили задачу SamDump для цели. Она собирает учетные данные для различных пользователей на машине. В разделе данных собрана вся эта информация, которую RT должны брать на заметку.
Создание пользователей
Как мы уже говорили во введении, мы можем создавать и управлять несколькими пользователями в Covenant. Это помогает эффективно управлять различными членами команды и сотрудничать. Нам нужно щелкнуть по разделу Users в меню слева. Откроется форма, в которой от нас потребуется указать имя пользователя и пароль, которые можно использовать для входа в систему.
После заполнения информации и нажатия кнопки Create мы видим, что теперь есть два пользователя, которые могут получить доступ к Covenant Framework. Это пользователи - raj и aarti, а пользователь raj имеет административный доступ.
Заключение
Как мы видели, настройка Covenant или его установка - это очень простая задача - выполнить несколько команд и предоставить экземпляр докера. Мы также увидели процесс создания прослушивателя и лаунчера. На гранте мы выполнили большой массив задач. Это охватывает основы использования этой инфраструктуры.
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/covenant-for-pentester-basics/
Последнее редактирование: