arpitgupta369/iot-security-scanner
GitHub: arpitgupta369/iot-security-scanner
基于规则引擎的 IoT 设备安全扫描器,通过分析设备描述符清单评估常见配置风险并输出带 CVSS-lite 评分和修复建议的审计报告。
Stars: 0 | Forks: 0
# IoT 安全扫描器
**一个基于规则的 IoT 设备安全扫描器 —— 根据规则数据库评估开放端口、固件、凭据、TLS/cipher 和认证,并输出 CVSS-lite 风险发现及修复建议。**
## 为什么开发这个项目
在 **MeitY / CERT-In 的青年学者实习**期间,我负责威胁识别、遏制、修复和威胁狩猎,我的研究兴趣包括 **IoT 安全**。不安全的 IoT —— 默认凭据、暴露的 Telnet/FTP、未修补的固件、明文管理接口 —— 是攻击者利用的最常见 foothold 之一。此扫描器将防御性检查清单编码为一个可审计的规则引擎:为其提供设备描述符,它就会像漏洞管理工作流那样返回经过优先级排序的、可修复的发现。
它特意设计为一款**描述符驱动**的工具(它基于清单进行推理,而不是进行实时利用),并带有一个可选的、明确限制仅在 localhost 运行的实时端口检查。
## 功能
- **规则数据库**包含八类 IoT 弱点:默认凭据、未认证服务、暴露的 Telnet、过时的固件、明文管理接口、暴露的 FTP、暴露的 UPnP/SSDP 以及弱 TLS/cipher。
- **CVSS-lite 评分** —— 每个发现都带有基础分数和 `CRITICAL / HIGH / MEDIUM / LOW` 级别;设备风险取最高级别的发现。
- 每个发现均包含**证据和修复建议** —— 观察到的问题以及确切的修复方法。
- **固件期限策略** —— 标记早于可配置阈值(默认为 2 年)的固件,基于可重现的参考日期 (`--as-of`)。
- **JSON 或文本输出** —— 通过管道将 `--json` 传入你自己的 pipeline,或阅读排序后的文本报告。
- **可选的安全实时检查** (`--live-check`) —— 仅针对 `127.0.0.1` 进行非侵入式 TCP 连接测试,端口数量有限。它从不联系远程主机。
- **零第三方依赖** —— 纯标准库。
## 技术栈
Python 3 标准库 (`json`, `socket`, `datetime`, `argparse`)。
## 安装
无需安装:
```
python scanner.py --demo
```
## 用法
```
python scanner.py --demo
```
预期输出(节选):
```
======================================================================
IoT SECURITY SCAN REPORT (CVSS-lite) as-of 2026-07-18
======================================================================
devices scanned : 8
total findings : 24 (CRIT 2 / HIGH 17 / MED 5 / LOW 0)
----------------------------------------------------------------------
[CAM-01] Lobby IP Camera (ip_camera) RISK CRITICAL (9.8)
host: 10.0.14.21 findings: 5
* CRITICAL Default credentials in use CVSS 9.8 [IOT-DEFAULT-CREDS]
evidence : Device reports factory/default credentials still in use
remediation: Force a credential change on first boot; disable vendor default accounts; ...
* HIGH Telnet exposed CVSS 7.5 [IOT-TELNET-OPEN]
evidence : Telnet (tcp/23) is open - cleartext remote administration
remediation: Disable Telnet; use SSH (tcp/22) with key auth. Block tcp/23 at the network edge.
...
----------------------------------------------------------------------
[GW-07] IoT Edge Gateway (gateway) RISK NONE (0.0)
host: 10.0.14.5 findings: 0
OK - no rule violations
```
其他模式:
```
python scanner.py --input data/devices.json --json # machine-readable
python scanner.py --as-of 2027-01-01 # stricter firmware age
python scanner.py --live-check # OPT-IN, localhost only
```
## 设备描述符格式
```
{
"id": "CAM-01",
"name": "Lobby IP Camera",
"type": "ip_camera",
"firmware_version": "1.2.0",
"firmware_date": "2019-04-11",
"default_credentials": true,
"open_ports": [{"port": 23, "service": "telnet"}, {"port": 80, "service": "http"}],
"protocols": ["telnet", "http"],
"tls": {"enabled": false, "min_version": null, "cipher": null},
"auth": "basic",
"upnp": true
}
```
## 项目结构
```
iot-security-scanner/
├── scanner.py # rules engine, CVSS-lite scoring, reporting, live check
├── requirements.txt # stdlib-only (no third-party deps)
├── data/
│ └── devices.json # 8 sample device descriptors (varied risk)
├── README.md
├── LICENSE
└── .gitignore
```
## 免责声明
仅限**教育和防御用途**,且仅限于你**获得授权**评估的系统和清单。`--live-check` 选项专门探测 `127.0.0.1`(你自己的机器),不执行任何利用操作。CVSS-lite 评分是用于确定优先级的简化启发式方法,并非官方的 CVSS v3.1 向量评分。请勿使用此工具扫描你不拥有或未获得明确书面测试许可的网络或设备。
由 **Arpit Gupta** 构建 —— [LinkedIn](https://linkedin.com/in/arpit-gupta-060b302a7/) · [GitHub](https://github.com/arpitgupta369)
标签:Python, 关系图谱, 基线检查, 插件系统, 无后门, 物联网安全