网络侦探必备:sniffglue,你的数据包追踪利器

文摘   2024-07-22 00:01   江苏  

网络侦探必备: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 都能成为你不可或缺的助手。

参考资料
[1]

cargo-deb: https://github.com/mmstick/cargo-deb


编程悟道
自制软件研发、软件商店,全栈,ARTS 、架构,模型,原生系统,后端(Node、React)以及跨平台技术(Flutter、RN).vue.js react.js next.js express koa hapi uniapp Astro
 最新文章