
Covenant é um framework de comando e controle para .NET que visa destacar a superfície de ataque do .NET, facilitar o uso de técnicas ofensivas .NET e servir como uma plataforma colaborativa de comando e controle para red teamers.
Covenant é uma aplicação multiplataforma em ASP.NET Core que inclui uma interface web que permite colaboração multiusuário.

Guia de Início Rápido
Por favor, consulte o guia Instalação e Inicialização para começar com o Covenant!
A Wiki documenta a maioria das funcionalidades principais do Covenant e como usá-las.
Recursos
O Covenant possui vários recursos importantes que o tornam útil e o diferenciam de outros frameworks de comando e controle:
- Interface Intuitiva - O Covenant oferece uma aplicação web intuitiva para executar facilmente uma operação colaborativa de red team.
- Multiplataforma - O Covenant tem como alvo o .NET Core, que é multiplataforma. Isso permite que o Covenant seja executado nativamente em Linux, MacOS e Windows. Além disso, o Covenant oferece suporte a Docker, permitindo sua execução em um contêiner em qualquer sistema que tenha Docker instalado.
- Multiusuário - O Covenant suporta colaboração multiusuário. A capacidade de colaborar tornou-se crucial para operações eficazes de red team. Vários usuários podem interagir com o mesmo servidor Covenant e operar de forma independente ou colaborativa.
- Orientado por API - O Covenant é orientado por uma API que permite colaboração multiusuário e é facilmente extensível. Além disso, o Covenant inclui uma interface Swagger UI que torna o desenvolvimento e a depuração mais fáceis e convenientes.
- Perfis de Listener - O Covenant suporta "perfis" de listener que controlam como a comunicação de rede entre os implants Grunt e os listeners do Covenant se parece na rede.
- Troca de Chaves Criptografadas - O Covenant implementa uma troca de chaves criptografadas entre os implants Grunt e os listeners do Covenant, baseada em grande parte em uma troca semelhante no projeto Empire, além da criptografia SSL opcional. Isso alcança a propriedade criptográfica de sigilo perfeito entre os implants Grunt.
- Compilação Dinâmica - O Covenant utiliza a API Roslyn para compilação dinâmica em C#. Toda vez que um novo Grunt é gerado ou uma nova tarefa é atribuída, o código relevante é recompilado e ofuscado com ConfuserEx, evitando payloads totalmente estáticos. O Covenant reutiliza grande parte do código de compilação do projeto SharpGen, que descrevi em muito mais detalhes em um post anterior.
- Execução de C# Inline - O Covenant empresta código e ideias dos projetos SharpGen e SharpShell para permitir que operadores executem one-liners em C# em implants Grunt. Isso permite funcionalidades semelhantes às descritas no post sobre SharpShell, mas permite que os one-liners sejam executados em implants remotos.
- Rastreamento de Indicadores - O Covenant rastreia "indicadores" durante uma operação e os resume no menu de Indicadores. Isso permite que um operador realize ações que são rastreadas ao longo de uma operação e resuma facilmente essas ações para a equipe azul durante ou ao final de uma avaliação, para fins de desconflicto e educacionais. Esse recurso ainda está em sua infância e ainda tem espaço para melhorias.
- Desenvolvido em C# - Pessoalmente, gosto de desenvolver em C#, o que pode não ser surpresa para quem leu meus blogs ou ferramentas mais recentes. Nem todos concordarão que o desenvolvimento em C# é ideal, mas espero que todos concordem que é bom ter todos os componentes do framework escritos na mesma linguagem. Achei muito conveniente escrever servidor, cliente e implant na mesma linguagem. Isso pode não ser um "recurso" verdadeiro, mas espero que permita que outros contribuam com o projeto com facilidade.
Perguntas e Discussão
Tem perguntas ou quer conversar mais sobre o Covenant? Junte-se ao canal #Covenant no Slack BloodHound Gang.