Una batea es una gran sartén poco profunda de madera o hierro utilizada tradicionalmente por los buscadores de oro para lavar la arena y la grava y recuperar las pepitas de oro.
Batea es un marco de clasificación de dispositivos de red impulsado por el contexto y basado en la familia de algoritmos de aprendizaje automático de detección de anomalías. El objetivo de Batea es permitir a los equipos de seguridad filtrar automáticamente los activos de red interesantes en grandes redes utilizando los informes de exploración de nmap. Los llamamos "pepitas de oro".
Puede leer también | Descarga instalacion y utilizacion Manual paso a paso de Nmap
Para más información sobre Gold Nuggeting y la ciencia que hay detrás de Batea, consultar el whitepaper aquí
Cómo funciona
Batea trabaja construyendo una representación numérica (numpy) de todos los dispositivos a partir de sus informes nmap (XML) y luego aplicando métodos de detección de anomalías para descubrir las pepitas de oro. Es fácilmente ampliable añadiendo características específicas o interesantes a la representación numérica de los elementos de la red.
La representación numérica de la red se construye utilizando características, que se inspiran en la experiencia de la comunidad de seguridad. Los rasgos actúan como elementos de intuición, y los métodos de detección de anomalías no supervisados permiten utilizar el contexto del activo de la red, o la descripción total de la red, como bloque de construcción central del algoritmo de clasificación. El algoritmo exacto utilizado es Isolation Forest en Wikipedia.
Puede leer también | 10 herramientas esenciales de Linux para profesionales de redes y seguridad
Los modelos de aprendizaje automático son el corazón de Batea. Los modelos son algoritmos entrenados en todo el conjunto de datos y utilizados para predecir una puntuación en los mismos (y otros) puntos de datos (dispositivos de red). Batea también permite la persistencia de los modelos. Es decir, se pueden reutilizar los modelos preentrenados y exportar los modelos entrenados en grandes conjuntos de datos para su uso posterior.
Uso
# Complete info $ sudo nmap -A 192.168.0.0/16 -oX output.xml # Partial info $ sudo nmap -O -sV 192.168.0.0/16 -oX output.xml $ batea -v output.xml
Instalación
$ git clone Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.:delvelabs/batea.git $ cd batea $ python3 setup.py sdist $ pip3 install -r requirements.txt $ pip3 install -e .
Instalación de Desarrolladores
$ git clone Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.:delvelabs/batea.git $ cd batea $ python3 -m venv batea/ $ source batea/bin/activate $ python3 setup.py sdist $ pip3 install -r requirements-dev.txt $ pip3 install -e . $ pytest
Ejemplo de Uso
# simple use (output top 5 gold nuggets with default format) $ batea nmap_report.xml # Output top 3 $ batea -n 3 nmap_report.xml # Output all assets $ batea -A nmap_report.xml # Using multiple input files $ batea -A nmap_report1.xml nmap_report2.xml # Using wildcards (default xsl) $ batea ./nmap*.xml $ batea -f csv ./assets*.csv # You can use batea on pretrained models and export trained models. # Training, output and dumping model for persistence $ batea -D mymodel.batea nmap_report.xml # Using pretrained model $ batea -L mymodel.batea nmap_report.xml # Using preformatted csv along with xml files $ batea -x nmap_report.xml -c portscan_data.csv # Adjust verbosity $ batea -vv nmap_report.xml
Cómo añadir una característica
Batea funciona asignando características numéricas a cada host del informe (o serie de informes). Los hosts son objetos python derivados del informe nmap. Constan de la siguiente lista de atributos: [ipv4, hostname, os_info, ports] donde ports es una lista de objetos ports. Cada puerto tiene la siguiente lista de atributos : [puerto, protocolo, estado, servicio, software, versión, cpe, scripts], todos por defecto a None.
Puede leer también | Con Wireshark 3.0 y otras herramientas de hacking Como probar tu red domestica
Las características son objetos heredados de la clase FeatureBase que instancian un método específico _transform. Este método siempre toma la lista de todos los hosts como entrada y devuelve una función lambda que asigna cada host a una columna numpy de valores numéricos (se conserva el orden de los hosts). La columna se añade a la representación matricial del informe. Las funciones deben devolver valores numéricos correctos (flotantes o enteros) y nada más.
Puede leer también | Seguridad en Redes con Linux dos servicios actualmente esenciales
La mayoría de las transformaciones de características se implementan utilizando una simple función lambda. Sólo hay que asegurarse de asignar por defecto un valor numérico a cada anfitrión para la compatibilidad del modelo.
Utilización de datos tabulares precomputados (CSV)
Es posible utilizar datos preprocesados para entrenar el modelo o para la predicción. Los datos deben estar indexados por (ipv4, puerto) con una combinación única por fila. El tipo de datos debe ser parecido al que se espera de la versión XML de un informe nmap. Una columna tiene que usar uno de los siguientes nombres, pero no es necesario usarlos todos. El analizador sintáctico utiliza por defecto valores nulos si una columna está ausente.
'ipv4', 'hostname', 'os_name', 'port', 'state', 'protocol', 'service', 'software_banner', 'version', 'cpe', 'other_info'
Ejemplo
ipv4,hostname,os_name,port,state,protocol,service,software_banner
10.251.53.100,internal.delvesecurity.com,Linux,110,open,tcp,rpcbind,"program version port/proto service100000 2,3,4 111/tcp rpcbind100000 2,3,4 "
10.251.53.100,internal.delvesecurity.com,Linux,111,open,tcp,rpcbind,
10.251.53.188,serious.delvesecurity.com,Linux,6000,open,tcp,X11,"X11Probe: CentOS"
Salida de la representación numérica
Para el científico de datos que hay en usted, o simplemente por diversión y beneficio, puede dar salida a la matriz numérica junto con la columna de puntuación en lugar de la salida normal. Esto puede ser útil para el análisis de datos y la depuración. Más información: https://github.com/delvelabs/batea
$ batea -oM network_matrix nmap_report.xml