❗ 免责声明
本工具仅用于学术和研究目的,作为大学课程的一部分。 在未获事先同意的情况下使用 MASAPT 攻击目标是非法的。
开发者对因使用本工具造成的任何损害概不负责,并 谴责任何恶意使用 MASAPT 的行为。本工具目前不适用于任何专业 环境,它只是底层理论模型的 概念验证。
多智能体自动化渗透测试系统 🐱💻

一个基于 SPADE 智能体通过 XMPP 通信协调并执行渗透测试的自主系统。 以命令行工具的形式呈现!
传入 URL,稍等片刻,阅读报告!

它是一个用 Python 开发的 概念验证 多智能体系统,旨在 以结构化和智能化的方式自动化渗透测试过程。
最终目标是打造一个功能完善、灵活、分布式的基于 CLI 的渗透测试 工具,用于自动化渗透测试任务。
当前功能:
未来计划与功能列于 此处。
比较复杂。
需要安装相当数量的先决条件和依赖:
除了 Python 和 Kali 自带的渗透测试工具外,你还需要 访问某个 XMPP 服务。我在测试系统时使用了本地运行的 ejabberd。
要让你选择的 XMPP 服务器上的智能体运行起来,你需要创建 以下用户。当然,你也可以创建其他用户,但随后你需要在 masapt 脚本中创建智能体时传递新的 JID 和 PWD 参数。
| JID | PASSWORD |
|---|---|
| repoter@domain | repoterSecret |
在先决条件安装完成且 XMPP 设置妥当之后:
进入项目文件夹
cd ../MASAPT
将目录添加到 PATH
export PATH=$PATH:/path/to/MASAPT
source ~/.bashrc
安装 Python 依赖
pip install -r requirements.txt
使 masapt 脚本可执行
chmod +x masapt
通过以下命令启动系统:
masapt -t url/to/target
更多智能体:
扩展 Explorer.py 以支持:
扩展 SQLinjector.py 以支持:
扩展 Coordinator.py 以支持:
MASAPT 系统被设想为 模块化、分布式 和 务实 的。这意味着组成系统的智能体独立于主进程,可升级,并使用现有的、经过“实战检验”的渗透测试工具。
为实现设想的目标,智能体作为 三层模型 的一部分进行开发,该模型源自标准的渗透测试阶段(规划 - 执行 - 后执行)。该模型的高层概览见下方的 图 1。
本概述中的所有理论概念均已实现代码(除了未来的构想——图 8)。这些概念应在系统未来的任何升级中继续实现。
三层模型 的主要思想是提供一个框架,用于组织和分类本系统中的智能体。
模型的第一层包含 探索者 智能体,负责进行 OSINT 并收集有关目标的任何有用情报。
第二层包含 协调者 智能体和 利用 智能体。协调者是一个单独的智能体,它决定哪些利用智能体将参与当前的测试。利用智能体顾名思义是执行漏洞利用的智能体——SQL 注入、XSS、DoS、缓冲区溢出……可以有很多这类利用智能体。
第三层包含 报告者 智能体,其任务是收集所有利用数据、结果、所有利用智能体的数据转储,并在最终报告中汇总。报告随后展示给用户并本地存储。
在第一张图中,粗箭头代表模型中的数据流。

图 2 显示了与第一张图相同的模型,但更详细——智能体可以清楚地看到在各自层级中。该图中的 实心 箭头再次代表模型中的数据流,从而显示哪些智能体在相互通信。可以看到 探索者 智能体将数据发送给 协调者 智能体,后者再将一些数据发送给 利用 智能体(SQLinjector、agent2、agent3)。最后,利用智能体收集的所有数据都传递给 报告者 智能体,然后由它编译、汇总并呈现给用户。
还可以看到只有 探索者 和 利用(SQLinjector)智能体与外部环境(测试目标)交互。这由双向 虚线 箭头表示。
如前所述,MASAPT 系统的特性之一是分布式的。这方面的一个方面已经实现,因为所有智能体都是作为独立程序实现的,由主(masapt)脚本运行。
图 3. 显示了当前系统的设置和测试方式。可以看到智能体使用 SPADE 环境通过本地系统上设置的 XMPP(ejabberd)服务器进行通信。测试目标(SQLi Labs)也设置在本地系统上。这种设置适合测试系统,但并未展示 MASAPT 作为分布式系统的全部能力。
另一方面,图 4. 显示了 MASAPT 未来可能的实现方式。它展示了一个分布式多智能体系统,使用 XMPP 进行通信,并使用 Docker 跨多个不同系统运行。实心 箭头再次显示了系统的通信和数据流方面,展示了智能体如何通过中心 XMPP 服务器发送和接收数据。
智能体通过 XMPP 通信的主要原因是为智能体提供一种可靠、语言无关的通信方式。通过这种方法,并非所有未来的智能体都必须用 Python 编写,甚至不必使用 SPADE 环境。
其背后的理由是,未来可能存在使不同系统成为 MASAPT 一部分的用例(例如,用其他编程语言编写的智能体)。因此,这种“XMPP 方法”是为系统提供那种灵活性的最佳方式。
除了通信能力,行为是任何智能体的第二个最重要的方面。MASAPT 智能体及其行为通过一组状态建模,这使其成为有限状态机。SPADE 环境对创建有限状态机有很好的支持。
下面的图表显示了智能体在任何时刻可能处于的所有状态。图表还显示了哪些事件导致智能体转移到下一个状态。所有未来的智能体都应以同样的方式实现。
所有未来的利用智能体(例如 DoS、XSS……)应使用 图 8. 的图表作为模板实现。


[1] 非常感谢 Audi-1 和他出色的 SQLI labs,用于测试基于错误的、布尔盲注和基于时间的 SQL 注入!
| explorerSecret |
| coordinator@domain | coordinatorSecret |
| sqlinjector@domain | injectorSecret |