roeyk/Bywaf
GitHub: roeyk/Bywaf
Bywaf 是一个可审计的 Python 命令行框架,用于编排链式渗透测试工作流程,解决传统测试中数据散乱、难以追溯的问题。
Stars: 4 | Forks: 0
# waf" as is, but that's not a translation to Chinese. The user wants the heading translated to Simplified Chinese.
Bywaf 是一个用于授权 Web 应用程序和
网络测试工作流程的 Python 3 命令行框架。它为操作员提供了一个交互式 shell、插件
命令行工具、持久的 SQLite 支持的事件、工件、笔记、运行时元数据,
以及面向报告的结果工作流程。
Bywaf 插件**不是** Veil 模块、Metasploit 模块、`info` 字典,
或 `run/exploit` 入口点脚本。当前的插件 API 是基于命令行工具的:
插件作者使用 `@commandlet`、`@argument`、`@option`、`CommandletBase`、
`CommandContext`、一个 `plugin()` 工厂函数以及一个 `bywaf.plugin.toml` 清单。
核心思想很简单:
```
hostscanner 192.168.1.0/24 | portscanner | http_probe | webfin | nikto
```
每个管道步骤向项目数据库发出规范化的事件。后续的
步骤、报告、工件搜索、审计导出和未来的前端检查
那些记录的事实,而不是抓取终端回滚。
仅在您拥有明确授权的系统和网络上使用 Bywaf。
## 目录
- [为何选择 Bywaf](#why-bywaf)
- [安装与运行](#install-and-run)
- [快速开始](#quick-start)
- [核心概念](#core-concepts)
- [插件](#plugins)
- [文档](#documentation)
- [开发](#development)
## 为何选择 Bywaf
典型的评估工作流程通常涉及运行工具、复制输出、
进行转换、在别处保存笔记、运行另一个工具,以及稍后
尝试重建发生了什么。Bywaf 旨在将这种来源信息
保存在工作流程内部。
| 工具 | 擅长之处 | Bywaf 的区别 |
| --- | --- | --- |
| Bash | 快速 shell 脚本粘合 | 内置持久事件流、运行时记录、笔记、工件和来源追踪。 |
| Metasploit | 漏洞利用工作流程和模块生态系统 | Bywaf 专注于基于规范评估数据的、可审计的事件驱动编排。 |
| Airflow | 调度数据管道 | Bywaf 是交互式的、操作员驱动的,并围绕实时安全评估工作流程构建。 |
| Python 脚本 | 最大灵活性 | Bywaf 为脚本提供通用的 shell、插件 API、事件存储、审计跟踪和可重用的工作流程状态。 |
## 安装与运行
关于特定操作系统的依赖项和包构建前置条件,请参阅
[INSTALL.md](INSTALL.md)。
在开发期间,从仓库根目录运行 Bywaf:
```
python3 -m bywaf --help
python3 -m bywaf
```
要进行可编辑的本地安装:
```
python3 -m pip install -e .
bywaf --help
bywaf
```
要构建本地 pip 包:
```
scripts/build_pip_package.sh
python3 -m pip install dist/bywaf-0.12.2-py3-none-any.whl
bywaf --help
```
捆绑包装器命令行工具使用的可选外部工具包括 `nmap`、
`nikto`、`eyewitness` 和 `kismet`。
## 快速开始
启动 REPL:
```
bywaf
```
运行一个小型本地管道:
```
bywaf> hostscanner 127.0.0.1 | portscanner
```
检查运行时状态和事件:
```
bywaf> job
bywaf> pipeline
bywaf> step
bywaf> job host=192.0.2.10
bywaf> pipeline host=192.0.2.10
bywaf> step host=192.0.2.10
bywaf> event host.found
bywaf> event step=1
```
在开发期间加载本地插件:
```
bywaf> plugin load=./plugins/myplugin --force
```
设置插件变量:
```
bywaf> set network/portscanner.port=22,80,443
bywaf> portscanner host=127.0.0.1
```
查看面向结果的输出:
```
bywaf> report
bywaf> report pipeline=1
```
## 核心概念
- **命令行工具 (Commandlet)**:由插件或框架提供的一个小型命令。
- **管道 (Pipeline)**:一个命令表达式或由一个或多个
管道步骤组成的附加工作流程。
- **管道步骤 (Pipeline step)**:管道内的一个命令行工具调用。使用 `step=...` 进行选择。
- **作业 (Job)**:运行一个或多个步骤的受监督的前台或后台执行生命周期。
- **事件 (Event)**:由命令行工具或框架服务发出的持久的主题/负载记录。
- **工件 (Artifact)**:存储在配对的工件数据库中,并链接到步骤、管道或作业来源的证据文件。
- **结果 (Finding)**:规范化的候选或已确认的安全问题,通常
派生自较低级别的事实事件。
精确定义请参见 [docs/TERMINOLOGY.md](docs/TERMINOLOGY.md)。
## 插件
捆绑的插件位于 [bywaf/plugins](bywaf/plugins)。较大的插件使用
如下目录布局:
```
bywaf/plugins/http/repo_exposure/
plugin.py
command.py
detect.py
findings.py
models.py
bywaf.plugin.toml
```
插件创作指南始于
[docs/plugin_author/README.md](docs/plugin_author/README.md)。用于
原生、基于库、包装进程和漏洞检测插件的
骨架位于 [docs/plugin_skeletons](
标签:Python安全, Python 框架, SQLite 数据库, Web 应用测试, 事件驱动, 交互式 Shell, 反取证, 安全评估, 审计跟踪, 工件管理, 工作流管理, 归一化事件, 报告系统, 插件架构, 管道命令, 网络安全, 网络测试, 运行时元数据, 逆向工具, 隐私保护