
Analyseur de paquets sécurisé multithreadé
sniffglue est un renifleur réseau écrit en Rust. Les paquets réseau sont analysés simultanément à l'aide d'un pool de threads pour utiliser tous les cœurs du processeur. Les objectifs du projet sont que vous puissiez exécuter sniffglue en toute sécurité sur des réseaux non fiables et qu'il ne doit pas planter lors du traitement des paquets. La sortie doit être aussi utile que possible par défaut.

# 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
pacman -S sniffglue
brew install sniffglue
Inclus pour la première fois dans Debian Bullseye, Ubuntu 21.04.
apt install sniffglue
apk add sniffglue
layman -a pentoo
emerge --ask net-analyzer/sniffglue
nix-env -i sniffglue
guix install sniffglue
dnf copr enable atim/sniffglue -y
dnf install sniffglue
Pour compiler depuis les sources, assurez-vous d'avoir libpcap et libseccomp installés. Sur les systèmes basés sur 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
Ou vous pouvez construire un paquet Debian via cargo-deb :
cargo deb
Vous pouvez construire sniffglue en tant qu'image Docker pour déboguer les configurations de conteneurs. L'image fait actuellement environ 11,1 Mo. Il est recommandé de la pousser vers votre propre registre.
docker build -t sniffglue .
docker run -it --init --rm --net=host sniffglue eth0
scdoc < docs/sniffglue.1.scd > docs/sniffglue.1
Pour signaler un problème de sécurité, veuillez contacter kpcyrd sur ircs://irc.hackint.org.
Pour garantir qu'un processus compromis ne compromette pas le système, sniffglue utilise seccomp pour restreindre les appels système qui peuvent être utilisés après le démarrage du processus. Cela se fait en deux étapes : d'abord tout au début (juste après l'initialisation d'env_logger), puis une fois après la configuration du renifleur, mais avant la lecture des paquets depuis le réseau.
Lors de la deuxième étape, un renforcement général est également appliqué avant que tous les appels système inutiles ne soient finalement désactivés. Ceux-ci sont spécifiques au système, donc un fichier de configuration est lu depuis /etc/sniffglue.conf. Ce fichier de configuration spécifie un répertoire vide pour chroot et un compte non privilégié dans user qui est utilisé pour abandonner les privilèges root.
Ce projet inclut un petit shell basé sur boxxy-rs qui peut être utilisé pour explorer le bac à sable à différentes étapes pendant et après l'initialisation. Il est également utilisé par Travis pour s'assurer que le bac à sable bloque effectivement les appels système.
cargo run --example boxxy
Ce projet est testé en utilisant reprotest. Actuellement, les variations suivantes sont exclues :
-time - nécessaire car le certificat de crates.io expire dans le futur-domain_host - nécessite root pour unshare(2) et a été excluN'oubliez pas d'installer les dépendances de construction.
ci/reprotest.sh
Le traitement des paquets de sniffglue peut être fuzzé en utilisant cargo-fuzz. Tout ce dont vous avez besoin est fourni dans le répertoire fuzz/ qui est distribué avec son code source. Veuillez noter que ce programme est lié à libpcap qui n'est pas inclus dans la configuration de fuzzing actuelle.
cargo fuzz run read_packet
GPLv3+