24 个版本 (15 个重大更改)
0.16.0 | 2024 年 1 月 7 日 |
---|---|
0.15.0 | 2022 年 3 月 4 日 |
0.14.0 | 2021 年 10 月 27 日 |
0.12.1 | 2021 年 4 月 27 日 |
0.4.0 | 2017 年 11 月 18 日 |
在 命令行工具 中排名第 678
每月下载量 67 次
140KB
2.5K SLoC
sniffglue
sniffglue 是一个用 Rust 编写的网络嗅探器。它使用线程池并发解析网络数据包,以利用所有 CPU 核心。项目目标是您可以在不可信网络上安全地运行 sniffglue,并且它必须在处理数据包时不会崩溃。默认情况下,输出应尽可能有用。
用法
# sniff with default filters (dhcp, dns, tls, http)
sniffglue enp0s25
# increase the filter sensitivity (arp)
sniffglue -v enp0s25
# increase the filter sensitivity (cjdns, ssdp, dropbox, packets with valid utf8)
sniffglue -vv enp0s25
# almost everything
sniffglue -vvv enp0s25
# everything
sniffglue -vvvv enp0s25
安装
Arch Linux
pacman -S sniffglue
Mac OSX
brew install sniffglue
Debian/Ubuntu/Kali
首次包含在 Debian Bullseye 和 Ubuntu 21.04 中。
apt install sniffglue
Alpine
apk add sniffglue
Gentoo
layman -a pentoo
emerge --ask net-analyzer/sniffglue
NixOS
nix-env -i sniffglue
GNU Guix
guix install sniffglue
Fedora/RHEL/CentOS/CentOS Stream
dnf copr enable atim/sniffglue -y
dnf install sniffglue
从源代码构建
要构建源代码,请确保已安装 libpcap 和 libseccomp。在基于 Debian 的系统上
# install the dependencies
sudo apt install libpcap-dev libseccomp-dev
# install rust with rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
# install sniffglue and test it
cargo install sniffglue
sniffglue --help
或者您可以通过 cargo-deb 构建 Debian 软件包
cargo deb
协议
- 以太网
- IPv4
- IPv6
- ARP
- TCP
- UDP
- ICMP
- HTTP
- TLS
- DNS
- DHCP
- cjdns eth beacons
- SSDP
- dropbox beacons
- PPP
- 802.11
Docker
您可以将 sniffglue 构建成 Docker 镜像以调试容器设置。当前镜像大小约为 11.1MB。建议将其推送到您自己的仓库。
docker build -t sniffglue .
docker run -it --init --rm --net=host sniffglue eth0
构建文档
scdoc < docs/sniffglue.1.scd > docs/sniffglue.1
安全
要报告安全问题,请在 ircs://irc.hackint.org 上联系 kpcyrd。
Seccomp
为了确保受损害的进程不会损害系统,sniffglue 使用 seccomp 限制在进程开始后可以使用的系统调用。这分为两个阶段进行,首先是初始化 env_logger 后的非常开始阶段,其次是设置嗅探器后但在从网络读取数据包之前。
加固
在第二阶段,还会应用一些通用的加固措施,在最终禁用所有不必要的系统调用之前。这些措施与系统相关,因此会从 /etc/sniffglue.conf
读取配置文件。此配置文件指定了用于 chroot
的空目录和在 user
中的非特权账户,用于降级root权限。
boxxy-rs
此项目包含一个小的基于 boxxy-rs 的shell,可用于在初始化期间及之后探索沙盒的不同阶段。此功能也由travis使用以确保沙盒实际上阻止系统调用。
cargo run --example boxxy
可重现构建
此项目使用reprotest进行测试。目前排除以下变体
-time
- 因为crates.io证书将在未来过期-domain_host
- 需要root权限进行unshare(2),已被排除
别忘了安装构建依赖项。
ci/reprotest.sh
模糊测试
可以使用 cargo-fuzz 对sniffglue的包处理进行模糊测试。所有你需要的东西都包含在与其源代码一起分发的 fuzz/
目录中。请注意,此程序链接到libpcap,它不包括在当前的模糊测试配置中。
cargo fuzz run read_packet
许可证
GPLv3+
依赖项
~14MB
~262K SLoC