Tcpdump द्वारा ack या syn के पैकेट कैसे कैप्चर करें?


48

मैं केवल ack या syn पैकेट को पकड़ने के लिए एक फिल्टर नियम का उपयोग करना चाहता हूं। मैं यह कैसे करु?


व्यक्तिगत रूप से मैं ऐसा नहीं करूंगा। मैं सभी पैकेटों पर कब्जा कर लूँगा, फिर बाद में SYN और ACK झंडे पर फ़िल्टर करूँगा। यदि आप टीसीपी का निवारण कर रहे हैं, तो आप लगभग हमेशा एक पूरी बातचीत देखना चाहते हैं, न कि केवल एक हैंडशेक या एसीके। यदि आपको वास्तविक डेटा पेलोड में कोई दिलचस्पी नहीं है, तो आप पैकेट आकार को सीमित कर सकते हैं tcpdump -s SIZE। टीसीपी हेडर एक चर लंबाई हो सकती है, इसलिए कैप्चरिंग -s 128से संभवतः सभी संभव हेडर मिलेंगे और शायद थोड़ा सा डेटा।
सुपरजामी

4
शायद आप टीसीपी का निवारण नहीं कर रहे हैं। हो सकता है कि आप यह देखना चाहते हों कि कोई कार्यक्रम कैसा है, और आप इसके आउटबाउंड कनेक्शन को गिनना चाहते हैं। मेरी तरह, अब।
डेन प्रिट्स २५'१६

जवाबों:


81

PCAP फिल्टर वाक्य रचना tcpdump के लिए इस्तेमाल किया wireshark कब्जा फिल्टर पर ठीक उसी तरह काम करना चाहिए।

Tcpdump के साथ मैं इस तरह से एक फ़िल्टर का उपयोग करूँगा।

tcpdump "tcp[tcpflags] & (tcp-syn|tcp-ack) != 0"

की जाँच करें tcpdump आदमी पेज , और tcpflags पर अधिक ध्यान दें।

कैप्चर और फ़िल्टर प्रदर्शित करने के बारे में Wireshark Wiki में अनुभाग भी देखें। दुर्भाग्य से दो प्रकार के फिल्टर एक ही चीज़ के लिए एक पूरी तरह से अलग सिंटैक्स, और अलग-अलग नामों का उपयोग करते हैं।

यदि आप कैप्चर फ़िल्टर के बजाय डिस्प्ले फ़िल्टर चाहते हैं, तो आपको संभवतः tcp.flags.ack और tcp.flags.syn के संयोजन की अभिव्यक्ति बनाने की आवश्यकता होगी। मैं हालांकि कैप्चर फ़िल्टर से अधिक परिचित हूं, इसलिए आपको अपने दम पर काम करना होगा।


1
मुझे आपकी प्रतिक्रिया बेहतर लगी। ऐसा लगता है कि आप प्रयास करने गए थे। आप के लिए Upvote
त्याग दें

4
यह अच्छे संदर्भों के साथ एक शानदार उत्तर है, लेकिन कृपया ध्यान दें कि यह सिंटैक्स किसी भी पैकेट को कैप्चर करेगा जिसमें SYN या ACK झंडे सेट हों, भले ही अन्य झंडे भी सेट हों। यह ओपी का इरादा क्या हो सकता है या नहीं हो सकता है। कृपया अधिक कठोर फ़िल्टर के लिए नीचे मेरा उत्तर देखें यदि केवल TCP SYN या ACK पैकेट वांछित हैं। चीयर्स।
JJC

14

जबकि @ ज़ोर्डचे का उत्तर अच्छा और पूर्ण है, ध्यान दें कि सिंटैक्स किसी भी पैकेट का उत्पादन करेगा जिसमें टीसीपी एसवाईएन या टीसीपी एसीके ध्वज सेट है, जिसमें पैकेट भी शामिल हैं जो कड़ाई से सीधे सादे "टीसीपी एसएनएन" या "टीसीपी एसीके" पैकेट नहीं हैं, क्योंकि वे अन्य झंडे भी लगाए हैं। यह हो सकता है या आप (या भविष्य के पाठकों) का इरादा नहीं हो सकता है। उदाहरण के लिए, वह सिंटैक्स टीसीपी SYN-ACK पैकेट, टीसीपी फिन-एसीके आदि को भी कैप्चर करेगा, यदि आप केवल TCP SYN या TCP ACK पैकेट चाहते हैं (यानी उन झंडे सेटों में से एक), तो उचित कैप्चर फ़िल्टर सिंटैक्स है:

'tcp[tcpflags] == tcp-syn or tcp[tcpflags] == tcp-ack'

