sundruid/muonfp

GitHub: sundruid/muonfp

MuonFP 是一个零外部依赖的 Rust 被动 TCP 指纹传感器,通过分析 SYN/SYN-ACK 数据包提取精简指纹签名,为网络安全研究和侦察检测提供数据支撑。

Stars: 34 | Forks: 6

![MuonFP 1.5 发布图](https://static.pigsec.cn/wp-content/uploads/repos/cas/a7/a7b6f740d3a09bcb0cb7d1b691fc8066130f7d8d6f58e5ddca9cc37b8eadd9b1.png) # MuonFP MuonFP 是一个开源的被动 TCP 指纹传感器。它通过观察 TCP SYN 和 SYN-ACK 数据包,记录下源自 TCP 窗口大小、选项顺序、MSS 以及窗口缩放因子的精简签名。 MuonFP 可用于网络安全研究、侦察检测,以及为支持指纹识别的工具(例如 [Fingerprint Firewall](https://github.com/sundruid/fpfw))提供数据。 阅读背景论文: [没有所谓的“良性”互联网扫描器](https://www.kenwebster.com/index.php/2025/01/29/there-is-no-such-thing-as-a-benign-internet-scanner/)。 ## 功能特性 - IPv4 和 IPv6 TCP SYN/SYN-ACK 指纹识别。 - 针对 IPv6 扩展头的常见选项头和分片头遍历。 - 带有 UTC 时间戳和传感器主机名的 JSON Lines 指纹输出。 - 支持轮转的指纹和 PCAP 输出,且活动日志支持重启安全。 - 可通过 `--stdout` 选择立即输出 JSON。 - 自动选择 Linux 接口或显式指定配置的接口。 - 在不需要 PCAP 记录时支持 `/dev/null`。 - 提供 systemd 服务和 Debian 发布构件。 MuonFP 仅负责记录指纹;策略匹配和流量阻断等操作由 Fingerprint Firewall 等下游工具执行。 ## 指纹格式 示例: ``` 26847:2-4-8-1-3:1460:8 ``` 这四个字段分别是: 1. TCP 窗口大小。 2. TCP 选项 Kind 值(保持其在线路上的确切顺序)。 3. TCP 最大分段大小 (MSS)。 4. TCP 窗口缩放因子。 有关草案格式的规范,请参阅 [MuonFP 指纹规范](MuonFP%20Fingerprint%20Specification.md)。 ## 命令行 ``` MuonFP - open-source TCP fingerprinting Usage: muonfp [OPTIONS] Options: -v, --version, -version Show version information -s, --stdout Output JSON fingerprints to stdout immediately --list-interfaces List available capture interfaces -h, --help Show this help message ``` 所有版本形式都会报告 Cargo 包版本: ``` $ muonfp --version MuonFP v1.5.0 ``` ## Debian 安装说明 MuonFP 1.5.0 Linux 构件基于 Debian 12 amd64 构建,支持 Debian 12 和 Debian 13 amd64。 ### Debian 软件包 ``` curl -LO https://github.com/sundruid/muonfp/releases/download/v1.5.0/muonfp_1.5.0-1_amd64.deb sudo apt install ./muonfp_1.5.0-1_amd64.deb ``` ### 兼容性安装程序 ``` curl -LO https://github.com/sundruid/muonfp/releases/download/v1.5.0/muonfp-v1.5.0-debian12-amd64.tar.gz tar -xzf muonfp-v1.5.0-debian12-amd64.tar.gz cd muonfp-v1.5.0 sudo ./install.sh ``` 安装程序会保留现有的 `/etc/muonfp.conf`。默认情况下,卸载操作也会 保留配置和日志: ``` sudo ./install.sh --uninstall ``` 仅在需要同时删除配置和已收集的日志数据时,才使用 `--uninstall --purge`。 ### 仅二进制文件升级 现有的手动安装可以仅替换可执行文件: ``` curl -LO https://github.com/sundruid/muonfp/releases/download/v1.5.0/muonfp-v1.5.0-debian12-amd64 sudo systemctl stop muonfp sudo cp /usr/local/bin/muonfp /usr/local/bin/muonfp.previous sudo install -m755 muonfp-v1.5.0-debian12-amd64 /usr/local/bin/muonfp /usr/local/bin/muonfp --version sudo systemctl start muonfp ``` 安装前,请根据发布版本中的 `SHA256SUMS` 校验下载的文件。 ## 配置 服务会读取 `/etc/muonfp.conf`: ``` interface=auto fingerprints=/var/log/fingerprints pcap=/var/log/pcaps max_file_size=10 ``` - `interface=auto` 会选择 Linux 的默认路由接口。如有需要,请使用 `muonfp --list-interfaces` 并显式设置接口名称。 - 设置 `pcap=/dev/null` 可禁用 PCAP 记录。 - `max_file_size` 是以 MiB 为单位的轮转阈值,且必须大于 零。 数据包捕获需要 root 权限或 `CAP_NET_RAW`。 ## 从源码构建 MuonFP 需要 Rust 1.85 或更高版本: ``` git clone https://github.com/sundruid/muonfp.git cd muonfp cargo build --release --locked ./target/release/muonfp --version ``` 在提交更改之前: ``` cargo fmt --all -- --check cargo clippy --locked --all-targets --all-features -- -D warnings cargo test --locked ``` ## 许可证 MuonFP 源代码基于 [MIT License](LICENSE) 发布。指纹 格式规范附带其自身的 CC BY 4.0 声明。 联系方式:sundruid@protonmail.com
标签:Rust, TCP/IP, 可视化界面, 威胁情报, 开发者工具, 网络安全, 网络流量审计, 被动指纹识别, 通知系统, 防御绕过, 隐私保护