
أداة التقاط حزم متعددة الخيوط وآمنة
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 يُستخدم لإسقاط صلاحيات الجذر.
يتضمن هذا المشروع شل صغيرة مبنية على boxxy-rs يمكن استخدامها لاستكشاف الصندوق الرملي في مراحل مختلفة أثناء وبعد التهيئة. يستخدمها Travis أيضًا لضمان أن الصندوق الرملي يحظر فعليًا استدعاءات النظام.
cargo run --example boxxy
يتم اختبار هذا المشروع باستخدام reprotest. حاليًا، يتم استثناء الاختلافات التالية:
-time - مطلوب لأن شهادة crates.io تنتهي في المستقبل-domain_host - يتطلب صلاحيات الجذر لـ unshare(2) وقد تم استثناؤهلا تنس تثبيت تبعيات البناء.
ci/reprotest.sh
يمكن تلغيم معالجة الحزم في sniffglue باستخدام cargo-fuzz. كل ما تحتاجه متوفر في دليل fuzz/ الموزع مع الكود المصدري. يرجى ملاحظة أن هذا البرنامج يرتبط بـ libpcap الذي لم يتم تضمينه في تكوين التلغيم الحالي.
cargo fuzz run read_packet
GPLv3+