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

Download history 21/week @ 2024-04-20 12/week @ 2024-04-27 4/week @ 2024-05-18 25/week @ 2024-05-25 33/week @ 2024-06-01 27/week @ 2024-06-08 21/week @ 2024-06-15 17/week @ 2024-06-22 17/week @ 2024-06-29 13/week @ 2024-07-06 15/week @ 2024-07-13 15/week @ 2024-07-20 21/week @ 2024-07-27 13/week @ 2024-08-03

每月下载量 67

GPL-3.0 许可证

140KB
2.5K SLoC

sniffglue 构建状态 Crates.io

sniffglue 是一个用 Rust 编写的网络嗅探器。它使用线程池并发解析网络数据包,以利用所有 CPU 核心。项目目标是您可以在不可信网络上安全地运行 sniffglue,并且它必须在处理数据包时不会崩溃。默认情况下,输出应尽可能有用。

screenshot

用法

# 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

安装

Packaging status

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