NGREP - Um analisador de pacote de rede para Linux

NGREP - Um analisador de pacote de rede para Linux

NGREP (Network Grep) é um analisador de pacotes de rede simples e poderoso. É uma ferramenta tipo grep aplicada à camada de rede - corresponde ao tráfego que passa por uma interface de rede. Ele permite que você especifique uma expressão regular ou hexadecimal estendida para corresponder às cargas úteis de dados (as informações ou mensagens reais nos dados transmitidos, mas não nos metadados gerados automaticamente) dos pacotes.

Esta ferramenta funciona com vários tipos de protocolos, incluindo IPv4/6, TCP, UDP, ICMPV4/6, IGMP e RAW em várias interfaces. Ele opera da mesma maneira que a ferramenta de fungamento de pacote TCPDUMP.

O pacote NGREP está disponível para instalação a partir dos repositórios padrão do sistema nas distribuições de Linux convencionais usando a ferramenta de gerenciamento de pacotes, como mostrado.

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

Depois de instalar NGREP, Você pode começar a analisar o tráfego em sua rede Linux usando os seguintes exemplos.

1. O comando a seguir ajudará você a combinar todas as solicitações de ping na interface de trabalho padrão. Você precisa abrir outro terminal e tentar ping em outra máquina remota. O -q Flag Tell NGREP trabalhar em silêncio, para não produzir nenhuma informação além dos cabeçalhos de pacotes e suas cargas úteis.

$ sudo ngrep -q '."ICMP ' Interface: ENP0S3 (192.168.0.0/255.255.255.0) filtro: (icmp) e ((ip || ip6) || (vlan && (ip || ip6)) corresponde: . 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 

Você pode pressionar Ctrl + c para encerrá -lo.

2. Para combinar apenas o tráfego que vai a um site de destino específico, por exemplo 'Google.com ', Execute o seguinte comando e tente acessá -lo de um navegador.

$ sudo ngrep -q '."Host Google.com ' Interface: ENP0S3 (192.168.0.0/255.255.255.0) Filtro: (Host Google.com) e ((ip || ip6) || (vlan && (ip || ip6)) corresponde: . T 172.217.160.174: 443 -> 192.168.0.103: 54008 [AP]…;.(… Rzr… $… s =… l.Q+r.Você… 4… g.J… i,.L…: y.a,… c 5> [email protegido] 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 protegido] 

3. Se você estiver navegando na web, execute o seguinte comando para monitorar quais arquivos o navegador está solicitando:.

$ sudo ngrep -q '^obtenha .* Http/1.[01] ' Interface: ENP0S3 (192.168.0.0/255.255.255.0) filtro: ((ip || ip6) || (vlan && (ip || ip6)) corresponde: ^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; texto)… Aceite:*/*… Aceite-Language: pt,*; q = 0.1… Aceitar-codificação: gzip, esvaziar, bzip2… aceitar-teset: 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  

4. Para ver toda a fonte de cruzamento de atividades ou porta de destino 25 (Smtp), execute o seguinte comando.

$ sudo ngrep porta 25 

5. Para monitorar qualquer tráfego syslog baseado em rede para a ocorrência da palavra "erro", Use o seguinte comando.

 $ sudo ngrep -d qualquer porta 'erro' 514 

É importante ressaltar que essa ferramenta pode converter nomes de portas de serviço armazenados em “/Etc/serviços” (em sistemas semelhantes a Unix, como o Linux) para números de porta. Este comando é equivalente ao comando acima.

$ sudo ngrep -d qualquer syslog port 'error' 

6. Você também pode executar o NGREP contra um Http porta do servidor 80), ele corresponderá a todas as solicitações ao host de destino, como mostrado.

$ sudo ngrep porta 80 Interface: eth0 (64.90.164.72/255.255.255.252) Filtro: IP e (Porta 80) #### T 67.169.59.38: 42167 -> 64.90.164.74:80 [AP] GET / HTTP / 1.1… agente de usuário: mozilla/4.0 (compatível; msie 6.0; X11; Linux I 686) Opera 7.21 [en]… anfitrião: www.Darkridge.com… Aceitar: texto/html, aplicat ion/xml; q = 0.9, aplicação/xhtml+xml; q = 0.9, imagem/png, imagem/jpeg, imagem/gi f, imagem/x-xbitmap, */ *; q = 0.1… Aceitar-Charset: ISO-8859-1, UTF-8, UTF-16, *; Q = 0.1… aceitar o codificação: deflate, gzip, x-gzip, identidade, *; q = 0… cookie: sq msessid = 5272f9ae21c07eca4dfd75f9a3cda22e… cookie2: $ versão: 1… conexão: alive, te… te: deflate, sflate, gzp, gzp, gzp, gzip, gziP, 1…: Empresa, identidade, reboques ... ## 

Como você pode ver na saída acima, todos os cabeçalhos HTTP são exibidos em seus detalhes sangrentos. É difícil analisar, então vamos assistir o que acontece quando você se aplicar -C Modo de byline.

$ sudo ngrep -w byline Port 80 Interface: eth0 (64.90.164.72/255.255.255.252) Filtro: IP e (Porta 80) #### T 67.169.59.38: 42177 -> 64.90.164.74:80 [AP] GET / HTTP / 1.1. Agente de usuário: mozilla/4.0 (compatível; msie 6.0; X11; Linux i686) Opera… Host: www.Darkridge.com. Aceitar: texto/html, aplicação/xml; q = 0.9, aplicação/xhtml+xml; q = 0.9… Aceitar-Charset: ISO-8859-1, UTF-8, UTF-16, *; q = 0.1. Aceitar-se-codificador: deflate, gzip, x-gzip, identidade, *; q = 0. Cookie: sqmessid = 5272f9ae21c07eca4dfd75f9a3cda22e. Cookie2: $ versão = 1. Controle de cache: sem cache. Conexão: Keep-Alive, TE. TE: Deflate, Gzip, Chunked, Identidade, Trailers. 

7. Para imprimir um Timestamp na forma de Aaaa/mm/dd hh: mm: ss.Uuuuuu Toda vez que um pacote é comparado, use o -t bandeira.

$ sudo ngrep -t -w byline Port 80 Interface: ENP0S3 (192.168.0.0/255.255.255.0) filtro: (porta 80) e ((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. Agente de usuário: links (2.13; Linux 4.17.6-1.EL7.Elrepo.x86_64 x86_64; GNU C 4.8.5; texto). Aceitar: */*. Aceitar-Language: pt,*; q = 0.1. Acepção de aceitação: gzip, esvaziar, bzip2. Aceitar-Charset: US-ASCII, ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, UTF-8. Conexão: Keep-alive. 

8. Para evitar colocar a interface sendo monitorada no modo promíscuo (onde ele intercepta e lê cada pacote de rede que chega em sua totalidade), adicione o -p bandeira.

$ sudo ngrep -p -w byline Port 80 

9. Outra opção importante é -N o que é útil caso você esteja observando protocolos brutos ou desconhecidos. Diz NGREP Para exibir o número do subprotocolo, juntamente com o identificador de caracteres únicos.

$ sudo ngrep -n -w byline 

Para mais informações, consulte o NGREP página de homem.

$ MAN NGREP 

NGREP Github Repository: https: // github.com/jpr5/nGrep

Isso é tudo! NGREP (Network Grep) é um analisador de pacotes de rede que entende a lógica do filtro BPF da mesma maneira tcpdump. Gostaríamos de saber seus pensamentos sobre NGREP Na seção de comentários.