Flan Scan Escáner Vulnerabilidades Red Ligero
Flan Scan Escáner Vulnerabilidades Red Ligero

Flan Scan: Escáner de Vulnerabilidades de Red Ligero

CRÉDITOS NO HEREDADOS

El siguiente contenido es una traducción no oficial del repositorio original (Github) citado al final del artículo. La única intención es la comprensión de la herramienta en idioma español.

Flan Scan es un escáner ligero de vulnerabilidad de la red. Con Flan Scan puedes encontrar fácilmente los puertos abiertos en tu red, identificar los servicios y su versión, y obtener una lista de los CVEs relevantes que afectan a tu red.

Flan Scan es un wrapper sobre Nmap y el script de vulners que convierte a Nmap en un completo escáner de vulnerabilidades de red. Flan Scan facilita la implementación de Nmap localmente dentro de un contenedor, el envío de los resultados a la nube y el despliegue del escáner en kubernetes.

Empezando

  • Clonar este depósito
  • Asegúrate de que tienes la configuración de docker:
$ docker --version
  • Añade la lista de direcciones IP o CIDRS que deseas escanear a shared/ips.txt.
  • Construye el contenedor:
$ make build

¡Empieza a escanear!

$ make start

Por defecto, flan crea informes de Latex, para que se ejecuten otros formatos:

$ make html

Los formatos adicionales soportados son md (markdown), html y json.

Cuando el escaneo termine, encontrarás los informes que resumen el escaneo en shared/reports. También puedes ver la salida XML en bruto de Nmap en shared/xml_files.

Iniciar con Flan Scan
Iniciar con Flan Scan

Configuración Personalizada de Nmap

Por defecto, Flan Scan ejecuta el siguiente comando Nmap:

$ nmap -sV -oX /shared/xml_files -oN - -v1 $@ --script=vulners/vulners.nse <ip-address>

El flag -oX añade una versión XML de los resultados del análisis al directorio /shared/xml_files y el flag -oN - flag envía los resultados “normales” de Nmap a la consola. El flag -v1 aumenta la verbosidad a 1 y el flag -sV ejecuta un análisis de detección de servicios (aparte de los análisis de puertos y SYN por defecto de Nmap). El --script=vulners/vulners.nse es el script que hace coincidir los servicios detectados con los CVEs relevantes.

Nmap también permite ejecutar escaneos UDP y escanear direcciones IPv6. Para añadir estas y otras flags al comando Nmap de Scan Flan después de ejecutarlo, haz que el contenedor se ejecute y pasa tus flags de Nmap de esta forma:

$ docker run -v $(CURDIR)/shared:/shared flan_scan <Nmap-flags>

Empujando los Resultados a la Nube

Flan Scan actualmente soporta el envío de informes Latex y archivos de salida XML Nmap a un Bucket GCS o a un Bucket AWS S3. Flan Scan requiere 2 variables de entorno para llevar los resultados a la nube. La primera es upload que toma uno de los dos valores gcp o aws. El segundo es bucket y el valor es el nombre del Bucket S3 o GCS para subir los resultados. Para establecer las variables de entorno, después de ejecutar make build ejecuta el contenedor estableciendo las variables de entorno de esta manera:

$ docker run --name <container-name> \
             -v $(CURDIR)/shared:/shared \
             -e upload=<gcp or aws> \
             -e bucket=<bucket-name> \
             -e format=<optional, one of: md, html or json> \
             flan_scan

A continuación se presentan algunos ejemplos para añadir las necesarias claves de autenticación AWS o GCP como variables de entorno en el contenedor. Sin embargo, esto también se puede lograr con un secreto en Kubernetes que exponga las variables de entorno necesarias o con otras herramientas de gestión de secretos.

Ejemplo de Configuración GCS Bucket

Copia tu clave privada de GCS para una cuenta de servicio en el archivo /shared.

$ cp <path-to-local-gcs-key>/key.json shared/

Ejecuta el contenedor estableciendo la variable de entorno GOOGLE_APPLICATION_CREDENTIALS environment como la ruta a la clave GCS.

$ docker run --name <container-name> \
             -v $(CURDIR)/shared:/shared \
             -e upload=gcp \
             -e bucket=<bucket-name> \
             -e GOOGLE_APPLICATION_CREDENTIALS=/shared/key.json
             -e format=<optional, one of: md, html or json> \
             flan_scan

Ejemplo de Configuración AWS S3 Bucket

Establece las variables de entorno AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY en las variables correspondientes a tu cuenta de servicio S3.

docker run --name <container-name> \
           -v $(CURDIR)/shared:/shared \
           -e upload=aws \
           -e bucket=<s3-bucket-name> \
           -e AWS_ACCESS_KEY_ID=<your-aws-access-key-id> \
           -e AWS_SECRET_ACCESS_KEY=<your-aws-secret-access-key> \
           -e format=<optional, one of: md, html or json> \
           flan_scan

Desplegando en Kubernetes

Cuando se despliega Flan Scan en un sistema de orquestación de contenedores, como Kubernetes, debes asegurarte de que el contenedor tiene acceso a un archivo llamado ips.txt en el directorio /. En Kubernetes, esto puede hacerse con un ConfigMap que montará un archivo en su sistema de archivos local como un volumen al que el contenedor puede acceder una vez desplegado. El archivo kustomization.yaml tiene un ejemplo de cómo crear un ConfigMap llamado shared-files. Este ConfigMap se monta como un volumen en el archivo deployment.yaml.

Aquí hay algunos pasos sencillos para desplegar el Flan Scan en Kubernetes:

  1. Para crear el ConfigMap añade una ruta a un archivo local ips.txt en kustomization.yaml y luego ejecuta kubectl apply -k ..
  2. Ahora ejecuta kubectl get configmap para asegurarte de que el ConfigMap fue creado correctamente.
  3. Establece las variables de entorno y los secretos necesarios para tu proveedor de nubes dentro de deployment.yaml.
  4. Ahora ejecuta kubectl apply -f deployment.yaml para lanzar un despliegue ejecutando Flan Scan.

¡Flan Scan debería estar funcionando en Kubernetes con éxito!

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda