Faraday: continuous scanning [Spanish]

Introduction:



Realizar un scanning de seguridad de su infraestructura, servicios o sitios web una vez por año o cada 6 meses es un gran paso para asegurar sus sistemas pero no es suficiente.

Sumado a eso, si la auditoria involucra solo una herramienta nuestra superficie de ataque puede ser muy pequeña.

La idea de este post es contarles como utilizar la plataforma de Faraday para realizar continuous scanning utilizando la mayor cantidad herramientas de auditoria soportadas.

El objetivo sera realizar un scanning semanal o por eventos de un conjunto de targets, con distintas herramientas y obtener todo el resultado en la misma plataforma de Faraday para detectar y mitigar nuevos issues en su infraestructura.

Si bien siempre es necesario realizar auditorias manuales ya que aun el software no supera al humano, tener un continuous scanning utilizando distintas herramientas puede lograr descubrir mayor cantidad de low hanging fruit y mejorar la seguridad en el tiempo sostenidamente.

Preparación:


Las herramientas a utilizar serán:

  • w3af
  • nmap
  • nikto
  • burp
  • zap
  • nessus
  • openvas

Utilizando un conjunto de scripts junto con distintas API obtendremos de una lista de IPs/Website los correspondientes reportes.

Cada reporte luego sera copiado a $HOME/.faraday/report/[workspace_name]

Faraday se encargara de convertir todos los reportes en información valiosa para ser interpretada y consumida por usuarios.

Script:

El siguiente script centraliza todas las acciones antes mencionadas.
./cscan.py: #ejecuta cada script dentro de ./scripts/network/ y ./scripts/web/

./scripts/web #directorio para tools web
./scripts/network #directorio para tools network
./output #directorio temporario donde se generan los reportes
./websites.txt #lista de website a scanear
./ips.txt #lista de IPs/Networks a scanear
./plugin #librerias o plugins necesario por ./scripts/
./config.py #global configuration

El siguiente es el script nmap
./scripts/network/nmap

NAME="nmap_$(date +%s).xml"

${CS_NMAP:=nmap} -iL $1 -oX $2$NAME

Muy simple toma dos parametros el primero es el target y el segundo el output directory para el report, puede ser programados cualquier lenguaje, los siguientes están disponibles:
./scripts/web/burp.sh
./scripts/web/zap.sh
./scripts/web/nikto.sh
./scripts/web/w3af.sh
./scripts/network
./scripts/network/nmap.sh
./scripts/network/openvas.sh
./scripts/network/nessus.sh

Antes de comenzarlo a utilizar revisar ./config.py ya que contiene configuraciones especificas que pueden cambiar en tu sistema, como path de las herramientas, credenciales openvas, etc.


Demo:

Schedule:


El ultimo paso es configurar cada cuanto esta herramienta va ser ejecutada.
Esto puede ser utilizando simplemente cron todos los dias a las 0 hs ejecutamos la herramienta y movemos los reportes al workspace "workspace_name"

# crontab -l

0 0 * * * bash /root/dev/cscan/cscan.py ; mv /root/dev/cscan/output/* /root/.faraday/report/workspace_name/

Otra opción es configurar este scripts con Jenkins y podríamos configurar distintos con eventos el inicio del scanning por ejemplo cada vez que un nuevo merge realice un scan sobre un sitio web o ip especifica.

Faraday Web UI:

Cada vez que un reporte sea incorporado este incluirá solo la nueva información, utilizando tags podemos ir categorizando las vulnerabilidades donde es necesario prestar atención:

1) En la siguiente imagen podemos observar un primer import de Nessus:



2) En la siguiente imagen taggeamos las vulnerabilidades como falso positivo y vulnerables:



3) En la siguiente imagen cargamos un segundo reporte de Nessus, y observamos las nuevas vulnerabilidades:



Este procedimiento continuo permite tener una vision global a lo largo del tiempo sobre la infraestructura.

Tool:

El código se puede encontrar en github:
http://github.com/infobyte/cscan

En la proxima iteracción de Faraday va ser distribuido dentro del sets de herramientas en el directorio /scripts/cscan/


Install:



* Para burp es necesario incluir el plugin plugin/carbonator/carbonator.py incluido, tiene algunas modificaciones para adaptarse a nuestra implementación.

Algunos requerimientos mas:

* pip install python-owasp-zap-v2 w3af-api-client

To-Do:


Agregar mas herramientas, mejorar la detección de fallos de las mismas.

Esperamos sus recomendaciones, dudas, consultas, pull requests !



Post a Comment
Thanks for your comment