Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
batea — 基于AI的上下文驱动网络设备排名 | Kitploit
工具/GitHubGitHub/delvelabs/batea
漏洞分析信息收集网络安全机器学习异常检测
GitHubdelvelabs/batea

batea

基于AI的上下文驱动网络设备排名

查看仓库
303474年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

Python package

logo

Batea

Batea 是一种由木材或铁制成的大型浅盘,传统上被淘金者用来淘洗沙砾以回收金块。

Batea 是一个基于异常检测机器学习算法的上下文驱动网络设备排名框架。其目标是让安全团队能够使用 nmap 扫描报告 自动筛选出大型网络中有趣的网络资产。我们将这些资产称为金块。

关于金块发现以及 Batea 背后科学的更多信息,请参见我们的白皮书这里。

工作原理

Batea 通过从 nmap 报告(XML)中构建所有设备的数值表示(numpy),然后应用异常检测方法来揭示金块。它可以通过向网络元素的数值表示添加特定特征(即有趣特性)来轻松扩展。

网络的数值表示使用特征构建,这些特征受安全社区专业知识的启发。特征充当直觉元素,而无监督异常检测方法则允许将网络资产的上下文(即网络的总描述)作为排名算法的核心构建块。所使用的确切算法是孤立森林 (https://en.wikipedia.org/wiki/Isolation_forest)。

机器学习模型是 Batea 的核心。模型是在整个数据集上训练的算法,用于预测相同(及其他)数据点(网络设备)的分数。Batea 还支持模型持久化。也就是说,你可以重复使用预训练模型,并将在大型数据集上训练好的模型导出以供后续使用。

用法

root@kitploit:~
# 完整信息
$ sudo nmap -A 192.168.0.0/16 -oX output.xml

# 部分信息
$ sudo nmap -O -sV 192.168.0.0/16 -oX output.xml


$ batea -v output.xml

安装

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

开发者安装

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

示例用法

root@kitploit:~
# 简单使用(以默认格式输出前5个金块)
$ batea nmap_report.xml

# 输出前3个
$ batea -n 3 nmap_report.xml

# 输出所有资产
$ batea -A nmap_report.xml

# 使用多个输入文件
$ batea -A nmap_report1.xml nmap_report2.xml

# 使用通配符(默认 xsl)
$ batea ./nmap*.xml
$ batea -f csv ./assets*.csv

# 你可以在预训练模型上使用 batea,并导出训练好的模型。

# 训练、输出并转储模型以实现持久化
$ batea -D mymodel.batea nmap_report.xml

# 使用预训练模型
$ batea -L mymodel.batea nmap_report.xml

# 将预格式化 CSV 与 XML 文件一起使用
$ batea -x nmap_report.xml -c portscan_data.csv

# 调整详细程度
$ batea -vv nmap_report.xml

如何添加特征

Batea 通过为报告(或系列报告)中的每个主机分配数值特征来工作。 主机是从 nmap 报告派生的 Python 对象。它们由以下属性列表组成:[ipv4, hostname, os_info, ports],其中 ports 是端口对象的列表。每个端口具有以下属性列表:[port, protocol, state, service, software, version, cpe, scripts],全部默认为 None。

特征是继承自 FeatureBase 类的对象,它们实例化一个特定的 _transform 方法。该方法始终以所有主机的列表作为输入,并返回一个 lambda 函数,该函数将每个主机映射到一个 numpy 数值列(主机顺序保持不变)。然后该列被追加到报告的矩阵表示中。特征必须输出正确的数值(浮点数或整数),别无其他。

大多数字特征变换使用简单的 lambda 函数实现。只需确保为每个主机的模型兼容性默认一个数值。

例如:

root@kitploit:~

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

    def _transform(self, hosts):
      """此方法接收主机列表并返回一个函数,该函数统计主机端口中属于预定义“有趣”端口列表的数量,默认为0。

      参数
      ----------
      hosts : list
          所有主机的列表

      返回
      -------
      f : lambda 函数
          统计列表中的端口数量。
      """
        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

然后你可以通过 batea/__init__.py 中的 NmapReport.add_feature 方法将特征添加到报告中:

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

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

    return report

使用预计算的表格数据(CSV)

可以使用预处理数据来训练模型或进行预测。 数据必须通过 (ipv4, port) 索引,每行一个唯一组合。数据类型应接近你对 nmap 报告 XML 版本的期望。 列必须使用以下名称之一,但不必全部使用。如果缺少某列,解析器默认设置为 null 值。

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

示例:

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"

输出数值表示

对于数据科学家,或者仅仅出于乐趣和收益,你可以输出数值矩阵以及分数列,而不是常规输出。这对于进一步的数据分析和调试很有用。

root@kitploit:~
$ batea -oM network_matrix nmap_report.xml
下载工具