anpa1200/AuditAI

GitHub: anpa1200/AuditAI

AuditAI 是一个完全运行在 Docker 中的 Linux 主机漏洞评估工具,通过九个并行扫描模块收集系统数据并借助 Claude AI 生成带攻击链分析的优先级漏洞报告。

Stars: 1 | Forks: 1

# AuditAI [![PyPI](https://img.shields.io/pypi/v/1200km-auditai.svg)](https://pypi.org/project/1200km-auditai/) [![Python](https://img.shields.io/pypi/pyversions/1200km-auditai.svg)](https://pypi.org/project/1200km-auditai/) [![CI](https://github.com/anpa1200/AuditAI/actions/workflows/ci.yml/badge.svg)](https://github.com/anpa1200/AuditAI/actions/workflows/ci.yml) [![Publish](https://github.com/anpa1200/AuditAI/actions/workflows/publish.yml/badge.svg)](https://github.com/anpa1200/AuditAI/actions/workflows/publish.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![External submissions](https://img.shields.io/badge/External%20submissions-submitted-yellow)](https://github.com/cckuailong/awesome-gpt-security/pull/48) [![Accepted upstream](https://img.shields.io/badge/Accepted%20upstream-pending-lightgrey)](https://github.com/cckuailong/awesome-gpt-security/pull/48) [![OWASP application](https://img.shields.io/badge/OWASP-application%20draft-blue)](docs/owasp-project-application.md) [![Kali packaging](https://img.shields.io/badge/Kali%20packaging-prepared-blue)](docs/kali-new-tool-request.md) **完全运行在 Docker 内部的 AI 驱动的主机漏洞评估工具。** AuditAI 针对你的 Linux 主机运行九个安全扫描模块,将原始结果发送给 Claude,并生成一份包含攻击链分析的优先级漏洞报告——所有操作仅需一条命令即可完成。 ``` export ANTHROPIC_API_KEY=sk-ant-... ./run.sh ``` ## 工作原理 AuditAI 是一个三阶段的 pipeline: ``` ┌─────────────────────────────────────────────────────────────────┐ │ HOST MACHINE │ │ │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ DOCKER CONTAINER (read-only) │ │ │ │ │ │ │ │ ┌─────────────┐ ┌────────────────┐ ┌────────────┐ │ │ │ │ │ STAGE 1 │ │ STAGE 2 │ │ STAGE 3 │ │ │ │ │ │ 9 Scanner │──▶│ Preprocessor │──▶│ Report │ │ │ │ │ │ Modules │ │ + Claude AI │ │ Generator │ │ │ │ │ │ (parallel) │ │ (sequential) │ │ │ │ │ │ │ └─────────────┘ └────────────────┘ └────────────┘ │ │ │ │ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ │ │ raw_output dicts Finding[] + HTML + .md │ │ │ │ attack chains ./output/ │ │ │ └──────────────────────────────────────────────────────────┘ │ │ │ │ /proc /sys /etc /var /home /usr (mounted read-only) │ └─────────────────────────────────────────────────────────────────┘ ``` **阶段 1 — 扫描:** 九个模块并行运行,收集原始主机数据(进程表、网络状态、文件系统、软件包、内核参数等)。 **阶段 2 — AI 分析:** 预处理器过滤每个模块的原始输出(体积减少 60–90%),然后 Claude 依次分析每个模块,并进行跨模块综合以识别攻击链。 **阶段 3 — 报告:** 扫描结果、攻击链和优先级被渲染为一个独立的 HTML 报告和 Markdown 文件。 容器以**只读**方式挂载主机文件系统,并使用 `--pid=host` + `--network=host` 来查看真实的进程表和网络状态。它**无法修改**主机上的任何内容。 ## 环境要求 - Docker(任何近期版本) - Linux 主机(推荐 Ubuntu/Debian;也支持其他发行版) - [Anthropic API key](https://console.anthropic.com/) — 在 Sonnet 上每次完整扫描费用约 $0.10–0.30 安装好的 `auditai` CLI 可以直接在 Kali/Linux 主机上运行,无需 Docker 或 API key: ``` pip install 1200km-auditai sudo auditai --no-ai --output-dir ./output ``` ## 快速开始 ### PyPI CLI 安装 ``` pip install 1200km-auditai auditai --help sudo auditai --no-ai --output-dir ./output ``` PyPI 发行版命名为 `1200km-auditai`;安装后的命令仍然是 `auditai`。 ### Docker 工作流 **1. 安装 Docker**(如果尚未安装): ``` curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER && newgrp docker ``` **2. 克隆并运行:** ``` git clone https://github.com/anpa1200/AuditAI.git cd AuditAI export ANTHROPIC_API_KEY=sk-ant-... ./run.sh ``` `run.sh` 会构建镜像,准确向你展示它请求的主机访问权限,并在请求确认后,将报告写入 `./output/` 目录。 无需 `pip install`,无需 virtualenv,也无需你进行任何依赖管理——一切都已内置在 Docker 镜像中。 ## Kali Linux 提交 核心包通过 `--no-ai` 在本地运行;Anthropic 分析是可选的。 Debian/Kali 元数据位于 [`debian/`](debian/),并包含一份完整的 [新工具请求草案](docs/kali-new-tool-request.md)。 ## 许可证 [MIT](LICENSE) ## 使用方法 ``` # 全面评估 — 包含全部 9 个模块、AI 分析、所有严重级别 ./run.sh # 跳过 lynis — 更快(约 2 分钟对比约 10 分钟),节省 API 成本 ./run.sh --skip lynis # 仅特定模块 ./run.sh --modules network,users,kernel # 无 AI 分析 — 仅原始 scanner 输出(无 API 调用) ./run.sh --no-ai # 仅显示 HIGH 和 CRITICAL 发现 ./run.sh --severity HIGH # 使用 Claude Opus 进行更深入的攻击链推理 ./run.sh --model claude-opus-4-6 # 详细日志记录(显示 preprocessor 缩减统计信息、AI 耗时) ./run.sh --verbose ``` ### Docker Compose ``` ANTHROPIC_API_KEY=sk-ant-... docker compose run assessment ``` ### 直接 CLI(开发模式 — 无需 Docker) ``` # HOST_ROOT="" 使 scanner 读取真实的 / 而不是 /host HOST_ROOT="" python3 -m assessment.cli --modules kernel,os_hardening --no-ai ``` 在迭代开发扫描器且不想重建镜像时非常有用。 ## 终端效果展示 ``` ► Running 9 scanner modules... Modules: network, services, os_hardening, users, processes, filesystem, kernel, packages, lynis ✓ network 12.3s ✓ services 0.1s ✓ os_hardening 0.0s ✓ users 0.0s ✓ processes 0.2s ✓ filesystem 31.2s ✓ kernel 0.0s ✓ packages 15.5s ✓ lynis 0.0s ► Running AI analysis (Claude)... Analyzing modules... Running synthesis... ► Generating reports... HTML: ./output/report_2026-03-11T09-18-35Z.html Markdown: ./output/report_2026-03-11T09-18-35Z.md ╔══════════════════ SUMMARY ══════════════════╗ Overall Risk: HIGH (67/100) Lynis Hardening Index: 58/100 Findings: 3 Critical 11 High 24 Medium 18 Low Top Action: Disable PasswordAuthentication in /etc/ssh/sshd_config ╚══════════════════════════════════════════════╝ ``` ## 扫描模块 | 模块 | 检查内容 | |--------|---------------| | `network` | 开放端口(nmap SYN 扫描)、绑定到 0.0.0.0 的服务、防火墙规则(iptables/ufw/nftables)、IPv6 暴露情况 | | `services` | Systemd 单元(在 Docker 内通过文件系统回退读取)、失败的服务、cron 任务、docker socket 权限 | | `os_hardening` | 25+ 项 sysctl 参数与安全基线对比、AppArmor/SELinux、GRUB 启动标志、PAM 配置、核心转储 | | `users` | UID 0 账户、sudoers NOPASSWD、SSH 配置弱点、授权密钥、遗留文件(.rhosts) | | `processes` | 进程能力(从十六进制 bitmask 解码)、已删除的可执行文件、反弹 shell 指标、root 进程 | | `filesystem` | SUID/SGID 二进制文件与已知安全基线对比、全局可写的系统文件、敏感文件权限 | | `kernel` | CPU 漏洞缓解措施(Spectre/Meltdown 等)、内核锁定、BPF 限制、已加载模块 | | `packages` | 已安装的软件包与 [OSV.dev](https://osv.dev/) CVE 数据库对比(无需 API key)、危险的过期包、自动更新配置 | | `lynis` | 完整的 lynis 主机审计、强化指数评分(0–100)、警告和建议 | ## AI 分析 对扫描数据执行两轮分析: **第一轮 — 单模块分析:** 在发送给 Claude 之前,每个模块的输出都会经过预处理器,剔除已知安全的基线数据(例如,合规的 sysctl 参数、已知安全的 SUID 二进制文件、没有登录 shell 的服务账户)。这将减少 60–90% 的 prompt 体积,消除 token 限制错误并降低成本。 **第二轮 — 综合:** 单个 prompt 接收所有模块的扫描结果,并被要求识别: - **攻击链** — 扫描结果如何在*你的特定主机*上组合成真实的漏洞利用路径 - **前 10 个优先级** — 根据实际可利用性进行排名,而不仅仅是严重性标签 - **总体风险评级** — CRITICAL / HIGH / MEDIUM / LOW 并附上理由 - **执行摘要** — 面向系统所有者的非技术性描述 ## 报告输出 每次扫描后,会在 `./output/` 目录下生成两个文件: - **`report_.html`** — 独立的深色主题 HTML,包含可筛选的扫描结果表、攻击链卡片和可折叠的模块部分。打开时无需互联网连接。 - **`report_.md`** — Markdown 版本,用于存档、提交工单或纯文本分享。 ### 报告部分 | 部分 | 描述 | |---------|-------------| | 风险徽章 | CRITICAL / HIGH / MEDIUM / LOW 以及 0–100 分的评分 | | 立即行动 | 3–5 项今天必须修复的问题,按优先级排序 | | 攻击链 | 特定于你主机的多步骤漏洞利用场景 | | 前 10 个优先级 | 根据实际可利用性排名的扫描结果 | | 模块部分 | 可折叠,每个部分包含风险评分、证据和修复命令 | | Lynis 附录 | 完整的强化指数和原始 lynis 建议 | ## Docker 参数说明 | 参数 | 为什么需要它 | |------|----------------| | `--pid=host` | 如果没有这个参数,`/proc` 只会显示容器的 PID。需要用它来枚举所有主机进程、读取能力并解析可执行文件路径。 | | `--network=host` | 将容器置于主机的网络命名空间中。nmap 能看到真实的接口和 IP 地址——否则它只能看到容器的虚拟 eth0。 | | `--cap-add=NET_RAW` | nmap SYN 扫描(`-sS`)需要原始 socket 访问权限来构造 TCP 数据包。否则,nmap 会退回到较慢的 TCP connect 扫描。 | | `--cap-add=NET_ADMIN` | 需要用于从容器内部读取 iptables/netfilter 状态。 | | `--cap-add=SYS_PTRACE` | 需要用于跟随 `/proc//exe` 符号链接并读取进程内存映射。 | | `--cap-add=AUDIT_READ` | 允许读取内核审计日志以获取权限提升记录。 | | `-v /:/host:ro` | 以只读方式将整个主机根目录绑定挂载到 `/host`。提供对 `/etc`、`/var`、`/usr`、`/home` 的访问。 | | `-v /proc:/host/proc:ro` | `/proc` 是一个虚拟文件系统,不会被 `/` 挂载所捕获。必须单独挂载。 | | `-v /sys:/host/sys:ro` | 与 `/proc` 相同。包含 CPU 漏洞数据、安全模块状态和内核参数。 | 特意**没有**使用 `--privileged`。容器在正常的 Linux 命名空间边界内运行,无法修改主机内核状态。 ## 错误处理 | 错误 | 行为 | |-------|----------| | 扫描器崩溃(nmap 超时、权限被拒绝) | 在报告中记录错误,继续执行其他模块 | | API 速率限制 (429) | 指数退避:15s → 30s → 60s → 120s,最多重试 4 次 | | API 额度不足 (400) | 立即失败并显示可操作的信息,建议使用 `--no-ai` | | AI 响应中的 JSON 解码错误 | 最多重试 4 次,最终失败时记录空扫描结果 | | 未找到 `systemctl` (Docker) | 回退到从主机文件系统读取 `.service` 文件 | ## 安全提示 - 所有主机挂载均为**只读**。唯一可写的路径是 `./output/`。 - 扫描数据将发送到 Anthropic API 进行 AI 分析。在物理隔离或受监管环境中请使用 `--no-ai`。 - 报告包含详细的主机配置信息——请像对待密码一样对待它们。不要提交到公开仓库。 - 此工具仅供**授权使用**,适用于你拥有或已获得评估权限的系统。 ## 项目结构 ``` AuditAI/ ├── Dockerfile ├── docker-compose.yml ├── run.sh # Host-side launcher with consent prompt ├── requirements.txt └── assessment/ ├── cli.py # Click CLI — entry point, orchestrates all stages ├── config.py # HOST_ROOT paths, sysctl baselines, SUID whitelist ├── models.py # Finding, ModuleResult, AttackChain, Report dataclasses ├── runner.py # Stage 1 — parallel scanner execution ├── scanners/ │ ├── base.py # Abstract BaseScanner with error isolation + timing │ ├── network.py # nmap, ss, iptables, ufw, nftables, IPv6 │ ├── services.py # systemd units (with Docker filesystem fallback) │ ├── os_hardening.py # sysctl, AppArmor, SELinux, GRUB, PAM │ ├── users.py # passwd, shadow, sudoers, SSH keys │ ├── processes.py # /proc enumeration, capability decoding │ ├── filesystem.py # SUID/SGID, world-writable, sensitive perms │ ├── kernel.py # CPU vulns, lockdown, modules │ ├── packages.py # dpkg + OSV.dev CVE API │ └── lynis_wrapper.py # lynis audit + report.dat parser ├── ai/ │ ├── client.py # Anthropic SDK wrapper, retry + billing error handling │ ├── preprocessor.py # Per-module data filter (60–90% size reduction) │ ├── prompts.py # All prompt templates (edit to tune AI quality) │ └── analyzer.py # Stage 2 — sequential module analysis + synthesis └── reports/ ├── html.py # Self-contained dark-theme HTML (no CDN) └── markdown.py # Markdown report generator ``` ## 添加扫描模块 ``` # assessment/scanners/my_module.py from assessment.scanners.base import BaseScanner class MyScanner(BaseScanner): name = "my_module" def _scan(self) -> tuple[dict, list]: result = {} result["data"] = collect_something() return result, [] # AI identifies findings from raw data ``` 在 `assessment/scanners/__init__.py` 中注册: ``` from assessment.scanners.my_module import MyScanner ALL_SCANNERS = { ... "my_module": MyScanner, } ``` AI 分析、预处理器钩子、报告生成和 CLI 集成都是自动完成的。 如果需要为你的模块添加预处理器逻辑,请在 `assessment/ai/preprocessor.py` 中添加一个处理程序: ``` def _process_my_module(raw: dict) -> dict: # Return only the high-signal subset of raw return {"key_finding": raw.get("key_finding")} _HANDLERS["my_module"] = _process_my_module ``` ## 了解更多 完整的架构深入解析、设计决策以及在实际机器上运行时的真实发现: **[构建基于 Docker 的 AI 驱动主机漏洞评估工具](https://medium.com/@1200km/building-a-dockerized-ai-powered-host-vulnerability-assessment-tool-cd6e2147ce59)** ## 许可证 MIT ## 1200km 生态系统 本项目是 1200km 安全研究生态系统的一部分。使用 [AdversaryGraph](https://1200km.com/adversarygraph/) 进行 CTI 到检测的工作流、ATT&CK/ATLAS 映射、攻击者关联分析、IOC 丰富化以及适合分析师查看的报告生成。 - [AdversaryGraph 项目中心](https://1200km.com/adversarygraph/) - [AdversaryGraph 文档](https://1200km.com/adversarygraph-docs/) - [在线 ATT&CK/ATLAS 工作区](https://1200km.com/threat-matrix/) - [1200km 安全研究生态系统](https://1200km.com/)
标签:AES-256, Docker, Python, Web报告查看器, 人工智能, 安全防御评估, 插件系统, 无后门, 无线安全, 漏洞评估, 用户模式Hook绕过, 网络安全审计, 请求拦截, 逆向工具