एनक्रेप - लिनक्स के लिए एक नेटवर्क पैकेट विश्लेषक


Ngrep ( नेटवर्क grep ) एक सरल लेकिन शक्तिशाली नेटवर्क पैकेट विश्लेषक है। यह एक grep जैसा उपकरण है जिसे नेटवर्क लेयर पर लागू किया जाता है - यह नेटवर्क इंटरफ़ेस पर गुजरने वाले ट्रैफ़िक से मेल खाता है। यह आपको पैकेटों के डेटा पेलोड (वास्तविक जानकारी या संदेश, लेकिन ऑटो-जेनरेटेड मेटाडेटा नहीं) के विरुद्ध मेल करने के लिए एक विस्तारित नियमित या हेक्साडेसिमल अभिव्यक्ति निर्दिष्ट करने की अनुमति देता है।

यह उपकरण विभिन्न प्रकार के प्रोटोकॉल के साथ काम करता है, जिसमें आईपीवी 4/6, टीसीपी, यूडीपी, आईसीएमपीवी 4/6, आईजीएमपी और साथ ही कई इंटरफेस शामिल हैं। यह उसी तरीके से संचालित होता है जैसे tcpdump पैकेट सूँघने का उपकरण।

पैकेज ngrep मुख्य लिनक्स वितरण में डिफ़ॉल्ट सिस्टम रिपोजिटरी से स्थापित करने के लिए उपलब्ध है, जैसा कि पैकेज प्रबंधन उपकरण का उपयोग करके दिखाया गया है।

$ sudo apt install ngrep
$ sudo yum install ngrep
$ sudo dnf install ngrep

ngrep स्थापित करने के बाद, आप निम्न उदाहरणों का उपयोग करके अपने लिनक्स नेटवर्क पर यातायात का विश्लेषण शुरू कर सकते हैं।

1। निम्न आदेश आपको डिफ़ॉल्ट कामकाजी इंटरफ़ेस पर सभी पिंग अनुरोधों से मेल खाने में मदद करेगा। आपको एक और टर्मिनल खोलने और किसी अन्य दूरस्थ मशीन को पिंग करने का प्रयास करने की आवश्यकता है। पैकेट हेडर और उनके पेलोड के अलावा किसी भी जानकारी को आउटपुट नहीं करने के लिए -q ध्वज बताता है कि ngrep चुपचाप काम करता है।

$ sudo ngrep -q '.' 'icmp'

interface: enp0s3 (192.168.0.0/255.255.255.0)
filter: ( icmp ) and ((ip || ip6) || (vlan && (ip || ip6)))
match: .

I 192.168.0.104 -> 192.168.0.103 8:0
  ]...~oG[....j....................... !"#$%&'()*+,-./01234567                                                                                                             

I 192.168.0.103 -> 192.168.0.104 0:0
  ]...~oG[....j....................... !"#$%&'()*+,-./01234567                                                                                                             

I 192.168.0.104 -> 192.168.0.103 8:0
  ]....oG[............................ !"#$%&'()*+,-./01234567                                                                                                             

I 192.168.0.103 -> 192.168.0.104 0:0
  ]....oG[............................ !"#$%&'()*+,-./01234567  

इसे समाप्त करने के लिए आप Ctrl + C दबा सकते हैं।

2। किसी विशेष गंतव्य स्थल पर जाने वाले केवल ट्रैफ़िक से मेल खाने के लिए, उदाहरण के लिए strong google.com ', निम्न कमांड चलाएँ, फिर इसे ब्राउज़र से एक्सेस करने का प्रयास करें।

$ sudo ngrep -q '.' 'host google.com'

interface: enp0s3 (192.168.0.0/255.255.255.0)
filter: ( host google.com ) and ((ip || ip6) || (vlan && (ip || ip6)))
match: .

T 172.217.160.174:443 -> 192.168.0.103:54008 [AP]
  ..................;.(...RZr..$....s=..l.Q+R.U..4..g.j..I,.l..:{y.a,....C{5>[email                                                                        

T 172.217.160.174:443 -> 192.168.0.103:54008 [AP]
  .............l.......!,0hJ....0.%F..!...l|.........PL..X...t..T.2DC..... ..y...~Y;[email 

3। यदि आप वेब सर्फिंग कर रहे हैं, तो यह देखने के लिए निम्नलिखित कमांड चलाएं कि आपका ब्राउज़र कौन सी फाइल का अनुरोध कर रहा है:।

$ sudo ngrep -q '^GET .* HTTP/1.[01]'

interface: enp0s3 (192.168.0.0/255.255.255.0)
filter: ((ip || ip6) || (vlan && (ip || ip6)))
match: ^GET .* HTTP/1.[01]

T 192.168.0.104:43040 -> 172.217.160.174:80 [AP]
  GET / HTTP/1.1..Host: google.com..User-Agent: Links (2.13; Linux 4.17.6-1.el7.elrepo.x86_64 x86_64; 
  GNU C 4.8.5; text)..Accept: */*..Accept-Language: en,*;q=0.1..Accept-
  Encoding: gzip, deflate, bzip2..Accept-Charset: us-ascii,ISO-8859-1,ISO-8859-2,ISO-8859-3,ISO-8859-4,
  ISO-8859-5,ISO-8859-6,ISO-8859-7,ISO-8859-8,ISO-8859-9,ISO-8859-10,I
  SO-8859-13,ISO-8859-14,ISO-8859-15,ISO-8859-16,windows-1250,windows-1251,windows-1252,windows-1256,
  windows-1257,cp437,cp737,cp850,cp852,cp866,x-cp866-u,x-mac,x-mac-ce,x-
  kam-cs,koi8-r,koi8-u,koi8-ru,TCVN-5712,VISCII,utf-8..Connection: keep-alive.... 

4। सभी गतिविधि पार करने के स्रोत या गंतव्य पोर्ट देखने के लिए 25 ( SMTP ), निम्न कमांड चलाएँ।

$ sudo ngrep port 25

5। शब्द की घटना के लिए किसी भी नेटवर्क-आधारित syslog यातायात की निगरानी के लिए "त्रुटि" , निम्न आदेश का उपयोग करें।

 
$ sudo ngrep -d any 'error' port 514

महत्वपूर्ण रूप से, यह टूल पोर्ट नंबरों में संग्रहीत सेवा पोर्ट नामों को "/ etc/सेवाओं" (यूनिक्स जैसे सिस्टम पर) में बदल सकता है। यह कमांड उपरोक्त कमांड के बराबर है।

$ sudo ngrep -d any 'error' port syslog

6। आप एक HTTP सर्वर (पोर्ट 80 ) के खिलाफ भी चला सकते हैं, यह दिखाए गए गंतव्य होस्ट के सभी अनुरोधों से मेल खाएगा।

$ sudo ngrep port 80

interface: eth0 (64.90.164.72/255.255.255.252)
filter: ip and ( port 80 )
####
T 67.169.59.38:42167 -> 64.90.164.74:80 [AP]
  GET / HTTP/1.1..User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i
  686) Opera 7.21  [en]..Host: www.darkridge.com..Accept: text/html, applicat
  ion/xml;q=0.9, application/xhtml+xml;q=0.9, image/png, image/jpeg, image/gi
  f, image/x-xbitmap, */*;q=0.1..Accept-Charset: iso-8859-1, utf-8, utf-16, *
  ;q=0.1..Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0..Cookie: SQ
  MSESSID=5272f9ae21c07eca4dfd75f9a3cda22e..Cookie2: $Version=1..Connection:
  Keep-Alive, TE..TE: deflate, gzip, chunked, identity, trailers....
##

जैसा कि आप उपरोक्त आउटपुट में देख सकते हैं कि सभी HTTP हेडर ट्रांसमिशन उनके गोर विस्तार में प्रदर्शित किए गए हैं। हालाँकि यह पार्स करना मुश्किल है, इसलिए आइए देखें कि जब आप लागू करते हैं तो क्या होता है -W byline मोड।

$ sudo ngrep -W byline port 80

interface: eth0 (64.90.164.72/255.255.255.252)
filter: ip and ( port 80 )
####
T 67.169.59.38:42177 -> 64.90.164.74:80 [AP]
GET / HTTP/1.1.
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686) Opera ...
Host: www.darkridge.com.
Accept: text/html, application/xml;q=0.9, application/xhtml+xml;q=0.9 ...
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1.
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0.
Cookie: SQMSESSID=5272f9ae21c07eca4dfd75f9a3cda22e.
Cookie2: $Version=1.
Cache-Control: no-cache.
Connection: Keep-Alive, TE.
TE: deflate, gzip, chunked, identity, trailers.

7। YYYY/MM/DD HH: MM: SS.UUUUUU के रूप में प्रिंट करने के लिए हर बार एक पैकेट से मिलान होने पर, -t ध्वज का उपयोग करें।

$ sudo ngrep -t -W byline port 80

interface: enp0s3 (192.168.0.0/255.255.255.0)
filter: ( port 80 ) and ((ip || ip6) || (vlan && (ip || ip6)))
####
T 2018/07/12 16:33:19.348084 192.168.0.104:43048 -> 172.217.160.174:80 [AP]
GET / HTTP/1.1.
Host: google.com.
User-Agent: Links (2.13; Linux 4.17.6-1.el7.elrepo.x86_64 x86_64; GNU C 4.8.5; text).
Accept: */*.
Accept-Language: en,*;q=0.1.
Accept-Encoding: gzip, deflate, bzip2.
Accept-Charset: us-ascii,ISO-8859-1,ISO-8859-2,ISO-8859-3,ISO-8859-4,ISO-8859-5,utf-8.
Connection: keep-alive.

8। इंटरफ़ेस को प्रॉम्पस मोड में मॉनिटर किए जाने से बचने के लिए (जहां यह प्रत्येक नेटवर्क पैकेट को अपनी संपूर्णता में आता है, जिसे इंटरसेप्ट और रीड करता है), -p फ्लैग जोड़ें।

$ sudo ngrep -p -W byline port 80

9। एक अन्य महत्वपूर्ण विकल्प है -N जो आपके द्वारा कच्चे या अज्ञात प्रोटोकॉल का पालन करने की स्थिति में उपयोगी है। यह एकल-वर्ण पहचानकर्ता के साथ उप-प्रोटोकॉल संख्या प्रदर्शित करने के लिए ngrep बताता है।

$ sudo ngrep -N -W byline

अधिक जानकारी के लिए, ngrep मैन पेज देखें।

$ man ngrep

ngrep गितुब भंडार: https://github.com/jpr5/ngrep

बस इतना ही! Ngrep ( नेटवर्क grep ) एक नेटवर्क पैकेट विश्लेषक है जो उसी फैशन tcpdump में BPF फ़िल्टर तर्क को समझता है। हम टिप्पणी अनुभाग में ngrep के बारे में आपके विचार जानना चाहेंगे।