इसके तुल्य:

'tcp[13] == 2 or tcp[13] == 16'

चीयर्स!


9

मैंने शीर्ष "सिंकर्स" देखने के लिए एक स्क्रिप्ट बनाई। उसके लिए, मैं केवल प्रारंभिक सिंक पैकेट (तीन पैकेट हैंडशेक का पहला पैकेट) पर विचार करता हूं। अर्थात्, syn = 1, ack = 0

while :; do
  date; 
  tcpdump -i eth1 -n -c 100 \
  'tcp[tcpflags] & (tcp-syn) != 0' and 
  'tcp[tcpflags] & (tcp-ack) == 0' 2> /dev/null \
  | awk '{ print $3}' \
  | sort | uniq -c | sort | tail -5;
  echo;
  sleep 1
done

5
यह एक अच्छा उदाहरण है। आप "tcp [tcpflags] & (tcp-syn)! = 0 'और' tcp [tcpflags]] & (tcp-ack) == 0 '" को सिर्फ' tcp [tcpflags के साथ बदलकर अपने tcpdump कैप्चर फ़िल्टर को और भी सरल बना सकते हैं! ] == tcp-syn '। यह स्वचालित रूप से एसीके सेट के साथ पैकेट को बाहर कर देगा। चीयर्स!
JJC

9
tcpdump 'tcp[13] = 3'

http://danielmiessler.com/study/tcpdump/

उन्नत

आप पैकेट के विशिष्ट भागों के आधार पर फ़िल्टर कर सकते हैं, साथ ही समूहों में कई स्थितियों को जोड़ सकते हैं। पूर्व उपयोगी है जब केवल SYNएस या RSTएस की तलाश में, उदाहरण के लिए, और बाद में भी अधिक उन्नत यातायात अलगाव के लिए।

यूएपी आरएसएफ

[संकेत: टीसीपी झंडे के लिए विपर्यय: अकुशल हमलावरों पेस्टर वास्तविक सुरक्षा लोक]

आपका ज्ञापन: ...

मुझे सभी URGENT ( URG) पैकेट दिखाएं ...

tcpdump 'tcp[13] & 32 != 0'

मुझे सभी ACKNOWLEDGE ( ACK) पैकेट दिखाएं ...

tcpdump 'tcp[13] & 16 != 0'

मुझे सभी PUSH ( PSH) पैकेट दिखाएं ...

tcpdump 'tcp[13] & 8 != 0'

मुझे सभी RESET ( RST) पैकेट दिखाएं ...

tcpdump 'tcp[13] & 4 != 0'

मुझे सभी SYNCHRONIZE ( SYN) पैकेट दिखाएं ...

tcpdump 'tcp[13] & 2 != 0'

मुझे सभी को अंतिम ( FIN) पैकेट दिखाएं ...

tcpdump 'tcp[13] & 1 != 0'

मुझे सभी SYNCHRONIZE / ACKNOWLEDGE ( SYNACK) पैकेट दिखाएं ...

tcpdump 'tcp[13] = 18'

[ नोट: केवल PSH, RST, SYN, और FINझंडे tcpdump के झंडे क्षेत्र उत्पादन में प्रदर्शित होते हैं। URGs और ACKs प्रदर्शित किए जाते हैं, लेकिन वे झंडे के क्षेत्र के बजाय आउटपुट में कहीं और दिखाए जाते हैं]


2
ढेर एक्सचेंज पर प्लेजरिज्म की अनुमति नहीं है । कृपया इस पोस्ट को संपादित करके स्पष्ट करें कि आपने लिंक की गई साइट से सामग्री की प्रतिलिपि बनाई है। धन्यवाद।
क्रिस एस

4

मैं स्वयं केवल SYN पैकेट प्राप्त करना चाहता था, मैंने निम्नलिखित कमांड का उपयोग किया:

tcpdump -i eth7 'tcp[13] & 2 != 0'

यह आपके लिए सीधा काम करना चाहिए।


3
यह SYN ध्वज सेट के साथ SYN, SYN-ACK, आदि सहित किसी भी पैकेट को कैप्चर करेगा। यदि आप केवल SYN पैकेट चाहते हैं, तो इसके बजाय 'tcp [13] == 2' का उपयोग करें। चीयर्स!
JJC

1

यह उन्हें बिना किसी फ़िल्टर या तर्क के दिखाना चाहिए।


आपका उत्तर तकनीकी रूप से सही है, लेकिन ओपी को संभवतः अपने प्रश्न में "केवल" शब्द शामिल करना था। ;-) चीयर्स!
JJC
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.