Introducción
Ampliar las pruebas de seguridad es difícil si se realizan auditorías manuales y puede crear cuellos de botella en el ciclo de vida del desarrollo. En Faraday, siempre estamos pensando en cómo reutilizar y automatizar los flujos de trabajo clásicos; por ejemplo, en la seguridad de las aplicaciones, herramientas como Burp Suite Pro proporcionan un excelente escáner para una línea de base de seguridad.
El escaneado continuo permite a los equipos centrarse en la gestión de los nuevos resultados y ahorrar tiempo en la clasificación de aquellos. Además, la idea de descubrir vulnerabilidades durante el ciclo de vida de desarrollo permite a los ingenieros de software detectar fallos comunes y evita que los frutos maduros se trasladen a los entornos de producción.
En este artículo, haremos un recorrido por la automatización de Burp Suite con Faraday Agents, permitiéndole programar escaneos y proporcionar configuraciones de escaneo curadas a otros miembros del equipo. Al hacer esto, más tarde puede crear problemas e informes de GitLab o construir métricas en torno a la postura de seguridad de sus aplicaciones.
Agentes
La orquestación es una forma excelente de que los equipos compartan herramientas y concentren la información en un solo lugar. Faraday proporciona una forma más sencilla de integrar y orquestar algunas herramientas de seguridad populares.
Arquitectura de agentes
Un agente puede gestionar varias herramientas, para cada integración de herramientas utilizamos un “Ejecutor”. Faraday proporciona una serie de Ejecutores oficiales para hacerle la vida más fácil.
Y todas estas características son de código abierto, ¡si quieres puedes crear tus propios ejecutores!
- Lista de albaceas testamentarios
Requisitos
Para este laboratorio, necesitaremos:
- Una licencia de Burp Suite Professional.
Dado que vamos a configurar un agente para Faraday, es debe en la misma máquina virtual en la que tenemos instalado Burp Suite.
Configuración de Burp Suite
Burp Suite proporciona una práctica API para ayudar a automatizar el escáner.
En primer lugar, debemos crear nuestro token Rest API. Esta configuración se puede encontrar en:
- Opciones de usuario > Misc > API de reposo
Generación de una clave API
Para crearla, basta con pulsar el botón Nuevo y aparecerá una nueva ventana emergente:
Tenga cuidado de copiar la clave en el portapapeles, ya que sólo será accesible durante este tiempo. En nuestro caso, la clave suministrada fue:
- G7PQOdeSDXn526Eqc8esV9tDCKZvenkv
Ahora que está todo listo podremos acceder a la API a través de nuestro navegador en:
- http://127.0.0.1:1337/<API-KEY>

Creación de agentes Faraday
Nosotros nos encargamos de la parte complicada. El proceso de integración es una herramienta sencilla:
1. Crear nuestro agente de Faraday UI, tenemos que establecer un nombre para este agente.
2. Seleccione la herramienta deseada, en este caso configuraremos Burp Suite.
3. Cada integración de herramientas requiere una configuración específica, que puede variar en función de la configuración de su entorno. Para Burp los requisitos por defecto son:
- BURP_HOST
-
- Esta es la IP donde Burp expone actualmente su API
- BURP_API_KEY
- Esta es la clave que generamos en este paso “Generar una clave API
- BURP_API_PULL_INTERVAL
- ‘100’

