Faraday Agent Dispatcher lanza cualquier herramienta de seguridad y envía los resultados a Faradaysec Platform.
Faraday Agents Dispatcher ayuda al usuario a desarrollar integraciones con Faraday escritas en cualquier idioma.
Solo ejecuta pip3 install faraday_agent_dispatcher y deberías ver el
comando faraday-dispatcher en tu sistema.
Para configurar un entorno de desarrollo (es decir, para modificar el código del
propio dispatcher, no para escribir tus propias integraciones), debes clonar este repositorio y
ejecutar pip install -e ..
Genera un archivo de configuración ejecutando
faraday-dispatcher config-wizard.
Ejecuta el agente con el comando faraday-dispatcher run. El archivo de configuración
que crea se ubicará en ~/.faraday/config/dispatcher.ini
si no pasas una ruta personalizada.
Debes completar la configuración del agente con tu token de registro, ubicado en http://localhost:5985/#/admin/agents. Verifica que la sección del servidor tenga la información correcta sobre tu instancia de Faraday Server. Luego, completa la sección del agente con el nombre deseado de tu agente. Finalmente, agrega los executors
Un executor es un script que imprime datos JSON de una sola línea en stdout. Recuerda que si imprimes cualquier otro dato en stdout, el dispatcher generará un error. Si quieres imprimir información de depuración o registro, debes usar stderr para eso.
Cada línea escrita en stdout por el executor será decodificada por el dispatcher y enviada a Faraday mediante el endpoint Bulk Create. Por lo tanto, el JSON que imprimas debe tener el esquema que el endpoint requiere (este esquema se detalla a continuación). De lo contrario, el dispatcher se quejará porque le proporcionaste datos no válidos.
Si quieres depurar tu executor, la forma más sencilla de hacerlo es ejecutándolo directamente en lugar de hacerlo con el Dispatcher. Dado que el executor solo imprime datos JSON en stdout, podrás ver toda la información que quiere enviar a Faraday, pero sin enviarla realmente.
Después de escribir tu executor, debes agregarlo con el comando
faraday-dispatcher config-wizard dentro de la sección de executors, añadiendo
su nombre, el comando a ejecutar y el tamaño máximo del JSON a enviar a
Faraday Server. Además, puedes configurar las variables de
entorno y los argumentos en su sección correspondiente.
Para ejecutar un executor, usa el comando faraday-dispatcher config-wizard
y reprodúcelo desde el Faraday Server. El executor usará las
variables de entorno configuradas y solicitará los argumentos.
Los datos publicados en faraday deben corresponder al
endpoint bulk_create de la API REST de Faraday
Si quieres tener más de un dispatcher, cada uno ejecutando sus propios
executors, la forma preferida de hacerlo es crear diferentes
archivos de configuración para cada uno (por ejemplo,
~/.faraday/config/dispatcher-1.ini y
~/.faraday/config/dispatcher-2.ini). Luego, puedes ejecutar dos
instancias diferentes de Dispatcher con faraday-dispatcher --config-file PATH_TO_A_CONFIG_FILE.
Dentro del directorio executors puedes encontrar los executors ya creados.
Los executors oficiales son la colección de executors listos para usar (con una configuración mínima mediante el asistente). Tienen un archivo de manifiesto JSON, que proporciona detalles sobre los usos del executor y ayuda con la configuración de estos.
Los executors oficiales actuales son:
Los executors de desarrollo son la colección de executors que no mantenemos por completo: tenemos ejemplos de uso, conceptuales y executors en desarrollo. Los más importantes son:
basic_example.py: El Hello World de los executors de Faraday. Creará
un host con una vulnerabilidad asociada a élheroku_discovery_agent.py: Carga información de hosts y servicios desde
tu cuenta de HerokuprowlerSample.py: Ejecuta el comando prowler y envía
su salida a Faradaybrainfuck.sh: Una prueba de concepto para demostrar que puedes crear
un executor en cualquier lenguaje de programación, incluido BrainfuckActualmente estamos trabajando en nuevos executors, además de mejorar la experiencia de uso de los agentes.
Nos gustaría dar a algunos agentes acceso de lectura a su espacio de trabajo, para que puedan beneficiarse de los datos existentes y así encontrar información más valiosa.
Para más información, puedes consultar nuestra documentación