Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
batea — Basado en IA y impulsado por contexto, clasificación de dispositivos de red | Kitploit
Herramientas/GitHubGitHub/delvelabs/batea
Análisis de VulnerabilidadesRecopilación de InformaciónSeguridad de RedesAprendizaje AutomáticoDetección de Anomalías
GitHubdelvelabs/batea

batea

Basado en IA y impulsado por contexto, clasificación de dispositivos de red

Ver Repositorio
30347hace 4 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Sitio web

Python package

logo

Batea

Una batea es una bandeja grande y poco profunda de madera o hierro utilizada tradicionalmente por los buscadores de oro para lavar arena y grava y recuperar pepitas de oro.

Batea es un marco de clasificación de dispositivos de red basado en contexto que utiliza la familia de algoritmos de aprendizaje automático de detección de anomalías. El objetivo de Batea es permitir que los equipos de seguridad filtren automáticamente activos de red interesantes en redes grandes utilizando informes de escaneo nmap. A esos los llamamos Pepitas de Oro.

Para más información sobre la búsqueda de Pepitas de Oro y la ciencia detrás de Batea, consulte nuestro documento técnico aquí

Cómo funciona

Batea construye una representación numérica (numpy) de todos los dispositivos a partir de sus informes nmap (XML) y luego aplica métodos de detección de anomalías para descubrir las pepitas de oro. Es fácilmente extensible añadiendo características específicas, o características 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 están inspiradas en la experiencia de la comunidad de seguridad. Las características actúan como elementos de intuición, y los métodos de detección de anomalías no supervisados permiten que el contexto del activo de red, o la descripción total de la red, se utilice como el bloque central del algoritmo de clasificación. El algoritmo exacto utilizado es Isolation Forest (https://en.wikipedia.org/wiki/Isolation_forest)

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 sobre los mismos (y otros) puntos de datos (dispositivos de red). Batea también permite la persistencia de modelos. Es decir, puede reutilizar modelos preentrenados y exportar modelos entrenados en grandes conjuntos de datos para su uso posterior.

Uso

root@kitploit:~
# 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

root@kitploit:~
$ git clone [email protected]:delvelabs/batea.git
$ cd batea
$ python3 setup.py sdist
$ pip3 install -r requirements.txt
$ pip3 install -e .

Instalación para desarrolladores

root@kitploit:~
$ git clone [email protected]: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

root@kitploit:~
# 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 en el informe (o serie de informes). Los hosts son objetos de Python derivados del informe nmap. Consisten en la siguiente lista de atributos: [ipv4, hostname, os_info, ports] donde ports es una lista de objetos puerto. Cada puerto tiene la siguiente lista de atributos: [port, protocol, state, service, software, version, cpe, scripts], todos con valor predeterminado None.

Las características son objetos que heredan de la clase FeatureBase e instancian un método _transform específico. 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 entonces a la representación matricial del informe. Las características deben generar valores numéricos correctos (floats o enteros) y nada más.

La mayoría de las transformaciones de características se implementan utilizando una función lambda simple. Solo asegúrese de asignar un valor numérico a cada host para la compatibilidad del modelo.

Ejemplo:

root@kitploit:~

class CustomInterestingPorts(FeatureBase):
    def __init__(self):
        super().__init__(name="some_custom_interesting_ports")

    def _transform(self, hosts):
      """This method takes a list of hosts and returns a function that counts the number
      of host ports member from a predefined list of "interesting" ports, defaulting to 0.

      Parameters
      ----------
      hosts : list
          The list of all hosts

      Returns
      -------
      f : lambda function
          Counts the number of ports in the defined list.
      """
        member_ports = [21, 22, 25, 8080, 8081, 1234]
        f = lambda host: len([port for port in host.ports if port.port in member_ports])
        return f

Luego puede añadir la característica al informe utilizando el método NmapReport.add_feature en batea/__init__.py

root@kitploit:~
from .features.basic_features import CustomInterestingPorts

def build_report():
    report = NmapReport()
    #[...]
    report.add_feature(CustomInterestingPorts())

    return report

Uso 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, port) con una combinación única por fila. El tipo de datos debe ser similar a lo que espera de la versión XML de un informe nmap. Una columna debe usar uno de los siguientes nombres, pero no tiene que usar todos. El analizador asigna valores nulos si una columna está ausente.

root@kitploit:~
  'ipv4',
  'hostname',
  'os_name',
  'port',
  'state',
  'protocol',
  'service',
  'software_banner',
  'version',
  'cpe',
  'other_info'

Ejemplo:

root@kitploit:~
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 llevas dentro, o simplemente por diversión y beneficio, puede generar la matriz numérica junto con la columna de puntuación en lugar de la salida habitual. Esto puede ser útil para análisis de datos adicionales y fines de depuración.

root@kitploit:~
$ batea -oM network_matrix nmap_report.xml
Descargar herramienta