26zl/netsec-auditor

GitHub: 26zl/netsec-auditor

一款授权范围内、覆盖 IT/OT/IoT/无线全栈的只读网络安全审计 CLI 工具,支持漏洞优先级排序与多格式报告输出。

Stars: 2 | Forks: 0

NetSec Auditor NetSec Auditor **授权网络 · OT/ICS · Web · 无线安全审计工具** [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/26zl/netsec-auditor/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://www.python.org/)
# NetSec Auditor 一个用于审计整个网络的 CLI 工具 —— 涵盖 IT、云、**OT/ICS**、**IoT** 和 **Wi-Fi/BLE** — 可从笔记本电脑或 **Kali NetHunter** 手机上运行。它支持主机发现、端口与 服务扫描、结合 EPSS + CISA KEV 优先级的漏洞启发式分析、设备 Web 界面检查、只读的 OT/IoT 设备识别、被动的 Wi-Fi/BLE 侦察,以及 wardrive 数据导入 — 并能输出 JSON / HTML / PDF 格式的报告。 ## 功能 - 范围控制的定向扫描(支持 IP、主机名、URL、CIDR 范围),包含允许/排除 规则,以及基于范围的端口白名单和扫描速率限制。 - 异步端口扫描(SYN / connect / UDP),支持服务和 OS 检测,并提供 针对大范围的快速 connect 扫描发现。 - 通过只读协议探测(Modbus、 Siemens S7、EtherNet/IP、BACnet、DNP3、OPC-UA、MQTT、CoAP、UPnP/SSDP、mDNS、 RTSP)进行 **OT/ICS + IoT 设备识别** — 请参阅下方的[安全性](#ot-safety)。 - **企业级服务检查:** SNMP 默认团体字符串(`public`/ `private`),SMB 协议版本 + **SMBv1/EternalBlue** 检测及签名状态, 以及 UDP 放大/反射器暴露检测(NTP monlist、memcached、chargen、SSDP)。 - **被动发现**(GRASSMARLIN 风格的嗅探),不发送任何数据包 — 非常适合脆弱的 OT 网络。 - 漏洞启发式分析以及内置、可定制的签名规则集 (`netsec_auditor/data/vuln-rules.yaml`)、NVD CVE 丰富化,以及**结合 EPSS + CISA KEV 的 CVE 优先级排序**。 - 通过 Shodan InternetDB 进行被动外部暴露查询(不向目标发送数据包)。 - **设备 Web 界面审计** (路由器 / 摄像头 / NAS / 打印机 / PLC / HMI / BMS 面板):安全标头、cookie 标志、TLS 证书分析 (过期 / 自签名 / 主机名不匹配)、**TLS 协议与弱密码套件 扫描**(已弃用的 TLS 1.0/1.1、RC4/3DES)、HTTP 方法、信息泄露。 严格只读 — 仅用于检查设备管理 UI 的安全态势,而非 Web 应用渗透测试。 - JSON / HTML / PDF 报告;`doctor` 环境检查;全局 `--ot-safe` 模式。 ## OT 安全性 OT/ICS 设备非常脆弱 — 激进的扫描可能会扰乱 PLC 或生产过程。 该工具包**默认安全**:环境配置文件(`it` / `ot` / `iot`) 设置了保守的时序,并且当检测到 OT 服务时,互锁机制会自动降级为温和的 OT 配置文件(单线程、延迟、只读)。 所有 OT/IoT 探测均为只读识别;绝不发送写入/控制指令。 ## 系统要求 - Python **3.11+** - 必须安装 **`nmap`** 二进制文件并位于 `PATH` 中(端口扫描是通过 `python-nmap` 封装 nmap 实现的)。 - SYN 扫描(`-sS`,默认)、UDP 扫描、OS 指纹识别、ARP 发现、Wi-Fi 监视模式和被动嗅探需要 **Root/sudo** 权限。对于 无特权扫描,请使用 `--scan-type connect`。 - **核心安装没有系统库依赖。** 可选的额外组件: `[wireless]`(BLE,在 Linux 上需要 BlueZ)和 `[pdf]`(PDF 报告,需要 Pango/HarfBuzz)。JSON 和 HTML 报告在没有它们的情况下也能正常运行。 - 运行 `netsec-auditor doctor` 以查看主机上可用的功能。 ## 平台支持 | 平台 | 支持级别 | 说明 | |---|---|---| | **Linux / Kali NetHunter** | **完全支持** | scapy 原始套接字、Wi-Fi 监视模式、`nmcli`/`iw`、通过 BlueZ 使用 BLE。主要目标平台。 | | **WSL2 (Windows)** | **近乎完全支持** | 真实的 Linux 内核:所有扫描 + pcap 导入均可工作。Wi-Fi 监视模式需要通过 `usbipd-win` 连接的 USB 适配器;BLE 通常不可用;被动 LAN 嗅探需要 Win11 的“镜像”网络(WSL2 默认使用 NAT)。 | | **macOS** | 部分支持 | nmap/web/OT/IoT/BLE 可用;Wi-Fi 通过 `system_profiler` 只读;BLE 返回 UUID(而非 MAC)。 | | **Windows (原生)** | 有限支持 | nmap/web/IP/OT/IoT 扫描可用;scapy 需要 Npcap;无监视模式 / `nmcli`。 | IP 层扫描、漏洞情报、Web/TLS、OT/ICS + IoT 识别和 报告功能均可跨平台使用。完整的无线功能支持需要 Linux/NetHunter(或 带有 USB 适配器的 WSL2)。可选的 `masscan` 可加速特权 `discover --fast` 运行。精选的 nmap **NSE** 检查可通过 `vuln --nse` 使用;运行 `doctor` 以查看可用的运行时功能。 **在仅内置 Wi-Fi/Bluetooth 的普通笔记本电脑上(无外部硬件):** 除了监视模式下的 802.11 捕获外,其他所有功能均可运行。`wifi` 命令 通过 OS 扫描(`nmcli`/`iw`/`system_profiler`)枚举附近的 AP、加密方式、WPS 和邪恶双子 — 无需特权,且直接使用内置适配器。 `ble` 使用内置的 Bluetooth(在 macOS 上需授予 OS Bluetooth 权限)。仅在进行帧级别的被动捕获(客户端跟踪、`passive` 嗅探)时, 才需要外部监视模式适配器。 ## 安装说明 该代码库目前为私有,版本 1.0.0 尚未发布至 PyPI 或 GHCR。因此,下方的源码安装是当前可用的安装 途径(需要代码库访问权限)。 ``` # 从源码 pip install . pip install -e ".[dev]" # for development pipx install . # isolated CLI install pipx install ".[all]" # BLE + PDF extras # 本地 Docker 镜像(内置 nmap) docker build -t netsec-auditor:local . docker run --rm --net=host netsec-auditor:local scan 10.0.0.5 --scan-type connect ``` 在发布工作流发布版本 1.0.0 之后,即可使用包安装器 执行 `pipx install netsec-auditor`(或 `netsec-auditor[all]`)。 `scripts/install.sh` 中的一键安装脚本同样需要该 PyPI 版本。 ``` # Release 安装(在发布版本 1.0.0 之前不可用) pipx install netsec-auditor ``` ## 使用说明 ``` # 端口扫描(无特权 TCP connect scan) netsec-auditor scan 10.0.0.5 --ports common --scan-type connect # 网络范围内的主机发现 netsec-auditor discover 192.168.1.0/24 --method both # 漏洞评估,可选择使用 NVD CVE 数据进行丰富 # 首先在环境中导出 NVD_API_KEY;避免将密钥放置在 shell 历史记录中。 netsec-auditor vuln 10.0.0.5 --cve-check # 设备 web-interface 审计(路由器 / 摄像头 / NAS / PLC / HMI 管理面板) netsec-auditor web https://192.168.1.1 --deep # 完整审计:网络 + 漏洞 + web netsec-auditor full 10.0.0.0/24 --output ./reports # 针对大范围的快速 connect-sweep 发现 netsec-auditor discover 10.0.0.0/16 --fast # 识别 OT/ICS + IoT 设备(只读,自动选择 OT-safe profile) netsec-auditor identify 10.0.0.5 --protocols ot # 优先处理 CVE(EPSS + CISA KEV),或查询 IP 的被动暴露情况 netsec-auditor enrich CVE-2021-44228 CVE-2019-0708 netsec-auditor enrich 203.0.113.10 # 被动盘点 — 嗅探流量,不发送任何内容(需要 root) sudo netsec-auditor passive --seconds 30 --iface eth0 # Wi-Fi 侦察 — AP、加密、WPS、evil-twin 检测(只读) sudo netsec-auditor wifi --iface wlan1mon --duration 20 # BLE 侦察 — 广播 IoT 设备(在 Linux/BlueZ 上无需 root) netsec-auditor ble --duration 10 # 从您的 ESP32/Flipper/Kismet 设备导入 wardriving 数据 netsec-auditor wardrive capture.wigle.csv --output ./reports # 巡视审计 — 发现 + 扫描 + OT/IoT/SNMP + Wi-Fi/BLE → 一份报告 sudo netsec-auditor walk 192.168.1.0/24 --wifi --ble --output ./reports # 在任何地方强制使用温和的 OT-safe profile(脆弱的 ICS 网络) netsec-auditor --ot-safe walk 10.10.0.0/24 # 检查运行时环境(nmap、root、scapy、bleak、Wi-Fi 工具) netsec-auditor doctor # 查询 NVD 以获取 CVE netsec-auditor cve CVE-2021-44228 ``` 全局标志:使用 `-v/--verbose` 进行调试日志记录,使用 `--json-logs` 输出结构化 JSON 日志。 ## NetHunter / 巡检使用 专为在 **Kali NetHunter** 手机上运行而构建,方便网络/安全工程师在巡视 站点时随时进行审计: - **尽可能在无特权模式下运行** — `ble`、`wardrive` 导入、`discover --fast` 和 connect 扫描不需要 root。监视模式 Wi-Fi(`wifi`、`passive`)和 SYN/OS 扫描需要 root,且对于 802.11,需要处于监视模式的外部适配器。 - **感知 OT 的安全互锁** — 包含已注册工业端口 和协议识别的扫描将使用温和的时序、只读探测和一个 worker。在扫描脆弱的 PLC 之前,请确保针对目标环境验证配置文件。 - **硬件设备集成** — 导入来自配套 [gadgets-tools](https://github.com/26zl/gadgets-tools) 项目中 ESP32/Flipper 工具的 **WiGLE CSV (1.4/1.6)、GPX 和 Kismet** 导出文件。 - **仅限只读 / 被动模式** — 仅接收和编目;从不发送 deauth/攻击帧或破解握手。 ### 在 Kali NetHunter 上安装(例如 Galaxy S10) Kali 阻止直接使用 `pip` (PEP 668),因此请在 chroot 内使用 **pipx**: ``` apt install -y nmap pipx bluez # add: fonts-dejavu libpango-1.0-0 libharfbuzz0b (only if you want PDF) pipx install ".[wireless]" # from the source checkout; use [all] for PDF netsec-auditor doctor # confirm what's available ``` - **Wi-Fi 监视模式:** **S10 支持通过 Nexmon 的内部监视模式 + 注入**(`nexutil`/`airmon-ng`),因此并非严格要求使用外部适配器 — 尽管 AR9271/RTL8812AU 适配器更为稳定。需在 chroot 内以 root 身份运行。 - **BLE:** 需要运行 `bluetoothd`;在用户命名空间 chroot 中,请导出 `BLEAK_DBUS_AUTH_UID=`,以便 bleak 能够访问宿主机 D-Bus。 - 在部署之前,请验证特定 aarch64/NetHunter 镜像上的 wheel 和原生库的可用性。 ## 范围文件 范围文件定义了授权目标和排除项。有关完整的 schema,请参阅 [`config/example-scope.yaml`](config/example-scope.yaml)。 ``` netsec-auditor scope create --file my-scope.yaml # interactive netsec-auditor scope validate --file my-scope.yaml --target 10.0.0.5 netsec-auditor scope show --file my-scope.yaml ``` 通过 `--scope my-scope.yaml` 将范围传递给任何扫描。如果未指定,将使用 *ad-hoc* 范围,该范围仅授权命令行上给出的确切目标。 ## 开发说明 ``` pip install -e ".[dev]" pytest # run the test suite ruff check . # lint mypy . # type-check ``` ## 许可证 MIT
标签:Blue Team, OT/ICS安全, Python CLI, 密码管理, 插件系统, 物联网安全, 请求拦截, 逆向工具, 防御绕过