7a6163/bjorn-rs

GitHub: 7a6163/bjorn-rs

基于Rust重写的树莓派自主网络安全评估工具,集成LLM智能决策、14种协议暴力破解和e-Paper实时显示,实现从网络扫描到数据窃取的全流程自动化。

Stars: 0 | Forks: 0

# Bjorn (Rust 版) ![Rust](https://img.shields.io/badge/Rust-000000?logo=rust&logoColor=fff) ![Status](https://img.shields.io/badge/Status-Alpha-blue.svg) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) Bjorn 的 Rust 重写版 — 一款专为 Raspberry Pi + 2.13" e-Paper HAT 设计的自主网络扫描、漏洞评估和主动安全工具。 ## 为什么选择 Rust? | | Python 版本 | Rust 版本 | |---|---|---| | 部署大小 | ~100MB (runtime + deps) | **~9MB** (单文件) | | 启动时间 | ~10-15 秒 | **< 3 秒** | | 内存占用 | ~100MB+ (pandas, etc.) | **< 50MB** | | 并发模型 | threading + GIL | tokio async | | 数据库 | CSV (无并发保护) | SQLite WAL (ACID) | | 部署方式 | pip install + 大量依赖 | scp 单个文件 | | 动作模块 | 12 | **27** (+PostgreSQL, MongoDB, Redis, SNMP, VNC, MQTT, HTTP) | ## 功能 - **网络扫描** — nmap 主机发现 + async TCP 端口扫描 - **漏洞评估** — nmap + vulners.nse 脚本 - **暴力破解** — 14 个协议连接器 (参见 [攻击模块](#attack-modules)) - **数据窃取** — 暴力破解成功后触发的 13 个数据窃取模块 - **LLM 集成** — 带有智能体工具调用 (agentic tool-calling) 的 Ollama / Anthropic / OpenAI 级联 - **哨兵监控** — 检测新设备、ARP 欺骗、端口变更 (不产生额外流量) - **e-Paper 显示** — Waveshare 2.13" V4,实时拓麻歌子 (Tamagotchi) 风格 UI - **Web 界面** — 端口 8000,配置管理,实时监控,战利品查看器 - **无头模式** — 无需 e-Paper 运行 (仅输出 PNG 供 Web UI 使用) ## 攻击模块 ### 暴力破解 (14 个模块) | 模块 | 端口 | 协议 | 实现方式 | |--------|------|----------|----------------| | SSHBruteforce | 22 | SSH | russh (纯 Rust) | | FTPBruteforce | 21 | FTP | suppaftp (纯 Rust) | | TelnetBruteforce | 23 | Telnet | raw TCP (纯 Rust) | | SQLBruteforce | 3306 | MySQL | mysql CLI | | PostgresBruteforce | 5432 | PostgreSQL | psql CLI | | MongoBruteforce | 27017 | MongoDB | mongosh CLI | | RedisBruteforce | 6379 | Redis | raw TCP RESP (纯 Rust) | | SMBBruteforce | 445 | SMB | smbclient CLI | | RDPBruteforce | 3389 | RDP | xfreerdp CLI | | SNMPBruteforce | 161 | SNMP v2c | raw UDP (纯 Rust) | | VNCBruteforce | 5900 | VNC/RFB | raw TCP + DES (纯 Rust) | | MQTTBruteforce | 1883 | MQTT | raw TCP (纯 Rust) | | HTTPBruteforce | 80 | HTTP Basic | raw TCP (纯 Rust) | | HTTPBruteforce8080 | 8080 | HTTP Basic | raw TCP (纯 Rust) | 所有模块均使用通用的 `BruteForceAction` 框架 — 每个连接器只需实现一个 `try_connect()` 方法。 ### 数据窃取 (13 个模块) | 模块 | 触发条件 | 方法 | |--------|---------|--------| | StealFilesSSH | SSHBruteforce | sshpass + scp | | StealFilesFTP | FTPBruteforce | wget recursive | | StealFilesTelnet | TelnetBruteforce | remote find via shell | | StealDataSQL | SQLBruteforce | mysql CLI table dump | | StealDataPostgres | PostgresBruteforce | psql COPY to CSV | | StealDataMongo | MongoBruteforce | mongodump | | StealDataRedis | RedisBruteforce | redis-cli --rdb / KEYS dump | | StealFilesSMB | SMBBruteforce | smbget | | StealFilesRDP | RDPBruteforce | xfreerdp drive mapping | | StealDataSNMP | SNMPBruteforce | snmpwalk (system, interfaces, ARP, routes) | | StealDataMQTT | MQTTBruteforce | mosquitto_sub (subscribe to all topics) | | StealDataHTTP | HTTPBruteforce | scrape authenticated admin pages | | StealDataHTTP8080 | HTTPBruteforce8080 | scrape authenticated admin pages | 窃取模块作为子动作 — 它们只在其父级暴力破解模块成功后运行。 ## 支持的硬件 | 开发板 | 架构 | 发布二进制文件 | |-------|-------------|----------------| | Pi Zero W2 | AArch64 (64-bit) | `bjorn-aarch64` | | Pi 3/4/5 | AArch64 (64-bit) | `bjorn-aarch64` | | Pi Zero W | ARMv6 (32-bit) | `bjorn-armv6` | ## 快速开始 ### 前置条件 - 安装有 Raspberry Pi OS (Bookworm) 的 Raspberry Pi - 用户名和主机名设置为 `bjorn` - 连接到 GPIO 的 2.13" Waveshare e-Paper HAT (V4) - 已配置 WiFi ### 在 Pi 上安装 ``` # 从 release 下载二进制文件(或从源码构建,见下文) scp bjorn-aarch64 bjorn@:/home/bjorn/bjorn scp -r deploy/ bjorn@:/home/bjorn/deploy/ # SSH 登录到 Pi ssh bjorn@ chmod +x /home/bjorn/bjorn sudo /home/bjorn/deploy/install.sh # 开始 sudo systemctl start bjorn.service ``` ### 手动运行 ``` sudo BJORN_ROOT=/home/bjorn/Bjorn RUST_LOG=bjorn=debug /home/bjorn/bjorn ``` ### 服务控制 ``` sudo systemctl start bjorn.service # Start sudo systemctl stop bjorn.service # Stop sudo systemctl status bjorn.service # Status sudo journalctl -u bjorn.service -f # Live logs ``` ### Web UI 在浏览器中打开 `http://:8000`。 ## 从源码构建 ### 主机构建 (用于开发) ``` cargo build --release cargo test ``` ### 为 Pi 交叉编译 (通过 Docker) ``` # Pi Zero W2 / Pi 3/4/5 (AArch64) docker build --platform linux/amd64 -f Dockerfile.build -t bjorn-build . docker create --name tmp bjorn-build sh docker cp tmp:/bjorn dist/bjorn-aarch64 docker rm tmp ``` 或者使用 `cross` (需要已通过 `rustup` 安装的 Rust): ``` cargo install cross cross build --release --target aarch64-unknown-linux-gnu ``` ## 架构 ``` src/ ├── main.rs # tokio runtime, 3 async tasks, graceful shutdown ├── config/ # BjornConfig (serde) + PathConfig ├── state/ # AppState (ArcSwap + RwLock) + SQLite KB ├── actions/ │ ├── scanning.rs # nmap -sn + async TCP port scan │ ├── vuln_scanner.rs # nmap --script vulners.nse │ ├── brute_force/ # Generic framework + 14 protocol connectors │ │ └── mod.rs # BruteForceAction │ └── exfiltrate/ # 13 data theft modules (child actions) ├── orchestrator/ # Main loop, action scheduling, retry logic ├── llm/ │ ├── bridge.rs # LLM backend cascade (Ollama → API → fallback) │ ├── orchestrator.rs # LLM decision modes (none/advisor/autonomous) │ └── tools.rs # 7 LLM tools (get_hosts, run_action, etc.) ├── sentinel/ # Network watchdog (new devices, ARP spoof, port changes) ├── display/ │ ├── epd_v4.rs # Waveshare 2.13" V4 SPI driver (rppal) │ └── renderer.rs # UI rendering (imageproc + ab_glyph) └── web/ ├── server.rs # Axum (port 8000, gzip, static files) └── handlers.rs # 30+ API endpoints ``` ### 工作原理 1. **启动** — 加载配置,打开 SQLite KB,启动 3 个异步任务 2. **网络扫描** — `nmap -sn` 发现主机 -> async TCP 端口扫描 -> 写入 KB 3. **编排器循环** — 遍历存活主机 -> 端口匹配 -> 父级依赖检查 -> 重试延迟 -> 执行动作 4. **暴力破解** — 加载字典 -> 并发尝试所有凭证组合 -> 将成功的凭证写入表 5. **数据窃取** — 使用破解的凭证进行连接 -> 搜索/下载目标文件 6. **显示** — 每秒渲染一次 UI -> 通过 SPI 发送到 e-Paper -> 同时保存 PNG 供 Web UI 使用 7. **Web 服务器** — Axum 提供实时监控、配置管理、战利品查看功能 ### 知识库 (SQLite) 取代了 Python 版本的 CSV 文件,提供了 ACID 事务和并发安全性: | 表 | 用途 | |-------|---------| | `hosts` | 发现的主机 (MAC, IP, 主机名, 端口, 存活状态) | | `action_results` | 每次动作执行的结果 (成功/失败 + 时间戳) | | `credentials` | 破解的凭证 (自动去重) | | `vulnerabilities` | 发现的漏洞 (CVE, 严重程度) | ## 配置 配置文件位于 `$BJORN_ROOT/config/shared_config.json`,也可通过 Web UI 进行修改。 主要设置: | 设置 | 默认值 | 描述 | |---------|---------|-------------| | `manual_mode` | `false` | 手动模式 (暂停自动扫描) | | `scan_interval` | `180` | 扫描间隔 (秒) | | `scan_vuln_running` | `false` | 是否启用漏洞扫描 | | `retry_failed_actions` | `true` | 是否重试失败的动作 | | `failed_retry_delay` | `600` | 失败重试延迟 (秒) | | `portlist` | 44 个端口 | 要扫描的端口列表 | | `epd_type` | `epd2in13_V4` | e-Paper 显示型号 | ## 系统依赖 安装脚本 (`deploy/install.sh`) 会自动安装这些依赖,也可手动安装: ``` sudo apt-get install -y nmap smbclient sshpass wget zip \ redis-tools mysql-client postgresql-client xfreerdp2-x11 \ snmp mosquitto-clients network-manager ``` ## 更新日志 查看 [CHANGELOG.md](CHANGELOG.md) 获取详细的发布说明。 ## 免责声明 本项目仅限于**教育目的**和**授权安全测试**。严禁将其用于恶意活动,违者可能受到法律起诉。作者对任何滥用行为不承担责任。 ## 许可证 MIT 许可证。详见 [LICENSE](LICENSE)。 基于 [infinition/Bjorn](https://github.com/infinition/Bjorn) (Python)。
标签:AES-256, DNS解析, DOS头擦除, FTP破解, LLM集成, MIT许可, PE 加载器, PoC, Rust语言, SSH破解, Tokio异步, Web界面, 云存储安全, 可视化界面, 墨水屏显示, 安全测试, 密码破解, 密码管理, 开源项目, 异步编程, 插件系统, 攻击性安全, 数据窃取, 智能家居安全, 暴力破解, 漏洞评估, 物联网设备, 网络安全, 网络安全评估, 网络扫描, 请求拦截, 轻量级工具, 通知系统, 隐私保护