Network Exploitation, Reconnaissance & Vulnerability Engine (N.E.R.V.E)
Seguridad Continua
Creemos que el escaneo de seguridad debe hacerse continuamente. No diariamente, semanalmente, mensualmente o trimestralmente.
El beneficio de ejecutar el escaneo de seguridad de forma continua puede ser cualquiera de los siguientes:
- Tienes un ambiente dinámico donde la infraestructura se crea cada minuto / hora / etc.
- Quieres ser el primero en captar los problemas antes que nadie
- Quieres la habilidad de responder más rápido.
NERVE fue creado para abordar este problema. Las herramientas comerciales son geniales, pero también son pesadas, no son fácilmente extensibles y cuestan dinero.
Sobre NERVE
NERVE es un escáner de vulnerabilidades adaptado para encontrar vulnerabilidades de nivel Low Hanging Fruits (en seguridad, se relaciona con los usuarios que son víctimas de ataques sencillos), en configuraciones específicas de aplicaciones, servicios de red y servicios sin parches.
Ejemplo de algunas de las capacidades de detección de NERVE:
- Panel Interesante (Solr, Django, PHPMyAdmin, etc.)
- Adquisición de subdominios
- Repositorios abiertos
- Divulgación de información
- Páginas web abandonadas / por defecto
- Malas configuraciones en los servicios (Nginx, Apache, IIS, etc.)
- Servidores SSH
- Bases de datos abiertas
- Caches abiertos
- Indexación del directorio
- Mejores prácticas
No es un sustituto de Qualys, Nessus o OpenVAS. No hace escaneos autentificados, y funciona sólo en modo de caja negra (black-box).
Requisitos Previos
NERVE te instalará todos los requisitos previos automáticamente si eliges la instalación del servidor (se probaron CentOS 7.x y Ubuntu 18.x) (usando el script install/setup.sh
). También viene con un Dockerfile para tu conveniencia.
Ten en cuenta que NERVE requiere acceso de root para la instalación inicial en bare metal (servidor dedicado)(instalación de paquetes, etc).
Servicios y paquetes necesarios para que NERVE funcione:
- Servidor Web (Flask)
- Servidor Redis (binds localmente)
- Paquete Nmap (binario y librería nmap de Python)
- Acceso entrante en el puerto HTTP/S (puedes definirlo en config.py)
El script de instalación se encarga de todo por ti, pero si quieres instalarlo por ti mismo, ten en cuenta que son necesarios.
Instalación
Recomendación de despliegue
La mejor manera de desplegarlo, es ejecutarlo contra tu infraestructura desde múltiples regiones (por ejemplo, múltiples instancias de NERVE, en múltiples países), y alternar el modo continuo para poder captar vulnerabilidades de corta duración en entornos dinámicos/ nubes.
Normalmente recomendamos no poner en la lista blanca las direcciones IP desde las que NERVE iniciará los escaneos, para probar realmente tu infraestructura desde el punto de vista de un atacante.
Para hacer a NERVE bastante ligero, no hay ningún uso de una base de datos que no sea Redis.
Si quieres almacenar tus vulnerabilidades a largo plazo, te recomendamos que uses la función Web hook. Al final de cada ciclo de exploración, NERVE enviará una carga útil JSON a un punto final de tu elección, y entonces podrás almacenarla en una base de datos para su posterior análisis.
Estos son los pasos de alto nivel que recomendamos para obtener los resultados más óptimos:
- Desplegar NERVE en uno o más servidores.
- Crear un script que obtenga los servicios de la Nube (como AWS Route53 para obtener el DNS, AWS EC2 para obtener las IPs de instancia, AWS RDS para obtener las IPs de la base de datos, etc.) y tal vez una lista estática de direcciones IP si tienes activos en un Centro de Datos.
- Llama a la API de NERVE (
POST /api/scan/submit
) y programa un escaneo usando los activos que reuniste en el paso #2. - Busca los resultados de forma programada y actúa sobre ellos (SOAR, JIRA, SIEM, etc.)
- Añade tu propia lógica (excluye ciertas alertas, añade a la base de datos, etc.)
Docker
Clonar el repositorio
git clone git@github.com:PaytmLabs/nerve.git && cd nerve
Construir la imagen de Docker
docker build -t nerve .
Crear un contenedor a partir de la imagen
docker run -e username="YOUR_USER" -e password="YOUR_PASSWORD" -d -p 80:8080 nerve
En tu navegador, navega a http://ip.add.re.ss:80 e inicia sesión con las credenciales que especificaste en el comando anterior.
Servidor
Navegar a /opt
cd /opt/
Clonar el repositorio
git clone git@github.com:PaytmLabs/nerve.git && cd nerve
Ejecutar el instalador (requiere root)
bash install/setup.sh
La comprobación de NERVE está en marcha
systemctl status nerve
En tu navegador, navega a http://ip.add.re.ss:8080 y utiliza las credenciales impresas en tu terminal.
Instalación de Nodos Múltiples
Si quieres instalar NERVE en un despliegue multi-nodo, puedes seguir el proceso normal de instalación de bare metal, después:
- Modificar el archivo config.py de cada nodo
- Cambia la dirección del servidor de Redis RDS_HOST para que apunte a un servidor central de Redis al que reportarán todas las instancias de NERVE.
- Ejecutar
service nerve restart
osystemctl restart nerve
t para recargar la configuración - Ejecutar
apt-get remove redis
/yum remove redis
(dependiendo de la distribución de Linux) ya que no necesitarás que cada instancia se reporte a sí misma. No olvides permitir el puerto 3769 en la instancia Redis, para que las instancias NERVE puedan comunicarse con ella.
Uso
Para aprender sobre NERVE (GUI, API, etc.) te aconsejamos que consultes la documentación disponible a través de la plataforma. Una vez que la despliegas, te autenticas y en la barra lateral izquierda encontrarás un enlace de documentación para el uso de la API y la GUI.
Documentación GUI
Documentación de API
Capturas de pantalla
Pantalla de inicio de sesión
Pantalla del tablero de mandos
Reporte
Mapa de la red
Informe HTML
Error: API rate limit exceeded for 216.246.112.50. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)