bateaf

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".

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.

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.

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.

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

 

Fuente: somoslibres

 

¿Quién está en línea?

Hay 2527 invitados y ningún miembro en línea