一个基于模块化、高度可扩展的多任务和多进程架构的教育性渗透测试框架。
寻找版本 1?请查看本仓库的分支。
Brutus 是一个用 Python 编写的教育性渗透测试框架。它自动化了基于网络的连接前后利用,以及基于 Web 的信息收集。作为一个轻量级框架,Brutus 旨在最小化对第三方依赖的依赖。Brutus 针对 Kali Linux 进行了优化,同时也兼容 macOS 和大多数 Linux 发行版,具有完全交互式的命令行界面和灵活的插件系统。
Brutus 具有高度可扩展的模块化架构。其包含的利用模块(插件层)由多个解耦的模块组成,这些模块运行在由线程池和线程安全异步队列组成的“任务层”上(根据具体模块选择最合适的机制)。主线程运行在多进程池之上,管理应用程序上下文并分发新进程,以便任务可以在后台、单独的 shell 等环境中运行。
UI 层也是解耦且可扩展的。默认情况下,Brutus 附带一个基于菜单的命令行界面 UI,但你可以添加适配器以支持 GUI、参数解析器,甚至 HTTP API 或远程过程调用。
最后,Brutus 有一个工具层,提供文件系统操作、shell(终端模拟器)管理、持久性方法和系统元数据的通用功能。
如果你只是对 Python 黑客技术感兴趣,可以直接拉取脚本——每个模块都可以独立调用。
Web 扫描和有效载荷编译演示:观看 mp4

你可能需要以下依赖:
Brutus 针对 Kali Linux 进行了优化。网上有大量关于如何在虚拟机中运行 Kali Linux 的信息。
安装方式:
pipenv install
运行:
pipenv run brutus
测试:
pipenv run test
代码检查:
pipenv run lint
为开发设置 Git 钩子:
pipenv run setup
欢迎提交包含功能提议、错误修复等的 PR。请注意,该项目大部分仍在进行中。基础部分已经存在,你可以在此基础上进行构建。
Brutus 包含多个模块,大致可分为三大类:基于网络的、基于 Web 的和有效载荷。后一类是一个编译器库及附带的有效载荷——有效载荷可以通过 Brutus 的交互式命令行菜单进行编译;编译后的有效载荷随后可以加载到许多适用的基于网络的模块中。
Brutus 的基础层使用 POSIX 线程进行并发多任务处理。某些模块——即基本上所有严重 I/O 密集型的模块——则使用 Python 的异步 I/O 库,并在 Python 默认事件循环之上的抽象层上运行。
包含的工具/脚本
注意:此工具适用于 48 位 MAC,默认字节格式为 %02x。
MAC(媒体访问控制)是一个由设备制造商分配给网络接口的永久性、物理且唯一的地址。这意味着即使你的无线网卡,也有自己唯一的 MAC 地址。
MAC 地址类似于互联网上的 IP,用于网络中促进资源和数据(即数据包)的正确传递。一次交互通常包括源 MAC 和目的 MAC。MAC 地址可以识别你,可以被过滤,也可以被访问限制。
重要的是,这些唯一地址不是短暂的;它们是持久的,并且即使将设备安装到另一台机器上,也会与该设备关联。但两者不一定是不可分割的……
该模块接受用户输入的任意无线设备以及用户希望给该设备重新分配的任意有效 MAC 地址。该程序很简单,我不需要过多解释:它利用 subprocess 模块来自动化必要的 shell 命令序列,以关闭无线接口、重新分配 MAC 并重新初始化它。
如果你正在积极更改 MAC 地址,那么拥有某种验证结构或高阶方法来确保以下事项可能是明智的:1) 无线设备存在;2) 无线设备支持 MAC 地址;3) 用户输入的 MAC 地址格式有效;4) 无线设备的 MAC 地址已成功更新。此工具自动化了这些功能。
通过选择“生成”选项而不是指定具体的 MAC 地址,程序将根据 IEEE 规范生成一个有效的 MAC 地址。我很高兴实现了扩展功能,不仅可以生成完全随机(且有效)的 MAC 地址,还可以生成以特定供应商前缀(OUI)开头,或者使用组播和/或 UAA 选项生成的 MAC 地址。这些选项触发生成器方法中的字节码逻辑,并根据 IEEE 规范进行增强。在此了解更多关于 MAC 地址的信息:链接。
网络扫描器是另一个非常有用的工具,与上述的 MAC 更改器配合使用效果更佳。该扫描器利用 ARP 请求功能,接受用户输入的有效 IPv4 或 IPv6 IP 地址以及可选的子网范围。
然后,程序根据给定的 IP 和/或范围进行验证,按照 IEEE 规范(同样,此验证针对 IPv4 和 IPv6 标准)进行。最后,使用给定的 IP 和生成的以太网帧实例化一个广播对象;该对象返回给我们在给定网络和范围内所有已连接设备的列表,将其 IP 映射到各自的 MAC 地址。
程序输出一个包含这些关联的表格,如果需要,该表格可以用作 MAC 更改器的输入。
ARP 欺骗模块使我们能够通过同时操纵给定目标客户端及其网关的 ARP 表,来重定向给定网络中的数据包流。该模块在此过程中自动启用端口转发,并动态构建和发送 ARP 数据包。
当用户终止模块时,目标的 ARP 表会被重置,以免使控制者陷入危险境地(此外,这也是礼貌之举)。
由于此过程将控制者置于客户端与 AP 之间的数据包流中间,因此控制者可以访问所有数据流(处理这些数据的潜在加密是另一个脚本的任务)。从这里,数据包流编排的无数选项变得显而易见:通过自动化和正则表达式进行代码替换、强制重定向、远程访问等。幸运的是,Brutus 也可以自动化此过程。
数据包嗅探器是在运行 ARP 欺骗器后使用的一个优秀模块;它创建了所有被拦截的 HTTP 数据包数据的流,其中包含 URL 或可能的用户凭据。
该脚本是可扩展的,通过使用多种可用过滤器之一实例化监听器对象,可以适应各种协议。注意,Brutus 会自动降级 HTTPS,因此除非涉及 HSTS,否则数据流对于信息收集是可行的。
免责声明:本软件及其所有内容仅为研究目的而创建。我不以任何方式纵容也不对任何可能意图以恶意或非法方式使用本软件的人的行为负责。