01rabbit/Azazel-Gadget
GitHub: 01rabbit/Azazel-Gadget
基于树莓派的便携式战术防御网关,通过在终端与不可信Wi-Fi之间插入可控网关来转移网络首次接触面,并提供防御、诱饵和转发三种确定性操作模式。
Stars: 0 | Forks: 0
# AZ-02 Azazel-Gadget - 个人战术防御网关

[](https://github.com/01rabbit/Azazel-Gadget/actions/workflows/ci-tests.yml)
[](https://github.com/01rabbit/Azazel-Gadget/releases)
[](LICENSE)
[](docs/INDEX.md)
[](https://github.com/01rabbit/Azazel-Gadget/actions/workflows/pages.yml)




[](./README_ja.md)
[](./README.md)
Azazel-Gadget 是 Azazel 系统的 AZ-02 便携式成员,是一款面向不可信 Wi-Fi、敌意本地网段和现场应用的个人战术防御网关与网络替罪羊网关。它位于用户终端与周围网络之间,观察早期网络行为,通过确定性模式(`portal`、`shield`、`scapegoat`)控制暴露面,并通过 Web UI、TUI、电子墨水屏和可选的本地通知为操作员提供可见的状态。
Azazel-Gadget 将首次接触面从用户终端转移开来。
Azazel-Gadget 不是 VPN,不是通用旅行路由器,也不是对完全阻止攻击的承诺。
**目标用户:** 安全研究人员、现场防御者、旅行者、应急响应人员、红队/蓝队操作员,以及需要用于低信任网络的便携式防御网关的用户。
## 为什么会存在这个项目
- 公共 Wi-Fi 和敌意的本地网段会将终端暴露于本地发现、探测和机会性攻击尝试之中。
- VPN 可以保护流量路径,但不能消除终端的本地首次接触面。
- 终端防火墙运行在终端本身之上。
- 旅行路由器提供连接性,但并非作为可观察的战术欺骗网关而设计。
- Azazel-Gadget 在终端前方放置了一个受控网关和可选的替罪羊暴露面。
## 系统要求
| 要求 | 详情 |
|---|---|
| 硬件 | Raspberry Pi Zero 2 W / Raspberry Pi 4 级别设备 |
| 操作系统 | Raspberry Pi OS / Linux |
| 运行环境 | Python 3.x,基于 Flask 的本地 Web UI |
| 网络 | `usb0` 受保护的客户端侧和 `wlan0` 上游侧 |
| 可选 | 电子墨水屏,OpenCanary,Suricata,ntfy,门户查看器 |
## 快速开始
```
sudo ./install.sh --all
# 如果提示重启:
sudo ./install.sh --resume
```
最小化验证:
```
sudo systemctl status azazel-mode azazel-first-minute azazel-control-daemon azazel-web --no-pager
```
## 架构概览
```
flowchart LR
U[Protected Endpoint] --> G[Azazel-Gadget Gateway]
G --> M[Mode Controller]
M --> P[Portal]
M --> S[Shield]
M --> D[Scapegoat]
G --> O[Operator Interfaces]
O --> W[Web UI]
O --> T[TUI]
O --> E[E-paper]
D --> C[OpenCanary / Deception]
G --> A[Audit and State Files]
```
## Azazel-Gadget 的功能
- 作为便携式防御网关运行。
- 提供确定性的操作模式。
- 保持受保护的 `usb0` 客户端与上游入站流量隔离。
- 支持 Web UI、TUI 和电子墨水屏可见性。
- 可选通过 OpenCanary 暴露隔离的欺骗服务。
- 可选在已实现的地方反映 Suricata/OpenCanary/ntfy 状态。
- 记录状态和模式变更以供操作员审查。
## 安全边界总结
Azazel-Gadget 声明:
- 本地优先的防御网关行为
- 操作员明确可选的模式
- 没有从上游 `wlan0` 到受保护 `usb0` 客户端的入站路径
- 带有审计可见状态的确定性模式切换
- 可选与受保护客户端侧隔离的欺骗暴露
Azazel-Gadget 不声明:
- 完全防御所有恶意 Wi-Fi 攻击
- 替代终端安全、VPN 或企业 NAC
- 自主攻击性响应
- 隐形或零交互安全
- 在不了解活动模式的情况下安全使用
## 操作模式
| 模式 | 行为 | 电子墨水屏示例 |
|---|---|---|
| `portal` | 受保护的 `usb0` 客户端通过上游网络的 NAT/网关行为。欺骗暴露已关闭。 |  |
| `shield` (默认) | 默认防御姿态。来自 `wlan0` 的入站流量被丢弃,同时保留受保护客户端的出站路径。 |  |
| `scapegoat` | 仅暴露允许列表中的 OpenCanary 端口。Canary 运行在隔离的命名空间(`az_canary`)中,并与受保护的客户端侧分离。 |  |
警告显示(非模式):
| 显示 | 触发条件 | 电子墨水屏示例 |
|---|---|---|
| `WARNING` | 监控管道检测到警报条件。 |  |
## 演示流程
1. 受保护的终端通过 Azazel-Gadget 连接。
2. Azazel-Gadget 加入不可信的 Wi-Fi 或敌意的本地网段。
3. 对等端执行发现或服务探测。
4. 在 `shield` 模式下,上游入站暴露被阻断。
5. 在 `scapegoat` 模式下,仅暴露允许列表中的诱饵服务。
6. 操作员可见状态通过 Web UI、TUI、电子墨水屏和可选的通知路径显示。
详细简介:[Black Hat USA Arsenal 简介](docs/demo/blackhat-usa-arsenal-profile.md)
## 界面
| Web UI | 统一 TUI |
|---|---|
| [](images/WebUI.png) | [](images/TUI.png) |
- Web UI 后端和仪表板:`azazel_web/`
- 统一 TUI 监控/菜单:`py/azazel_gadget/cli_unified.py`
- 菜单兼容启动器:`py/azazel_menu.py`
- 终端状态面板:`py/azazel_status.py`
- 电子墨水屏渲染器/控制器:`py/azazel_epd.py`、`py/boot_splash_epd.py`
## 安装选项
主入口点:`install.sh`
| 选项 | 效果 |
|---|---|
| `--with-canary` | 安装/启用 OpenCanary |
| `--with-epd` | 启用 Waveshare 电子墨水屏依赖(默认启用) |
| `--with-webui` | 安装 Flask venv + Caddy HTTPS 反向代理 |
| `--with-ntfy` | 安装本地 ntfy 服务器和通知集成 |
| `--with-portal-viewer` | 安装 noVNC/Chromium 强制门户查看器栈 |
| `--all` | 启用上述所有可选功能 |
| `--resume` | 在需要重启的网络阶段之后恢复 |
## Web API
| 端点 | 说明 |
|---|---|
| `GET /` | 仪表板 HTML |
| `GET /api/state` | 当前状态快照 |
| `GET /api/state/stream` | SSE 状态流 |
| `GET /api/mode` | 当前模式元数据 |
| `POST /api/mode` | 切换模式(`portal`/`shield`/`scapegoat`) |
| `GET /api/portal-viewer` | noVNC 状态/URL |
| `POST /api/portal-viewer/open` | 启动/打开门户查看器 |
| `GET /api/events/stream` | ntfy 主题事件的 SSE 桥接 |
| `POST /api/action` | 动作端点(v1 格式) |
| `POST /api/action/` | 动作端点(旧版格式) |
| `GET /api/wifi/scan` | Wi-Fi 扫描 |
| `POST /api/wifi/connect` | Wi-Fi 连接 |
| `GET /api/certs/azazel-webui-local-ca/meta` | 本地 CA 元数据 |
| `GET /api/certs/azazel-webui-local-ca.crt` | 本地 CA 下载 |
| `GET /health` | 后端健康状态 |
允许的动作:
`refresh`、`reprobe`、`contain`、`release`、`details`、`stage_open`、`disconnect`、`wifi_scan`、`wifi_connect`、`portal_viewer_open`、`mode_set`、`mode_status`、`mode_get`、`mode_portal`、`mode_shield`、`mode_scapegoat`、`shutdown`、`reboot`
Token 认证:
- Header:`X-AZAZEL-TOKEN` 或 `X-Auth-Token`
- Query:`?token=...`
## 文档导航
主要入口点:
- [文档索引](docs/INDEX.md)
- [个人网络替罪羊网关](docs/concepts/personal-cyber-scapegoat-gateway.md)
- [首次接触面转移](docs/concepts/first-contact-surface-relocation.md)
- [Azazel 系统产品图](docs/concepts/azazel-system-product-map.md)
- [Black Hat USA Arsenal 简介](docs/demo/blackhat-usa-arsenal-profile.md)
- [演示证据清单](docs/demo/evidence-checklist.md)
- [系列定位与术语](docs/SERIES_POSITIONING_AND_TERMS.md)
- [安全声明策略](docs/SECURITY_CLAIM_POLICY.md)
- [安装程序指南](installer/README.md)
- [发布流程](docs/RELEASE_PROCESS.md)
- [发行说明模板](docs/RELEASE_NOTES_TEMPLATE.md)
- [更新日志](docs/CHANGELOG.md)
## 仓库布局
| 路径 | 职责 |
|---|---|
| `py/azazel_gadget/` | 控制器、传感器、策略引擎、路径模式 |
| `py/azazel_control/` | 控制守护进程、Wi-Fi 处理程序、动作脚本 |
| `azazel_web/` | Flask 后端和仪表板资产 |
| `systemd/` | Service 和 timer 单元 |
| `installer/` | 分阶段安装程序框架 |
| `configs/` | 默认运行时配置 |
| `scripts/` | 运行时辅助脚本和测试脚本 |
| `docs/` | 项目文档和演示资产 |
| `images/` | README 和文档图像资产 |
## 许可证
本项目基于 MIT 许可证授权。详见 [LICENSE](LICENSE)。
标签:CMS安全, Flask, GitHub, JavaScript, Metaprompt, MIT开源, Python, TCP SYN 扫描, TUI, Web UI, Wi-Fi安全, WSL, 个人防火墙, 便携式安全设备, 局域网防御, 战术防御网关, 数据可视化, 旅行安全网关, 无后门, 暴露面管理, 欺骗技术, 流量监控, 网络安全, 蜜罐, 证书利用, 边缘计算安全, 逆向工具, 隐私保护