Null-Square/Null-CLi
GitHub: Null-Square/Null-CLi
Null-CLi 是一个 AI 驱动的渗透测试与合规就绪 CLI 工具,通过受限 agent 自动化安全评估、扫描器编排和结构化报告生成。
Stars: 121 | Forks: 1

# Null AI CLI
**由 [NullSquare](https://nullsquare.net) 提供的开源 AI 渗透测试与合规就绪 CLI。**
[](https://github.com/Null-Square/Null-CLi/actions/workflows/ci.yml)
[](LICENSE)
[](package.json)
[](tsconfig.json)
[](sandbox/Dockerfile)
[](src/reports/sarif.ts)
[](https://nullsquare.net)
[文档](#quick-start) | [官网](https://nullsquare.net) | [CLI](docs/cli.md) | [合规](docs/compliance.md)
一个用于授权测试的受限终端 agent:安全侦察、扫描器编排、有据可查的发现结果、Markdown/SARIF 报告,以及轻量级的合规就绪映射。
**覆盖范围:** OWASP Top 10 | PCI DSS lite | ISO 27001 lite | NIST CSF lite

## 为什么选择 Null AI CLI
现代团队需要比传统渗透测试更快、比原始扫描器输出更有用的安全反馈。Null AI CLI 就是这个开源层:一个用于本地评估、扫描器标准化、证据捕获、报告和就绪映射的可重现命令行框架。
它被特意与 NullSquare 托管平台分开。这个公开仓库本身就很有用,同时将托管平台的内部组件排除在外。如需托管沙箱、团队工作流、仪表板、持续测试和企业报告,请访问 **[nullsquare.net](https://nullsquare.net)**。
## 安装
```
# 使用 npx 立即运行(无需安装)
npx @nullsquare/null-cli --help
# 或全局安装
npm install -g @nullsquare/null-cli
null-ai --help
# 或使用一键安装程序(检查 Node >= 20,并全局安装)
curl -fsSL https://raw.githubusercontent.com/Null-Square/Null-CLi/main/scripts/install.sh | bash
```
从源码构建
```
git clone https://github.com/Null-Square/Null-CLi.git
cd Null-CLi
npm install
npm run build
node dist/cli/index.js --help
```
安装后的二进制文件:`null-ai`、`null-cli`、`null`、`nullsquare`(所有完全相同)。
## 快速开始
```
# 打开引导式主屏幕
null-ai
# 或针对您已授权测试的实验室运行 demo 流程
null-ai demo --target http://localhost:3000 --authorize --out .null/demo
```
演示流程专为用户自己的 OWASP Juice Shop、WebGoat 或同等的培训实验室设计。除非你通过 `--authorize` 授权,否则它会拒绝连接实际目标,同时编写完整的本地报告,并保持公开 agent 的操作尽量轻量且以证据为先。
```
null-ai run show .null/demo
null-ai run open .null/demo
```
访问 **[nullsquare.net](https://nullsquare.net)**,利用托管基础设施、仪表板、团队证据审查和企业报告来扩展相同的工作流。
首次启动会创建一个可重用的模型配置。随后的启动会打开主页,其中渗透测试、合规就绪、实验室演示、已保存的评估、结果、模型设置和高级命令都是独立的选项。API 密钥会加密存储在本地用户凭证库中,且绝不会写入到评估会话中。
用于自动化或离线规划:
```
null-ai agent run --target https://example.com --dry-run --out .null/example
```
## 交互模式
运行不带任何参数的 `null-ai` 以打开主要的**引导式、持久化
评估**。
仅在首次启动时,Null AI 会创建一个模型配置:
```
null-ai
First-time model setup
? Provider OpenAI / DeepSeek / Anthropic / GLM / Moonshot / Qwen
? Profile name default
? Use custom API endpoint? No
? API key ********
42 models discovered
? Model family OpenAI
? Model gpt-5-mini
```
在输入掩码处理时,API 密钥提示依然可见。该密钥会加密存储在
本地凭证库中。可用模型是从 provider 中发现的;
通过 family 和可搜索的模型选择器来替代手动输入模型名称。支持的 profile provider 包括 OpenAI、DeepSeek、Anthropic、GLM、Moonshot 和 Qwen。之后可以使用 `/profile` 更改配置。
随后的启动会打开一个以任务为中心的主屏幕,而不是强制使用向导:
```
? Home
❯ New pentest
Compliance readiness
Resume saved assessment
Authorized lab demo
Results and reports
Model settings
Advanced commands
```
渗透测试只询问渗透测试所需的输入。系统会自动生成安全的范围;详细的排除项仍然是可选的:
```
New pentest
? Target(s) https://app.example
? Assessment goal Test the authorized staging application
Scope & authorization
default scope Authorized testing for app.example; destructive testing excluded
? Customize scope? No
Run policy
? Assessment depth Standard
? Enable local scanners? No
? Confirm authorization Yes
? Start assessment now? Yes
```
合规就绪遵循不同的路径:目标、就绪目标、框架、证据审查深度、可选的扫描器证据以及授权。渗透测试不需要询问合规框架或生成合规映射。在需要时,高级范围详细信息可以捕获排除项、授权参考、测试窗口和速率限制。
在实际运行期间,终端会显示规划、发现、扫描、分析和报告阶段,以及随其发生的结构化 agent 旁白(`agent ...`)、工具调用和 artifact 路径。相同的记录也会保存在报告的 **Agent 活动** 部分。在设置或运行之后,可搜索的命令启动器支持 `/` 过滤、方向键导航、描述查看以及回车键选择。CLI 还会定期检查 npm,并在存在更新版本时显示一行升级命令。
| 命令 | 用途 |
|---------|---------|
| `/wizard` | 运行从设置到评估的引导流程 |
| `/profile setup\|list\|use\|delete` | 管理已保存的模型配置 |
| `/workflow pentest\|compliance` | 选择评估工作流 |
| `/depth quick\|standard\|deep` | 选择扫描深度 |
| `/target
` / `/targets [clear]` | 管理范围(可重复使用) |
| `/scope ` / `/authorize` | 设置范围摘要并确认授权 |
| `/framework` / `/shell on\|off` / `/stream on\|off` | 配置运行 |
| `/env model\|key\|base ` | 临时按进程覆盖模型 |
| `/run` / `/findings` / `/report` / `/compliance` / `/open report` | 运行并审查 |
| `/status` / `/help` / `/exit` | 会话控制(配置在会话之间保存) |
实际/扫描器运行**受授权控制**。Profile 元数据和加密的凭证存储在 `~/.null-ai`(或在 Windows 上为 `%USERPROFILE%\.null-ai`)下;`session.json` 从不存储 API 密钥。
## 核心功能
- **从演示到报告的流程** - `null-ai demo` 将授权的实验室目标转换为可追溯的运行过程以及 Markdown/SARIF 报告。
- **引导式交互会话** - 一次性的模型引导、以任务为中心的主屏幕、独立的渗透测试/合规流程、可搜索的命令以及报告打开功能。
- **受限的单 agent 循环** - 每次回合执行一个安全操作,严格的范围边界,以证据为先的报告。
- **扫描模式** - `--scan-mode quick | standard | deep` 权衡速度与覆盖范围。
- **多目标** - 重复使用 `--target` 以在一条命令中评估多个资产。
- **实时终端用户体验** - 带有实时 agent 旁白、工具、artifact 和发现结果输出的 NullSquare 品牌面板。
- **扫描器接入** - 将 `nuclei`、`semgrep` 和 `trivy` 的 JSON/JSONL 标准化为统一的发现结果。
- **面向工程师的输出** - 用于代码扫描 / CI 的 Markdown 报告和 SARIF。
- **合规就绪** - 将发现结果映射到 `owasp-top10`、`pci-dss-lite`、`iso27001-lite`、`nist-csf-lite`。
- **Docker 沙箱** - 通过工具链冒烟测试提供可重现的扫描器运行时。
- **公开技能包** - 用于扫描模式、工具、漏洞类别和合规的 Markdown 技能。
## 工具包
| 工具 | 用途 |
|------|---------|
| `http_request` | 安全的 HTTP 捕获与 endpoint 检查 |
| `browser_action` | 用于表面映射的类浏览器页面捕获 |
| `scanner_run` | 编排扫描器(受 `--allow-shell` 控制) |
| `attach_evidence` | 将原始 artifact 附加到评估中 |
| `report_finding` | 起草有证据支持的发现结果,包含严重性、CWE、OWASP、CVSS |
| `map_compliance` | 将发现结果映射到就绪框架(仅限合规工作流) |
| `file_read` | 读取范围内的本地目标源代码 |
## 漏洞覆盖范围
| 类别 | 示例 |
|----------|----------|
| 访问控制 | IDOR、缺少授权、绕过身份验证 |
| 配置错误 | 缺失安全标头、冗长的 banners、暴露的服务 |
| 客户端 | 反射型 / 存储型 XSS |
| 传输与会话 | 缺失 HSTS、不安全的 cookies |
| 信息泄露 | 敏感数据 / 错误信息泄露 |
## 扫描模式
| 模式 | 模型指导 | 适用场景 |
|------|----------------|----------|
| `quick` | 聚焦、保守的覆盖范围 | 对单个目标进行快速受限审查 |
| `standard` | 平衡且可重现的覆盖范围 | 默认的开源评估 |
| `deep` | 更广泛的证据和合规覆盖范围 | 更彻底的授权审查 |
每种模式都由公开技能(`null-ai skills show scan-mode-deep`)支持,用于塑造模型的计划。模式不会改变循环限制:模型通过明确的最终响应退出,并设有一个全局 300 回合的安全上限。当接近该上限时会出现预算警告,如果达到上限,总是会保存一份不完整的非决定性报告。仅当你有意想要设置更低的上限时,才使用 `--max-steps `。
## 输出
每次评估都会生成确定性的本地 artifact:
```
.null/example/
run-state.json # full assessment state
findings.json # normalized findings
findings.sarif # SARIF 2.1.0 for CI / code scanning
reports/report.md # human-readable report
artifacts/ # captured evidence
```
随时审查现有的工作区:
```
null-ai run show .null/example
null-ai run open .null/example
```
## 扫描器接入与报告
```
# 将 scanner 输出标准化为 Null AI findings
null-ai ingest artifacts/scans --out findings.json
# 将来自 demo workspace 的 artifacts 标准化
null-ai ingest .null/demo/artifacts/scans --out .null/demo/findings-from-scanners.json
# 生成报告 + SARIF
null-ai report generate findings.json --out report.md --sarif findings.sarif --framework iso27001-lite
# 将 findings 映射到 compliance-readiness controls
null-ai compliance map findings.json --framework pci-dss-lite --out pci-readiness.json
```
合规输出是就绪支持,**而非**认证、证明或法律建议。
## 沙箱运行时
```
docker build -f sandbox/Dockerfile -t null-cli-sandbox:dev .
docker run --rm -v "$PWD/sandbox:/opt/null-cli/sandbox:ro" null-cli-sandbox:dev \
sh /opt/null-cli/sandbox/smoke.sh /opt/null-cli/sandbox/tools-manifest.json
```
涵盖 `httpx`、`nuclei`、`katana`、`nmap`、`semgrep`、`trivy`、`gitleaks`、`curl`、`jq` 和 `node`。
## CI 用法
```
- name: Null AI CLI dry assessment
run: |
npm ci && npm run build
node dist/cli/index.js agent run --target https://example.com --dry-run --out .null/ci
```
无头模式退出代码:`0` 完成且无发现,`2` 完成但有发现,`3` 非决定性,`1` CLI/运行时失败。
对于实际评估,请提供 `NULL_AI_API_KEY` 并确保目标仅限于你获得授权测试的系统。
## 公开边界
此仓库提供 **开源框架层**:CLI + 品牌终端、受限的公开 agent 循环、扫描器运行时检查、artifact 接入、以证据为支撑的发现结果、报告/SARIF、轻量级的合规映射、公开技能包、演示流程和本地追踪查看器。
它**不**包括 NullSquare 托管平台的内部组件、客户 artifact、非公开的启发式算法、多 agent 编排、跨运行记忆、托管服务逻辑或企业自动化。请参阅 [docs/public-boundary.md](docs/public-boundary.md)。
## NullSquare 平台
Null AI CLI 是开源的入口点。**[NullSquare](https://nullsquare.net)** 是为需要托管评估、托管基础设施、协作、仪表板、证据审查、合规工作流和企业报告的团队提供的托管平台。
## 安全性
仅在你拥有或获得明确测试许可的系统上使用 Null AI CLI。保留书面授权,在扫描前界定范围,切勿将其用于破坏性活动或凭证攻击。
## 文档
- [演示](docs/demo.md) | [架构](docs/architecture.md) | [CLI 参考](docs/cli.md) | [扫描模式](docs/scan-modes.md) | [合规](docs/compliance.md) | [公开边界](docs/public-boundary.md)
## 贡献
非常欢迎保持公开边界完整的贡献:新的扫描器解析器、公开技能、报告改进和测试。请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 和 [SECURITY.md](SECURITY.md)。
## 许可证
[Apache-2.0](LICENSE)。标签:AI安全测试, CISA项目, Docker, LNA, MITM代理, TypeScript, 安全合规, 安全插件, 安全防御评估, 实时处理, 密码管理, 网络代理, 自动化攻击, 请求拦截