O que é NGREP e como usá -lo?

O que é NGREP e como usá -lo?
Embora Tshark e TCPDump sejam as ferramentas de fungamento de pacotes mais populares que cavam até o nível de bits e bytes do tráfego. O NGREP é outro utilitário Nix da linha de comando que analisa pacotes de rede e as procura em um determinado padrão de regex.

O utilitário usa a biblioteca PCAP e GNU para executar pesquisas de string regex. NGREP significa Grep de rede que é semelhante ao utilitário Grep regular. A única diferença é que o NGREP analisa o texto em pacotes de rede usando expressões regulares ou hexadecimais.

Neste artigo, aprendemos sobre um utilitário de linha de comando, rico em recursos, conhecido como NGREP, que é útil para análise rápida de PCAP e dumping de pacotes.

Introdução

O NGREP fornece recursos do tipo grep para a terceira camada do modelo OSI, ou seja, atualmente, a ferramenta funciona com protocolos IPv4/6, TCP, UDP, ICMPV4/6, IGMP. Portanto, o utilitário reconhece vários protocolos, captura o tráfego ao vivo e examina arquivos PCAP capturados. A melhor vantagem do utilitário NGREP é que um usuário de Grep regular pode usar seu texto que analisa o conhecimento do NGREP.

Começando

Atualize o repositório do Ubuntu e instale o utilitário NGREP via ferramenta de gerenciamento de pacotes apt-get:

ubuntu@ubuntu: ~ update APT-Get Apt-Get
ubuntu@ubuntu: ~ $ sudo apt-get install nGrep

A ferramenta exige que os sudo-privilegiças executem comandos de inspeção de pacotes profundos. Enquanto a sintaxe da ferramenta geral é a seguinte:

ubuntu@ubuntu: ~ $ ngrep padrão/expressão

O padrões Os usuários de expressão regulares pesquisam em um pacote de rede. O filtro Opção Indica Berkeley Packet Filter (BPF) que inclui uma série de palavras -chave para especificar regras de seleção de pacotes. As palavras -chave incluem protocolo, origem ou host de destino e portas, etc.

Capture pacotes

Nenhuma opção de filtro captura todos os pacotes da interface padrão, por exemplo, o seguinte comando capturará todos os pacotes de rede de todas as interfaces.

ubuntu@ubuntu: ~ $ sudo ngrep

Para listar todas as interfaces disponíveis, use o seguinte comando e pressione TAB várias vezes para produzir todas as interfaces:

ubuntu@ubuntu: ~ $ sudo ngrep -d [tab] [tab]
ENP0S3 LO

Uso básico

A saída para o comando acima mostra cargas de detalhes do pacote no terminal. O NGREP oferece uma opção silenciosa "-q" que consulta todas as interfaces e protocolos para uma correspondência específica de string, acalma a saída e imprime os detalhes do cabeçalho do pacote da carga útil relevante.

ubuntu@ubuntu: ~ $ sudo ngrep -q
[sudo] Senha para Ubuntu:
Interface: ENP0S3 (10.0.2.0/255.255.255.0)
filtro: ((ip || ip6) || (vlan && (ip || ip6)))
T 10.0.2.15: 35524 -> 142.250.180.46: 443 [AP] #1
... "7c.X] e.Nu… m.'.Você… e… você.%z…
T 10.0.2.15: 35524 -> 142.250.180.46: 443 [AP] #2
... H ... '.@aq?um.'K…
T 142.250.180.46: 443 -> 10.0.2.15: 35524 [a] #4
..

O comando acima com a string 'http' exibe/captura pacotes com a string pesquisada.

ubuntu@ubuntu: ~ $ sudo ngrep -q 'http'

Adicione a bandeira t no comando acima para imprimir um registro de data e hora com as informações de correspondência no Aaaa/mm/dd hh: mm: ss.Uuuuuu formatar. Da mesma forma, usando o T A bandeira imprimirá o tempo decorrido entre correspondências imediatas e registros de data e hora em +s.Formato Uuuuuu.

ubuntu@ubuntu: ~ $ sudo ngrep -qt 'http'
ubuntu@ubuntu: ~ $ sudo ngrep -qt 'http'
Interface: ENP0S3 (10.0.2.0/255.255.255.0)
filtro: ((ip || ip6) || (vlan && (ip || ip6)))
Correspondência: http
T +24.714768 10.0.2.15: 48096 -> 142.250.185.35:80 [AP] #1453
POST /GTS1O1CORE HTTP /1.1… Host: OCSP.PKI.GOOG… User-Agent: Mozilla/5.0

