ngrep - Usa ka Network Packet Analyzer alang sa Linux


Ang Ngrep (network grep) usa ka yano apan gamhanan nga network packet analyzer. Kini usa ka himan nga sama sa grep nga gipadapat sa layer sa network - kini katumbas sa trapiko nga moagi sa usa ka interface sa network. Gitugotan ka niini nga ipiho ang usa ka gipalawig nga regular o hexadecimal nga ekspresyon aron ipares sa mga payload sa datos (ang aktuwal nga kasayuran o mensahe sa gipasa nga datos, apan dili awtomatiko nga nahimo nga metadata) sa mga pakete.

Kini nga himan nagtrabaho uban sa lain-laing mga matang sa mga protocol, lakip na ang IPv4/6, TCP, UDP, ICMPv4/6, IGMP ingon man sa Raw sa usa ka gidaghanon sa mga interface. Naglihok kini sa parehas nga paagi sama sa tcpdump packet sniffing tool.

Ang package nga ngrep magamit aron ma-install gikan sa default nga mga repositoryo sa sistema sa mainstream nga mga distribusyon sa Linux gamit ang tool sa pagdumala sa package sama sa gipakita.

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

Human sa pag-instalar sa ngrep, mahimo ka magsugod sa pag-analisar sa trapiko sa imong Linux network gamit ang mosunod nga mga pananglitan.

1. Ang mosunod nga sugo makatabang kanimo sa pagpares sa tanang hangyo sa ping sa default working interface. Kinahanglan ka nga mag-abli sa laing terminal ug mosulay sa pag-ping sa laing hilit nga makina. Ang -q nga bandera nagsulti sa ngrep nga molihok nga hilom, aron dili magpagawas ug bisan unsang impormasyon gawas sa mga packet header ug ilang mga payload.

$ 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  

Mahimo nimong pindota ang Ctrl + C aron tapuson kini.

2. Aron ipares lang ang trapiko nga moadto sa usa ka partikular nga destinasyon nga site, pananglitan ang 'google.com', padagana ang mosunod nga sugo, unya sulayi nga ma-access kini gikan sa browser.

$ 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. Kung nag-surf ka sa web, dayon padagana ang mosunod nga command aron mamonitor kung unsang mga file ang gihangyo sa imong browser:.

$ 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. Aron makita ang tanang kalihokan sa pagtabok sa tinubdan o destinasyon nga pantalan 25 (SMTP), padagana ang mosunod nga sugo.

$ sudo ngrep port 25

5. Aron ma-monitor ang bisan unsang network-based syslog traffic para sa pagtungha sa pulong \error, gamita ang mosunod nga sugo.

 
$ sudo ngrep -d any 'error' port 514

Importante, kini nga himan makahimo sa pag-convert sa mga ngalan sa pantalan sa serbisyo nga gitipigan sa \/etc/services (sa mga sistema nga sama sa Unix sama sa Linux) ngadto sa mga numero sa pantalan. Kini nga sugo katumbas sa sugo sa ibabaw.

$ sudo ngrep -d any 'error' port syslog

6. Ikaw mahimo usab nga modagan ngrep batok sa usa ka HTTP server (port 80), kini motakdo sa tanan nga mga hangyo ngadto sa destinasyon host sama sa gipakita.

$ 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....
##

Sama sa imong makita sa ibabaw nga output ang tanan nga HTTP header transmission gipakita sa ilang madugo nga detalye. Bisan pa, lisud ang pag-parse, busa tan-awon naton kung unsa ang mahitabo kung imong i-apply ang -W byline mode.

$ 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. Sa pag-imprenta og timestamp sa porma sa YYYY/MM/DD HH:MM:SS.UUUUUU matag higayon nga ang usa ka packet ipares, gamita ang -t flag.

$ 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. Aron malikayan ang pagbutang sa interface nga gimonitor ngadto sa promiscuous mode (diin kini mo-intercept ug mobasa sa matag network packet nga moabot sa kinatibuk-an), idugang ang -p flag.

$ sudo ngrep -p -W byline port 80

9. Laing importante nga kapilian mao ang -N nga mapuslanon kung ikaw nag-obserbar sa hilaw o wala mailhi nga mga protocol. Gisultihan niini ang ngrep nga ipakita ang numero sa sub-protocol kauban ang usa ka karakter nga identifier.

$ sudo ngrep -N -W byline

Para sa dugang nga impormasyon, tan-awa ang ngrep man page.

$ man ngrep

ngrep Github repository: https://github.com/jpr5/ngrep

Kana lang! Ang Ngrep (network grep) usa ka network packet analyzer nga nakasabut sa BPF filter logic sa parehas nga paagi nga tcpdump. Gusto namon mahibal-an ang imong mga hunahuna bahin sa ngrep sa seksyon sa mga komento.