01rabbit/Azazel-Gadget

GitHub: 01rabbit/Azazel-Gadget

基于树莓派的便携式战术防御网关,通过在终端与不可信Wi-Fi之间插入可控网关来转移网络首次接触面,并提供防御、诱饵和转发三种确定性操作模式。

Stars: 0 | Forks: 0

# AZ-02 Azazel-Gadget - 个人战术防御网关 ![Azazel-Gadget Banner](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/16629f580d151101.png) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/b4bcec891d151111.svg)](https://github.com/01rabbit/Azazel-Gadget/actions/workflows/ci-tests.yml) [![Release](https://img.shields.io/github/v/release/01rabbit/Azazel-Gadget)](https://github.com/01rabbit/Azazel-Gadget/releases) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Docs](https://img.shields.io/badge/docs-index-blue)](docs/INDEX.md) [![Pages](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/877580fbc3151112.svg)](https://github.com/01rabbit/Azazel-Gadget/actions/workflows/pages.yml) ![Platform: Raspberry Pi](https://img.shields.io/badge/Platform-Raspberry%20Pi-C51A4A?logo=raspberry-pi) ![Python](https://img.shields.io/badge/Python-3.x-3776AB?logo=python&logoColor=white) ![Flask](https://img.shields.io/badge/Flask-Web%20UI-000000?logo=flask) ![JavaScript](https://img.shields.io/badge/JavaScript-UI-F7DF1E?logo=javascript&logoColor=black) [![Language: Japanese](https://img.shields.io/badge/Language-日本語-2ea44f)](./README_ja.md) [![Language: English](https://img.shields.io/badge/Language-English-1f6feb)](./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/网关行为。欺骗暴露已关闭。 | ![Portal 模式电子墨水屏示例](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/0a41f4a68c151113.png) | | `shield` (默认) | 默认防御姿态。来自 `wlan0` 的入站流量被丢弃,同时保留受保护客户端的出站路径。 | ![Shield 模式电子墨水屏示例](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/3ed83b3737151114.png) | | `scapegoat` | 仅暴露允许列表中的 OpenCanary 端口。Canary 运行在隔离的命名空间(`az_canary`)中,并与受保护的客户端侧分离。 | ![Scapegoat 模式电子墨水屏示例](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/4a5aca6fef151115.png) | 警告显示(非模式): | 显示 | 触发条件 | 电子墨水屏示例 | |---|---|---| | `WARNING` | 监控管道检测到警报条件。 | ![Warning 电子墨水屏示例](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/d378ca09f0151116.png) | ## 演示流程 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 | |---|---| | [![Azazel-Gadget Web UI 截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/8d8f6dbc60151117.png)](images/WebUI.png) | [![Azazel-Gadget 统一 TUI 截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/55bc63444f151120.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, 个人防火墙, 便携式安全设备, 局域网防御, 战术防御网关, 数据可视化, 旅行安全网关, 无后门, 暴露面管理, 欺骗技术, 流量监控, 网络安全, 蜜罐, 证书利用, 边缘计算安全, 逆向工具, 隐私保护