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

Esta versión responde a las antiguas peticiones de los clientes y refuerza nuestra misión de hacer que la gestión de vulnerabilidades sea más sencilla, transparente y práctica.

19 de febrero de 2026

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

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