sniffglue - secure multithreaded packet sniffer
Contents
Description
sniffglue is a network sniffer written in rust. Network packets are parsed concurrently using a thread
pool to utilize all cpu cores. Project goals are that you can run sniffglue securely on untrusted
networks and that it must not crash when processing packets. The output should be as useful as possible
by default.
Examples
Sniff with default filters (dhcp, dns, tls, http) from enp0s25:
sniffglueenp0s25
Increase the filter sensitivity (arp):
sniffglue-venp0s25
Increase the filter sensitivity (cjdns, ssdp, dropbox, packets with valid utf8)
sniffglue-vvenp0s25
Almost everything
sniffglue-vvvenp0s25
Everything
sniffglue-vvvvenp0s25
Read a dump from sniff.pcap, with increased filter sensitivity and decode packets with 1 thread:
sniffglue-vvrn1sniff.pcapName
sniffglue - secure multithreaded packet sniffer
Options
-v, --verbose
Increase filter sensitivity to show more (possibly less useful) packets. The default only shows few
packets, this flag can be specified multiple times. (maximum: 4)
-h, --help
Prints help information.
-p, --promisc
Set device to promiscuous mode.
-r, --read
Open device as pcap file.
-n, --threadsthreads
Specify the number of threads.
-V, --version
Prints version information. If -r was specified, open as pcap file instead.
Protocols
ethernet, ipv4, ipv6, arp, tcp, udp, http, tls, dns, dhcp, cjdnsethbeacons, ssdp, dropboxbeacons
Security
To report a security issue please contact kpcyrd on ircs://irc.hackint.org.
SECCOMP
To ensure a compromised process doesn't compromise the system, sniffglue uses seccomp to restrict the
syscalls that can be used after the process started. This is done in two stages, first at the very
beginning (directly after env_logger initialized) and once after the sniffer has been setup, but before
packets are read from the network.
HARDENING
During the second stage, there's also some general hardening that is applied before all unneeded syscalls
are finally disabled. Those are system specific, so a configuration file is read from
/etc/sniffglue.conf. This config file specifies an empty directory for chroot and an unprivileged account
in user that is used to drop root privileges.
FUZZING
The packet processing of sniffglue can be fuzzed using cargo-fuzz. Everything you should need is provided
in the fuzz/ directory that is distributed along with its source code. Please note that this program
links to libpcap which is not included in the current fuzzing configuration.
See Also
pcap(3PCAP), seccomp(2)
Synopsis
sniffglue[-vrpVh][-n<threads>]device