Use o -C opção com um byline sinalizador para imprimir a saída em um formato fácil de entender e legível.

ubuntu@ubuntu: ~ $ sudo ngrep -q -wbyline 'http'
T 10.0.2.15: 48570 -> 142.250.185.35:80 [AP] #589
POST /GTS1O1CORE HTTP /1.1.
Host: OCSP.PKI.Goog.
Agente de usuário: mozilla/5.0 (x11; Ubuntu; Linux x86_64; RV: 79.0) Gecko/20100101 Firefox/79.0.
Aceitar: */*.
Aceitar-Language: en-us, en; q = 0.5.
Aceitar-se-codificador: Gzip, esvaziar.
Tipo de conteúdo: Application/OCSP-Request.
Comprimento de conteúdo: 83.
Conexão: Keep-alive.

NGREP salva o tráfego de rede capturado em um formato PCAP que pode ser carregado no Wireshark para análise de pacotes mais profunda. Use a opção -o para escrever a saída pesquisada em um arquivo PCAP:

ubuntu@ubuntu: ~ $ ngrep -o http_capture.pcap -qt 'http'

Assim como qualquer outra ferramenta de cheirar de rede, o NGREP permite a leitura do tráfego de rede salvo, de modo que a opção -qt ajude a filtrar o tráfego capturado em vez de uma interface.

ubuntu@ubuntu: ~ $ ngrep -i http_capture.pcap -qt 'http'

Filtros BPF

O BPF inclui sintaxe rica para filtrar pacotes com base em endereço IP, portas e protocolos. Os seguintes comandos pesquisam o tráfego para pacotes TCP e UDP:

ubuntu@ubuntu: ~ $ ngrep -w byline 'http' 'tcp'
ubuntu@ubuntu: ~ $ ngrep -w byline 'http' 'udp'

Para filtrar todos os pacotes na interface ENP0S3 para a porta 80, execute o seguinte comando:

ubuntu@ubuntu: ~ $ ngrep -d enp0s3 -w byline Port 80

Da mesma forma, use os comandos abaixo para corresponder aos cabeçalhos que contêm string http do host de destino e origem:

ubuntu@ubuntu: ~ $ ngrep -q 'http' 'dst host 172.217 '
ubuntu@ubuntu: ~ $ ngrep -q 'http' 'src host '10.0 '

Por fim, o comando a seguir com um filtro de host corresponde a todos os cabeçalhos do “10.0.Endereço IP de 2 ”.

ubuntu@ubuntu: ~ $ ngrep -q 'http' 'host 10.0.2 '

Pesquisa de pacotes de rede baseada em cordas

O utilitário NGREP pode combinar os comandos acima para pesquisar pacotes TCP na porta 80 para uma sequência específica de 'usuário-agente'.

ubuntu@ubuntu: ~ $ sudo ngrep -d enp0s3 -w byline -i "user -agent:" tcp e porta 80

onde -eu a opção ignora o caso da expressão regex.

Da mesma forma, o comando abaixo exibe todos os pacotes na porta 80 com a string get ou post.

ubuntu@ubuntu: ~ sudo ngrep -d enp0s3 -i "^get |^post" tcp e porta 80
Interface: ENP0S3 (10.0.2.0/255.255.255.0)
Filtro: (TCP e Porta 80) e ((IP || IP6) || (VLAN && (IP || IP6)))
Match: ^Get | ^Post
#######
T 10.0.2.15: 59876 -> 34.122.121.32:80 [AP] #7
Get / HTTP / 1.1… Host: Connectivity-check.Ubuntu.com… Aceite:
##########
T 10.0.2.15: 48634 -> 34.107.221.82:80 [AP] #18
Obter /sucesso.txt http/1.1… Host: Detectportal.Raposa de fogo.com… User-Agent: Mozilla/5.0
#######

Conclusão

O artigo apresenta o NGREP, uma ferramenta de cheirar de pacotes que analisa o tráfego usando expressões regulares. Discutimos e abordamos todos os princípios básicos para avançar comandos e opções do NGREP que facilitam os administradores de rede em suas tarefas diárias.