网络侦探必备:sniffglue,你的数据包追踪利器
前言:
在这个数字时代,网络安全已成为我们不可或缺的一部分。想象一下,如果你能实时监控网络流量,洞察数据包的每一个细节,那将是多么强大的能力。今天,我们要介绍的不是普通的网络工具,而是能够让你深入网络核心的神器——sniffglue。这不仅仅是一个网络嗅探器,它是一个全方位的网络安全解决方案,专为那些渴望掌控网络安全的专业人士设计。
sniffglue 是用 Rust 编写的网络嗅探器。它使用线程池并发解析网络数据包,以利用所有 CPU 核心。项目的目标是你可以在不信任的网络上安全地运行 sniffglue,并且在处理数据包时它不应该崩溃。默认情况下,输出应尽可能有用。
使用方法
使用默认过滤器(dhcp, dns, tls, http)进行嗅探
sniffglue enp0s25
提高过滤器灵敏度(arp)
sniffglue -v enp0s25
提高过滤器灵敏度(cjdns, ssdp, dropbox, 包含有效 utf8 的数据包)
sniffglue -vv enp0s25
几乎全部
sniffglue -vvv enp0s25
全部
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 的系统上:
安装依赖
sudo apt install libpcap-dev libseccomp-dev
使用 rustup 安装 rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
安装 sniffglue 并测试
cargo install sniffglue
sniffglue --help
或者你可以通过 cargo-deb[1] 构建 Debian 包:
cargo deb
协议
[x] 以太网 [x] IPv4 [x] IPv6 [x] ARP [x] TCP [x] UDP [x] ICMP [x] HTTP [x] TLS [x] DNS [x] DHCP [x] cjdns 以太网信标 [x] SSDP [x] Dropbox 信标 [x] 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
安全
要报告安全问题,请联系 kpcyrd on ircs://irc.hackint.org。
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,而 libpcap 未包含在当前的模糊测试配置中。
cargo fuzz run read_packet
结语:
sniffglue 不仅仅是一个工具,它是你网络安全的守护神。它的强大功能和易用性,使得即使是最复杂的网络环境也能变得透明和可控。无论你是网络安全专家还是初学者,sniffglue 都能成为你不可或缺的助手。
cargo-deb: https://github.com/mmstick/cargo-deb