4. Este proceso crea un archivo de configuración, con toda la información necesaria para conectar burp suite, descargar el “dispatcher.yml”
Conexión del agente
Los agentes proporcionan dos opciones para integrar herramientas, un docker autónomo con una serie de herramientas de código abierto y un ayudante Python.
Dado que Burp Suite Pro no puede incrustarse en nuestro Docker utilizaremos la alternativa Python
En primer lugar, tendremos que instalar faraday-dispatcher:
➜ pip3 install faraday_agent_dispatcher
➜ .faraday faraday-dispatcher run --token=758481 2022-07-25 15:45:14,812 - faraday_agent_dispatcher - INFO {MainThread} [dispatcher_agent_dispatcher:153 - register() [dispatcher.py:153 - register()] token_registration_url: https://myserver.com:443/_api/v3/agent_registration 2022-07-25 15:45:15,194 - faraday_agent_dispatcher - INFO {MainThread} [dispatcher_agent_dispatcher:192 - register() [dispatcher.py:192 - register()] Registrado con éxito 2022-07-25 15:45:15,917 - faraday_agent_dispatcher - INFO {MainThread} [dispatcher.py:235 - connect() [dispatcher.py:235 - connect()] Conexión con el servidor Faraday realizada con éxito
Si todo va bien, debemos ver el en línea en nuestra interfaz de usuario.
Ejecutar una exploración desde la interfaz de usuario
Está todo listo, sólo tenemos que lanzar la exploración, 
La “Configuración con nombre” por defecto en los agentes de Faraday ejecutará un “arrastrarse & auditoría” escanear. Burp Suite ofrece varios perfiles de escaneado integrados.
La personalización de los diferentes perfiles de escaneo y lo que funciona en su extremo puede ser revisado aquí:
Configuraciones integradas del escáner de eructos
Nuestros registros verifican que un nuevo escanear fue creado:
➜ .faraday faraday-dispatcher run 2022-07-25 15:50:53,807 - faraday_agent_dispatcher - INFO {MainThread} [dispatcher_agent_dispatcher:256 - run_once() [dispatcher.py:256 - run_once()] Analizando datos: {"execution_id": 5, "agent_id": 4, "workspace": "burpsuite", "action": "RUN", "executor": "burpsuite", "args": {"TARGET_URL": "http://testphp.vulnweb.com/"}} 2022-07-25 15:50:53,812 - faraday_agent_dispatcher - INFO {MainThread} [metadata_utils py:59 - check_commands()] Comprobación de dependencia finalizada. [metadata_utils.py:59 - check_commands()] Comprobación de dependencia finalizada. Listo 2022-07-25 15:50:53,813 - faraday_agent_dispatcher - INFO {MainThread} [dispatcher.py:415 - run_once()] Ejecutando el ejecutor burpsuite. [dispatcher.py:415 - run_once()] Ejecutando burpsuite executor
Y también Burpsuite 🙂 .
Ejecución de escaneos desde la CLI
Una vez que todo está configurado también puede ejecutar cualquier agente directamente desde su CLI, esto es bastante útil ya que le permite la posibilidad de automatizar sus pruebas utilizando scripts personalizados y aprovechando las características de faraday.
También si usted está buscando para integrar Burp en su CI / CD Pipeline esta es una gran manera de hacer esto y recoger cualquier artefacto producido durante las pruebas.
Si es la primera vez que utiliza faraday-cli, debe autenticarse en el servidor que tiene el agente en ejecución:
➜ ~ faraday-cli auth Url de Faraday [https://faraday.mysite.xyz]: Validar certificado SSL para [faraday.mysite.xyz] (Y, N) [Y]: Usuario: myuser Contraseña: *************** 2FA: **** Guardar configuración ✔ Autentificado con faraday: https://faraday.mysite.xyz
Y luego, una lista de los agentes disponibles:
Faraday> lista de agentes
ID NOMBRE ESTADO ACTIVO EJECUTORES
-- ---- --- --- -----
1 demo_agent True online nmap, discovery
4 DAST - BURP Verdadero eructo en línea
Faraday>
➜ ~ faraday-cli agent run -a 4 -e burpsuite -w burpsuite TARGET_URL (cadena): http://testphp.vulnweb.com/artists.php?artist=2 NAMED_CONFIGURATION (cadena): Estrategia de rastreo - más rápida Ejecutor en ejecución: burpsuite/burpsuite Parámetros: {"TARGET_URL": "http://testphp.vulnweb.com/artists.php?artist=2", "NAMED_CONFIGURATION": "Crawl strategy - fastest"} Comando generado: 680
Como nota al margen, los parámetros anteriores son:
-a, para nuestro ID de agente.
-e, el nombre del ejecutor
-w, el espacio de trabajo
Obtención de resultados
Nuestros registros verifican que un nuevo escanear fue creado:
➜ .faraday faraday-dispatcher run 2022-07-25 15:50:53,807 - faraday_agent_dispatcher - INFO {MainThread} [dispatcher_agent_dispatcher:256 - run_once() [dispatcher.py:256 - run_once()] Analizando datos: {"execution_id": 5, "agent_id": 4, "workspace": "burpsuite", "action": "RUN", "executor": "burpsuite", "args": {"TARGET_URL": "http://testphp.vulnweb.com/"}} 2022-07-25 15:50:53,812 - faraday_agent_dispatcher - INFO {MainThread} [metadata_utils py:59 - check_commands()] Comprobación de dependencia finalizada. [metadata_utils.py:59 - check_commands()] Comprobación de dependencia finalizada. Listo 2022-07-25 15:50:53,813 - faraday_agent_dispatcher - INFO {MainThread} [dispatcher.py:415 - run_once()] Ejecutando el ejecutor burpsuite. [dispatcher.py:415 - run_once()] Ejecutando burpsuite executor
Y también Burpsuite 🙂 .

¿Listo para salir?
Si tiene alguna pregunta reserve una llamada con uno de nuestros expertosReferencias: