BBOT MCP服务器
用于运行的模型上下文协议(MCP)服务器 BBOT 安全扫描。此服务器提供通过MCP接口管理和执行bbot扫描的工具。
特性
- 模块管理:列出并探索可用的bbot模块
- 预设管理:列出并使用预定义的扫描配置
- 扫描执行:启动和管理长时间运行的bbot扫描
- 实时监控:检查扫描状态并检索结果
- 等待和进度跟踪:等待扫描完成,并显示超时和进度报告
- 同时扫描:支持多个同时扫描
- 依赖管理:全面的sudo防御和无deps功能
安装
来自PyPI(推荐)
pip install bbot-mcp来源
git clone https://github.com/marlinkcyber/bbot-mcp.git
cd bbot-mcp
pip install -e .使用uvx(无需安装即可运行)
uvx bbot-mcp安装依赖项
建议在调用BBOT MCP服务器之前安装所有BBOT依赖项:
bbot --install-all-deps用法
运行MCP服务器
安装后,可以使用启动服务器 bbot-mcp 命令:
bbot-mcp或者直接使用Python:
python -m bbot_mcp.server可用工具
MCP服务器提供 8工具 全面的bbot扫描管理:
1. list_bbot_modules()
按类型(扫描、输出、内部)列出所有可用的bbot模块。
2. list_bbot_presets()
列出快速扫描配置的所有可用bbot预设。
3. start_bbot_scan(targets, modules="", presets="", flags="", no_deps=True)
使用指定参数启动新的bbot扫描。
参数:
targets:逗号分隔的目标列表(域、IP、URL)modules:要使用的模块的可选逗号分隔列表presets:要应用的预设的可选逗号分隔列表flags:可选逗号分隔的标志列表no_deps:禁用依赖项安装以防止sudo提示(默认值:True)
例子:
start_bbot_scan("example.com,google.com", "httpx,nmap", "web-basic", "safe", True)重要提示: 这 no_deps=True 参数阻止bbot尝试安装缺少的依赖项,这将导致挂起MCP服务器的sudo密码提示。
4. get_scan_status(scan_id)
检索特定扫描的当前状态。
5. get_scan_results(scan_id, limit=100)
从已完成或正在运行的扫描中检索结果。
参数:
scan_id:扫描的唯一标识符limit:要返回的最大结果数(默认值:100)
6. list_active_scans()
列出所有当前活动的扫描及其基本信息。
7. wait_for_scan_completion(scan_id, timeout=300, poll_interval=5, include_progress=True)
等待扫描完成,并显示超时和进度报告。
参数:
scan_id:要等待的扫描IDtimeout:最长等待时间(秒)(默认值:300=5分钟)poll_interval:以秒为单位检查扫描状态的频率(默认值:5)include_progress:是否在响应中包含进度更新(默认值:True)
退货:
- 成功响应,包括完成详细信息、经过的时间和进度更新
- 如果扫描未在指定时间内完成,则超时响应
- 无效扫描ID或其他问题的错误响应
例子:
# Wait for scan to complete with custom timeout
result = wait_for_scan_completion("scan-123", timeout=600, poll_interval=10)8. get_dependency_info()
提供有关bbot的依赖关系管理系统以及MCP服务器如何处理依赖关系的信息。
MCP配置示例:
{
"mcpServers": {
"bbot": {
"command": "uvx",
"args": ["--refresh","bbot-mcp"]
}
}
}扫描管理
扫描生命周期
- 开始:正在初始化扫描
- 跑步:扫描正在执行中
- 完成:扫描已成功完成
- 错误:扫描遇到错误
长时间扫描
扫描在单独的线程中运行,以避免阻塞MCP服务器。你可以:
- 同时启动多个扫描
- 扫描运行时检查状态
- 从正在进行的扫描中检索部分结果
发展
测试
运行测试套件以验证功能:
# Run all tests
pytest
# Run specific test categories
python tests/test_server.py
python tests/simple_test.py
python tests/test_imports.py
# Test the binary command
bbot-mcp --help项目结构
bbot-mcp/
├── bbot_mcp/ # Main package
│ ├── __init__.py # Package initialization
│ └── server.py # MCP server implementation
├── tests/ # Test suite
├── pyproject.toml # Package configuration
├── README.md # This file
└── requirements.txt # Development dependenciesMCP客户端使用示例
# Connect to the MCP server and use the tools
client = MCPClient("bbot-scanner")
# List available modules
modules = client.call_tool("list_bbot_modules")
# Start a scan
scan_result = client.call_tool("start_bbot_scan", {
"targets": "example.com",
"presets": "web-basic"
})
# Check scan status
status = client.call_tool("get_scan_status", {
"scan_id": scan_result["scan_id"]
})
# Wait for scan to complete
completion = client.call_tool("wait_for_scan_completion", {
"scan_id": scan_result["scan_id"],
"timeout": 300
})
# Get results when complete
results = client.call_tool("get_scan_results", {
"scan_id": scan_result["scan_id"],
"limit": 50
})安全考虑
- 此工具仅用于授权的安全测试
- 始终确保您有扫描目标系统的权限
- 请注意,bbot扫描可能会占用大量资源,并可能需要花费大量时间
- 某些模块可能被视为具有侵入性——请使用
--allow-deadly小心等效标志
依赖管理
MCP服务器包括全面的依赖关系管理,以防止出现sudo密码提示:
自动保护措施
- 默认行为:
no_deps=True-默认情况下禁用依赖关系 - 环境变量:多层sudo防护(sudo_ASKPASS、DEBIAN_FRONTEN等)
- STDIN重定向:阻止所有交互式输入以防止挂起
- 模块排除:有问题的模块(sslcert、trufflehog)会自动排除在外
- 力配置:即使依赖关系失败,模块也会运行
主要特点
- 全面预防Sudo:多个环境变量和配置阻止任何sudo提示
- 故障弱化:即使某些模块无法加载依赖项,扫描也会继续
- 预安装支持:如果需要,请手动安装依赖关系:
pip install - macOS兼容性:Homebrew与APT包管理器冲突的特殊处理
排除的模块
您可以通过设置以下环境变量来排除有问题的模块:
export BBOT_EXCLUDE_MODULES="trufflehog,sslcert"示例排除提到的模块,如果你有任何依赖性问题(即在Mac OS X上):
sslcert:APT依赖关系与macOS Homebrew不兼容trufflehog:依赖关系安装冲突
覆盖选项:设置 no_deps=False 只有当你确定不会出现sudo提示时
有关bbot本身的更多信息,请访问:https://github.com/blacklanternsecurity/bbot
