
सुरक्षित मल्टीथ्रेडेड पैकेट स्निफर
sniffglue रस्ट में लिखा गया एक नेटवर्क स्निफर है। नेटवर्क पैकेटों को थ्रेड पूल का उपयोग करके समवर्ती रूप से पार्स किया जाता है ताकि सभी सीपीयू कोर का उपयोग हो सके। परियोजना के लक्ष्य हैं कि आप 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
पहली बार डेबियन बुल्सआई, उबंटू 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 स्थापित हैं। डेबियन आधारित सिस्टम पर:
# 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
या आप cargo-deb के माध्यम से एक डेबियन पैकेज बना सकते हैं:
cargo deb
आप कंटेनर सेटअप को डीबग करने के लिए sniffglue को एक डॉकर इमेज के रूप में बना सकते हैं। इमेज वर्तमान में लगभग 11.1MB है। इसे अपने स्वयं के रजिस्ट्री में पुश करने की अनुशंसा की जाती है।
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 प्रक्रिया शुरू होने के बाद उपयोग किए जा सकने वाले सिस्कॉल्स को प्रतिबंधित करने के लिए सेकॉम्प का उपयोग करता है। यह दो चरणों में किया जाता है, पहले बिल्कुल शुरुआत में (env_logger के आरंभ होने के ठीक बाद) और एक बार स्निफर सेटअप हो जाने के बाद, लेकिन नेटवर्क से पैकेट पढ़े जाने से पहले।
दूसरे चरण के दौरान, कुछ सामान्य हार्डनिंग भी लागू की जाती है, इससे पहले कि सभी अनावश्यक सिस्कॉल्स अंततः अक्षम कर दिए जाएं। ये सिस्टम-विशिष्ट हैं, इसलिए /etc/sniffglue.conf से एक कॉन्फ़िगरेशन फ़ाइल पढ़ी जाती है। यह कॉन्फ़िग फ़ाइल chroot के लिए एक खाली निर्देशिका और user में एक अनप्रिविलेज्ड खाता निर्दिष्ट करती है जिसका उपयोग रूट विशेषाधिकारों को छोड़ने के लिए किया जाता है।
इस परियोजना में एक छोटा boxxy-rs आधारित शेल शामिल है जिसका उपयोग आरंभीकरण के दौरान और बाद में विभिन्न चरणों में सैंडबॉक्स का पता लगाने के लिए किया जा सकता है। इसका उपयोग ट्रैविस द्वारा यह सुनिश्चित करने के लिए भी किया जाता है कि सैंडबॉक्स वास्तव में सिस्कॉल्स को ब्लॉक करता है।
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+