Sniffglue — это безопасный сниффер, написанный на Rust. Он создан с упором на безопасность и стабильность, использует привилегированные операции только в минимально необходимом объеме, что снижает риск в случае уязвимостей в коде.
apt install sniffglue или sudo apt install libpcap-dev libseccomp-dev curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source $HOME/.cargo/env cargo install sniffglue sniffglue --help
sniffglue — это сетевой сниффер, написанный на rust. Сетевые пакеты обрабатываются параллельно с использованием пула потоков для задействования всех ядер процессора. Цели проекта — чтобы вы могли безопасно запускать sniffglue в недоверенных сетях и чтобы он не падал при обработке пакетов. По умолчанию вывод должен быть максимально полезным.
)
# 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
Впервые включён в 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
Для сборки из исходников убедитесь, что у вас установлены 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
Или вы можете собрать Debian-пакет с помощью cargo-deb:
cargo deb
Вы можете собрать sniffglue как docker-образ для отладки конфигураций контейнеров. Размер образа в настоящее время составляет около 11.1 МБ. Рекомендуется загружать его в собственный реестр.
docker build -t sniffglue .
docker run -it --init --rm --net=host sniffglue eth0
scdoc < docs/sniffglue.1.scd > docs/sniffglue.1
Для сообщения о проблеме безопасности, пожалуйста, свяжитесь с kpcyrd на ircs://irc.hackint.org.
Для обеспечения того, чтобы скомпрометированный процесс не мог скомпрометировать систему, sniffglue использует seccomp для ограничения системных вызовов, которые могут быть использованы после запуска процесса. Это делается в два этапа: во-первых, в самом начале (сразу после инициализации env_logger), и во-вторых, после настройки сниффера, но перед чтением пакетов из сети.
На втором этапе также выполняется общее укрепление безопасности перед окончательным отключением всех ненужных системных вызовов. Они зависят от конкретной системы, поэтому конфигурационный файл загружается из /etc/sniffglue.conf. Этот конфигурационный файл определяет пустой каталог для chroot и непривилегированную учётную запись в user, которая используется для снятия.root-привилегий.
Этот проект включает небольшую оболочку на основе boxxy-rs, которую можно использовать для изучения песочницы на различных этапах во время и после инициализации. Она также используется travis для проверки того, что песочница действительно блокирует системные вызовы.
cargo run --example boxxy
Этот проект тестируется с помощью reprotest. В настоящее время следующие вариации исключены:
-time — требуется, потому что сертификат crates.io истекает в будущем-domain_host — требует root для unshare(2) и был исключёнНе забудьте установить зависимости для сборки.
ci/reprotest.sh
Обработка пакетов в sniffglue может быть подвергнута фаззингу с помощью cargo-fuzz. Всё необходимое предоставлено в каталоге fuzz/, который поставляется вместе с исходным кодом. Обратите внимание, что эта программа связана с libpcap, который не включён в текущую конфигурацию фаззинга.
cargo fuzz run read_packet
GPLv3+