RavageC2
Há alguns meses lançamos nossa ferramenta de comando e controle, o RavageC2, com foco principal em máquinas Windows, utilizando como base python e powershell.
Essa ferramenta tem como objetivo auxiliar profissionais de segurança ofensiva a atuar em ambientes muito seguros, onde há forte implementação de sistemas EDR e forte presença de blue team fazendo análises constantes no ambiente. Para esses cenários, o RavageC2 é extremamente útil.
A ferramenta em si foi criada de forma privada, sendo inicialmente um projeto interno da XPSec Security, mas decidimos publicar em nosso github para ajudar a comunidade.
Versão 1.2
Recentemente publicamos a versão estável da ferramenta, sendo a 1.2 e trouxemos diversas novidades que estamos empolgados em compartilhar... quando realizamos um ataque usando a ferramenta em um cliente, percebemos que em ambientes locais funcionava muito bem, a interface fluia com poucas máquinas comprometidas, mas quando você tinha o dashboard cheio de máquinas comprometidas isso virava um caos... decidimos realizar diversos ajustes na interface web para facilitar o uso principalmente quando há o comprometimento de diversas máquinas ao mesmo tempo.
Interface Gráfica

Agora você tem filtros, os modals da interface se encaixam melhor, você consegue realizar o redimensionamento entre a visualização das máquinas e a tela de interação, nada é fixo como era antes!
Uma das principais mudanças que adicionamos também foi a adição de filtros, você consegue filtrar por informações da máquina, domínio, estado da máquina (online/offline/all), agrupar por domínio. Isso ajuda muito quando você lida com +20 máquinas de diversas empresas/domínios diferentes.
Não podia deixar de comentar também que agora a interface está no estilo Dracula Theme, achamos mais bonito assim e as cores combinam mais com o estilo escuro.
Listener
Se você já usou a versão anterior, provavelmente se lembra que o listener era feito por meio do arquivo profile.yaml, então se você quisesse criar um novo listener era necessário editar esse arquivo e reiniciar o servidor, em operações reais isso era extremamente inviável já que nem sempre você terá facilidade em acessar o SSH do servidor que o RavageC2 está sendo executado.
Para facilitar e evitar problemas, removemos essa limitação, agora diretamente pelo dashboard você consegue gerenciar seus listeners, tanto a criação quando a remoção.

Não há mais necessidade de reiniciar o servidor, não há mais necessidade de editar o arquivo de profile. Tudo fica gerenciável pelo painel web, como deve ser!
Agent Generator
Para gerar agents agora você pode simplesmente escolher qual listener quer usar, sem estar restrito a apenas 1 como era na antiga versão, veja o exemplo abaixo:

Dessa forma você consegue gerenciar melhor seus agents, distribuindo-os para portas específicas dos listeners sem as limitações que o profile.yaml gerava.
Histórico de Comandos e Fila de Execução
Outro ponto importante que não havia nas versões anteriores era um histórico de comandos, era realmente preocupante quando você executava um comando e outro em seguida, mas não conseguia ver o resultado do comando anterior... parecia muito uma shell simples e extremamente limitada. Resolvemos isso de duas formas:
1 - Adicionamos o histórico de comandos, onde vocẽ pode usar a seta para cima do seu reclado para voltar comandos anteriores e visualizar o histórico. 2 - Adicionamos fila de execução, agora quando você envia dois ou mais comandos, o agent executará todos sequencialmente sem substituir nenhum, isso nos permitiu adicionar navegação de arquivos diretamente no dashboard sem depender de módulos externos.

Profile.yaml
Também não poderia deixar de falar sobre o novo formato do profile.yaml, como comentei, agora você não precisa mais criar listeners diretamente nesse arquivo, você pode criar perfis de tráfego maleáveis onde, esses perfis irão simular o comportamento de sites e ferramentas reais, tanto a requisição quanto resposta.
Ao criar um listener, você consegue escolher qual perfil quer usar, não se limitando a somente um. Veja um exemplo abaixo onde o agent irá simular requisições para o microsoft teams e o c2 irá responder como se fosse o teams:
- id: "teams"
description: "Simulate Microsoft Teams"
http:
user_agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
uris:
- "/api/chatsvc/amer/v1/users/ME/conversations/notes/messages"
- "/OneCollector/1.0/?cors=true&content-type=application/x-json-stream&content-encoding=gzip"
request_headers:
- "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
- "Accept-Language: en-US,en;q=0.5"
- "Referer: https://teams.cloud.microsoft/"
- "Client-Version: 1DS-Web-JS-4.2.1"
response_headers:
- "content-type: application/json"
- "server: Microsoft-HTTPAPI/2.0"
- "x-content-type-options: nosniff"
Você pode criar quantos perfis quiser dentro do profile.yaml e usá-los no listener, durante sua geração.
Conclusão
Essa ferramenta realmente é muito importante para nós, obviamente está em seu estágio inicial e não estamos competindo com outras ferramentas do mercado, como Havoc e CobaltStrike, estamos criando algo confiável, algo simples e que tente passar despercebido por sistemas de defesas.
Você pode conferir tudo aqui: https://github.com/XPSec-Security/Ravage
Em breve, iremos fazer uma nova pubicação explicando totalmente o funcionamento do profile.yaml e detalhando o traffic profile. Até logo!

