Uso de la API de Faraday para la gestión de vulnerabilidades

17 de julio de 2024

Como en cualquier proceso de consultoría, a menudo nos encontramos con que la realización de tareas repetitivas consume tiempo que podríamos invertir en otras actividades. En Faraday, nos gusta afrontar estos retos y utilizar cualquier herramienta disponible para automatizar estos casos de uso con sencillos scripts.

En nuestro equipo Red, preferimos centrarnos en tareas específicas en función del tipo de host y las vulnerabilidades asociadas. No es lo mismo explotar una vulnerabilidad en un servidor de terceros sin conexión a la red interna del cliente que atacar un servidor alojado en la nube que potencialmente podría llevar a un compromiso más interesante, ¿verdad? Otro ejemplo común es cuando se realiza un pentest interno; nuestro cliente detalla los rangos más críticos a observar y analizar.

Faraday nos ayuda a gestionar y analizar las vulnerabilidades y los activos que vamos a evaluar, utilizando múltiples entradas de diferentes herramientas:apifaradayComo puedes ver, un simple escaneo devuelve una lista de 240 activos y más de 6000 vulnerabilidades, por lo que organizar y catalogar mi alcance puede ser algo complejo y difícil. Usando la interfaz de Faraday, puedo aplicar filtros para, por ejemplo, etiquetar un conjunto de vulnerabilidades para separarlas y analizarlas colectivamente. Sin embargo, esto requeriría crear un filtro grande que podría ser engorroso de mantener actualizado, por lo que utilizaremos la API de Faraday junto con faraday-cli para automatizar estas tareas.

En esta primera sección, comprenderemos los componentes clave para llevar a cabo esta automatización:

Componentes

Token de autenticación
El primer paso es obtener un token de autenticación enviando una solicitud POST al servidor de Faraday con el nombre de usuario y la contraseña. El token que recibamos se utilizará en las siguientes solicitudes de la API.

ID de vulnerabilidad
En get_vulns_id devolverá una lista de identificadores para las IPs que queremos modificar/actualizar.

Etiquetas de configuración
Por último, el set_tags aplicará una etiqueta específica a los identificadores de vulnerabilidad que obtuvimos anteriormente.

Interfaz CLI

A lo que nos referimos como función principal es a una interfaz CLI (usando faraday-cli) para interactuar con la API de Faraday. Para instalarlo, puedes seguir los pasos desde el repositorio oficial: https://github.com/infobyte/faraday-cli, pero podemos simplificarlo con los dos métodos siguientes:

Usando pip:

pip install faraday-cli

Del código fuente:

git clone https://github.com/infobyte/faraday-cli.git
cd faraday-cli
pip install .

El script tomará como argumentos el espacio de trabajo, el servidor Faraday, las etiquetas y una lista de IPs como archivo de entrada. Internamente, se autenticará en nuestro servidor (usando el nombre de usuario y la contraseña como variables de entorno), recuperará las vulnerabilidades de las IPs a consultar, y aplicará una etiqueta específica a cada una.

Ejemplo de uso

Para utilizar este script, debe configurar las variables de entorno `FARADAY_USER` y `FARADAY_PASSWORD`. A continuación, puede ejecutar el script desde la línea de comandos, proporcionando los parámetros necesarios:

"`bash

python script.py --workspace  --servidor  --tag  --fichero-de-entrada 

"`

Sustituya ``, ``, `` y `` por sus valores reales.

Funciones internas

Internamente, nuestro script incluirá ciertas funciones para llevar a cabo el proceso que queremos automatizar. En esta sección se explicará cada función y cómo se implementan.

get_token(servidor, usuario, contraseña)

Propósito
Para devolver los IDs de vulnerabilidad para una IP dada.

Valor de retorno
Una lista completa de los ID de vulnerabilidad si la consulta tuvo éxito.

def get_vuln_ids(workspace, server, token, ip):

    vulns_response = requests.get(

        f'https://{server}/_api/v3/ws/{workspace}/vulns/filter?q={{"filters":[{{"name":"target","op":"==","val":"{ip}"}}]}}',

        headers={'Authorization': f'Token {token}'},

        verify=False

    )

    si vulns_response.status_code == 200:

        vulns_data = vulns_response.json()

        return [vuln['id'] for vuln in vulns_data["vulnerabilities"]]

    else:

        print(f "Error: No se han podido recuperar vulnerabilidades para IP {ip}. Código de estado: {vulns_response.status_code}")

    return []
set_tags(workspace, server, token, vuln_ids, tag)

Propósito
Para aplicar etiquetas a las vulnerabilidades utilizando los identificadores obtenidos anteriormente.

Valor de retorno
Debe imprimir un mensaje si la solicitud se ha realizado correctamente.

def set_tags(workspace, server, token, vuln_ids, tag):

    payload = {"vulnerability_ids": vuln_ids, "tags_to_add": [tag], "tags_to_remove": []}

    set_tags_response = requests.post(

        f'https://{server}/_api/v3/ws/{workspace}/vulns/set_tags',

        json=carga,

        headers={'Authorization': f'Token {token}'},

        verify=False

    )

    si set_tags_response.status_code == 200:

        print("Etiquetas configuradas correctamente.")

    si no:

        print(f "Error: No se han podido establecer las etiquetas. Código de estado: {set_tags_response.status_code}")

Para utilizar esta secuencia de comandos, debe configurar FARADAY_USER y FARADAY_PASSWORD como variables de entorno con los valores correspondientes a su instancia. Luego, para ejecutar el script, debe ejecutarlo de la siguiente manera:

python script.py --workspace  --servidor  --tag  --input-file

Sustituya los valores de espacio de trabajo, servidor, etiqueta y archivo_de_entrada con los valores de su instancia.

¿Formación, servicios de red teaming o escaneado continuo? Tenemos lo que necesita. Solicite más información.

Seguir leyendo

Los últimos artículos del blog

Nuestro equipo de investigación de seguridad investiga activamente vulnerabilidades en tecnologías de uso generalizado, con especial atención a la infraestructura de redes y los sistemas integrados. A lo largo de 2024, nuestros investigadores informaron de múltiples problemas de seguridad que afectaban a

8 de enero de 2026

Cada año, la Ekoparty nos recuerda por qué amamos lo que hacemos.Nos preparamos con la misma energía de siempre: para reencontrarnos con la comunidad, compartir lo que investigamos, aprender de otros y..,

6 de enero de 2026

Gabriel Franco es nuestro Jefe de Servicios de Ciberseguridad y nos presenta esta nueva herramienta de código abierto, presentada en Black Hat Arsenal. Emploleaks permite recopilar información personal utilizando inteligencia de código abierto

28 de diciembre de 2025

Manténgase informado, suscríbase a nuestro boletín

Introduzca su correo electrónico y no se pierda nunca las alertas y consejos de seguridad de los expertos de Faraday.

Faraday ayuda a grandes empresas, MSSPs y equipos de seguridad de aplicaciones a aprovechar mejor su ecosistema de seguridad, optimizando lo que ya utilizan.

Sede central

Laboratorio de investigación y desarrollo

Soluciones

Código abierto

2025 Faraday Security. Todos los derechos reservados.
Términos y condiciones | Política de privacidad