
पैसिव सर्विस लोकेटर, एक पायथन स्निफर जो सर्वर, क्लाइंट, नाम और बहुत कुछ पहचानता है
निष्क्रिय सेवा लोकेटर, एक पायथन स्निफर जो सर्वर, क्लाइंट, नाम और बहुत कुछ पहचानता है
passer, निष्क्रिय सेवा स्निफर के साथ शुरुआत करने के लिए त्वरित नोट्स। स्निफ करने की अनुमति प्राप्त करना आपकी ज़िम्मेदारी है।
Passer एक लाइव पैकेट कैप्चर या pcap फ़ाइल से काम कर सकता है (कमांड लाइन पैरामीटर, नीचे उदाहरण देखें)। यह लाइव सेवाओं और क्लाइंट, लैन पर ईथरनेट कार्ड, dns प्रविष्टियाँ, ऑपरेटिंग सिस्टम, और राउटर की रिपोर्ट करता है - सब कुछ निष्क्रिय रूप से!
यदि आप विंडोज़ का उपयोग कर रहे हैं या किसी अन्य कारण से सहायक फ़ाइलों के लिए आपके पथ मेरे से मेल नहीं खाते हैं, तो मुझे बताएं कि वे कहाँ हैं और मुझे स्क्रिप्ट को अपडेट करने में खुशी होगी।
# Install system dependencies
sudo apt-get install arp-scan ettercap-text-only nmap wireshark
# Install python dependencies
sudo pip install -r requirements.txt
# Prevent Scapy from performing DNS lookups
echo 'noenum = [ Resolve(), TCP_SERVICES, UDP_SERVICES ]' >> ~/.scapy_startup.py
# Install system dependencies
sudo yum install arp-scan ettercap nmap wireshark
# Install python dependencies
sudo pip install -r requirements.txt
# Prevent Scapy from performing DNS lookups
echo 'noenum = [ Resolve(), TCP_SERVICES, UDP_SERVICES ]' >> ~/.scapy_startup.py
scapy को इंस्टॉल करने के लिए, इंस्टॉलेशन गाइड देखें।
Passer एक Docker इमेज के रूप में भी पैकेज्ड आता है। यदि आपके पास पहले से Docker नहीं है, तो Linux पर इसे इंस्टॉल करने का एक त्वरित और आसान तरीका यहाँ दिया गया है:
curl -fsSL https://get.docker.com | sh -
अन्यथा, अपने ऑपरेटिंग सिस्टम के लिए इंस्टॉल निर्देशों का पालन करें।
अधिकांश उपयोगों के लिए, हम इस रेपो में शामिल passer स्क्रिप्ट की सलाह देते हैं। यह स्क्रिप्ट सभी docker-विशिष्ट
wget https://raw.githubusercontent.com/activecm/passer/master/passer
chmod +x passer
फिर आप इस स्क्रिप्ट का उपयोग वैसे ही कर सकते हैं जैसे आप नीचे दिए गए किसी भी उदाहरण में करते हैं। उदाहरण के लिए:
./passer -i eth0
# The equivalent without using the included script would be:
docker run --rm --name=passer -i --init --net=host --cap-add=net_raw activecm/passer -i eth0
पासर रन को रोकने के लिए:
docker stop passer
/path/to/passer.py
यह सभी नेटवर्क इंटरफ़ेस से स्निफ़ करता है और सभी आउटपुट लाइनें आपके कंसोल पर भेजता है।
sudo /path/to/passer.py
या
su - -c '/path/to/passer.py'
/path/to/passer.py -i IfaceName
route चलाने पर आपको कुछ लाइव इंटरफ़ेस मिल सकते हैं जिन्हें आप उपयोग कर सकते हैं।
❕
-i-rके साथ असंगत है।
/path/to/passer.py -r /path/to/packets.pcap
❕
-r,-iके साथ असंगत है।
cat packetdata.pcap | ./passer.py -r /proc/self/fd/0
zcat packetdata.pcap.gz | ./passer.py -r /proc/self/fd/0
bzcat packetdata.pcap.bz2 | ./passer.py -r /proc/self/fd/0
tcpdump -i eth0 -qtnp -w - | ./passer.py -r /proc/self/fd/0
# etc...
यह आपको किसी भी उपकरण से पैकेट कैप्चर करने देता है जो पैकेट को pcap फ़ाइल में सहेज सकता है, और बाद में उन्हें किसी भिन्न सिस्टम पर passer के साथ प्रोसेस कर सकता है।
/path/to/passer.py -l /path/to/networkinfo.txt
/path/to/passer.py 2>/dev/null
/path/to/passer.py -h
/path/to/passer.py -u /path/to/oddpackets.pcap
यह आम तौर पर विकास प्रक्रिया के लिए है; इस फ़ाइल में सहेजे गए पैकेट वे हैं जिनके हस्ताक्षर लिखे जाने आवश्यक हैं। विचित्र पैकेटों का योगदान, सेवाओं का विवरण, और प्रोग्राम में पैच सादर स्वीकार किए जाते हैं।
यह चाहिए कि कमांड लाइन के अंत में BPF फ़िल्टर को सिंगल कोट्स में रखना उतना ही सरल हो। संस्करण 1.16 तक, अंतर्निहित लाइब्रेरी आपूर्त किए गए फ़िल्टर का सफलतापूर्वक उपयोग नहीं करती प्रतीत होती है, लेकिन एक वर्कअराउंड है। फ़िल्टरिंग करने के लिए tcpdump का उपयोग करें, और घटाए गए पैकेटों के सेट को ऊपर की तरह stdin पर passer को सौंप दें:
tcpdump -r packets.pcap -w - 'icmp or arp' | ./passer.py -r /proc/self/fd/0
पैकेट को पहले से कैप्चर करने या लाइव स्निफ़िंग में उपयोग करने के लिए फ़िल्टर के कुछ सुझावों के लिए नीचे दिया गया "Sample filters" अनुभाग देखें।
socket.error: (1, 'Operation not permitted')
आप शायद non-root उपयोगकर्ता के रूप में लाइव स्निफ़ करने का प्रयास कर रहे हैं। या तो root के रूप में लॉग इन करें, sudo/su का उपयोग करें, या pcap फ़ाइलों के साथ काम करें।
यदि passer आपके सिस्टम पर क्रैश हो जाता है या काम नहीं करता है, तो कृपया एक issue बनाएं जिसमें त्रुटि संदेश (यदि कोई हो) और आपके ऑपरेटिंग सिस्टम के बारे में कोई भी विवरण शामिल हो।
Passer का आउटपुट stdout पर जाता है, और यदि आप कमांड लाइन
पैरामीटर -l /path/to/logfile देते हैं, तो उस फ़ाइल में भी। यहाँ प्रारूप है:
| Type | IPAddr | Proto | State | Optional description (may be empty) |
|---|---|---|---|---|
| 'IP' | IPaddr | 'IP' | dead or live | p0f OS description |
| 'MA' | IPaddr | 'Ethernet' | MacAddr | ManufDescription |
| 'TC' | IPaddr | 'TCP_'Port | closed or open | client description |
| 'TS' | IPaddr | 'TCP_'Port | closed or listening | server description |
| 'UC' | IPaddr | 'UDP_'Port | open or closed | udp client port description |
| 'US' | IPaddr | 'UDP_'Port | open or closed | udp server port description |
| 'DN' | IPaddr | 'A' or 'PTR' | hostname | possible extra info |
| 'RO' | IPaddr | 'TTLEx' | router | possible extra info |
पंक्तियाँ कॉमा से अलग की गई हैं ताकि स्प्रेडशीट या SQL आयात में आसानी से लोड की जा सकें। किसी भी फ़ील्ड में कॉमा नहीं होना चाहिए। http://www.stearns.org/passer/passer-sample-log.txt पर एक नमूना आउटपुट फ़ाइल है।
इन पंक्तियों से अपना मनचाहा डेटा निकालने के कुछ उदाहरण यहाँ दिए गए हैं:
cat /var/tmp/passer-log | sort -u | less
cat /var/tmp/passer-log | sort -t, -k2 -u | less
cat /var/tmp/passer-log | sort -u | egrep '(^DN|^RO)' | less
cat /var/tmp/passer-log | sort -u | grep ',192\.168\.0\.17,' | less
cat /var/tmp/passer-log | sort -u | grep ',192\.168\.' | less
cat /var/tmp/passer-log | sort -u | grep ',TCP_25,listening,' | less
cat /var/tmp/passer-log | sort -u | grep -v ',closed,' | less