Introdução
A solução de problemas de rede geralmente requer o uso de um sniffer, e muitos administradores de rede acessam automaticamente o tcpdump, que é útil em muitas plataformas. Com o crescente número de protocolos suportados no IP, os administradores geralmente precisam analisar mais a carga útil dos pacotes para garantir que aplicativos ou usuários estejam fornecendo as informações esperadas pela pilha IP receptora.
O ngrep é um sniffer que pode ser usado como o tcpdump, e fornece a capacidade adicional de “grepping” a carga útil do pacote para correspondências específicas. O suporte expresso regular do ngrep tenta oferecer suporte à versão GNU do grep, que oferece muitos recursos avançados, como linhas de impressão após a expressão correspondente.
ngrep está disponível em:
e requer libpcap, disponível no site tcpdump:
A libpcap já está em sistemas com o tcpdump instalado. A instalação do ngrep é simples – normalmente uma instalação configure, make e make o fará funcionar. Como ele usa libpcap, uma grande variedade de interfaces e sistemas operacionais são suportados.
Usar
O ngrep, como o tcpdump, pode ser usado para imprimir pacotes que correspondem a um protocolo específico. Por exemplo, você pode usar o seguinte para imprimir todos os pacotes UDP:
ngrep ” udp
pacotes ICMP ou com:
ngrep ” icmp
Portas específicas podem ser usadas. Por exemplo, o sistema de nomes de domínio (DNS) usa portas TCP ou UDP 53, portanto:
ngrep ” porta 53
mostrará todas as solicitações de DNS, como essa solicitação de [http://www.mcWrite.net]
U 192.168.1.100:1034 -> 4.2.2.1:53
: …………[http://www.samag.com….].
#
U 4.2.2.1:53 -> 192.168.1.100:1034
: …………[http://www.mcwrite.net…………………………..!.%……….].
..A.ROOT-SERVERS.NET ………….. E.GTLD-SERVERS.X …………. Fk. ….. …… Jk ………… Kk ………… Ak ………… Mk …. …… Gk ……
…… C.k …………. I.k …………. B.k …………. D
.kI …… o …) … i ……} ….. QE …………… C …. …. ‘> …. de …….. f ……
……… POR …). & ……… * …. re …….. “….). E … …………………. Y … $ ……..
..07 …. j ……………..;
enquanto a porta 23 do ngrep ” tcp imprimirá pacotes telnet. (Para determinar as portas apropriadas, verifique / etc / services ou consulte a Autoridade de números atribuídos da Internet em: http://www.iana.org/assignments/port-numbers.)
Para solucionar problemas de tráfego de navegação da Microsoft no domínio NT BIGWORLD, você pode usar:
ngrep ” porta 138
U 192.168.1.101:138 -> 192.168.1.255:138
……. e …… EOFFENECEFFCDJCACACACACACACACAAA. ABACFPFPENFDECFCEPFHF
DEFFPFPACAB..SMB% ………………………… (………….. ….. (.V
……… 9.MAILSLOTBROWSE …. ‘.. BIGWORLD ……….. @ ….. NÚMERO8.
Mas, para realmente aproveitar o ngrep, basta pegar o tráfego do LILWORLD:
ngrep porta ‘LILWORLD’ 138
###################################
U 192.168.1.101:138 -> 192.168.1.255:138
……. e …… EOFFENECEFFCDJCACACACACACACACAAA. ABACFPFPENFDECFCEPFHF
DEFFPFPACAB..SMB% ………………………… (………….. ….. (.V
……… 9.MAILSLOTBROWSE …. ‘.. LILWORLD ……….. @ ….. NÚMERO9.
Pode ser muito difícil solucionar problemas com o tcpdump em uma rede maior.
O email
O protocolo simples de transporte de correio (SMTP) é um protocolo baseado em ASCII, portanto o ngrep pode ser útil para solucionar problemas de email SMTP. Por exemplo, para monitorar a entrega atual e imprimir remetente e destinatários, use:
ngrep -iq ‘rcpt para | mail da’ porta 25 tcp
T 192.168.1.254:1043 -> 206.46.170.36:25 [AP]
CORREIO De: SIZE = 42 ..
T +63.769851 192.168.1.254:1043 -> 206.46.170.36:25 [AP]
RCPT para: ..
T 192.168.1.254:1043 -> 206.46.170.36:25 [AP]
RCPT para: ..
Isso pode ser útil para identificar o remetente dos vírus de email populares recentes que lêem os catálogos de endereços do Outlook e os enviam para outros usuários.
A versão 3 do protocolo postal (POP3) também pode ser testada da mesma maneira que o SMTP. Por exemplo, se é possível que o usuário esteja digitando incorretamente o nome do usuário:
porta 110 do usuário do ngrep
T 192.168.1.100:1889 -> 192.168.1.1:110 [AP]
teste do usuário ..
ICMP
A maioria das soluções de problemas do ICMP pode ser obtida com os comandos ping, mas existem diferentes implementações de ping. Por exemplo, os sistemas operacionais Microsoft preenchem a carga útil do ICMP com o alfabeto, para que você possa determinar se um host que está executando ping é realmente uma máquina Windows com:
ngrep -q ‘abcd’ icmp
I 192.168.1.100 -> 192.168.1.254 8: 0
…. abcdefghijklmnopqrstuvwabcdefghi
Rede
O protocolo de transporte de hipertexto (HTTP) é baseado em texto e compartilha todos os tipos de informações entre o servidor e o cliente. Por exemplo, para determinar o aplicativo cliente que o host do cliente está executando, use:
ngrep -iq ‘user-agent’ porta tcp 80
(Na verdade, o HTTP também requer uma versão do udp, mas ela nunca pegou.)
Este caso específico mostra que o usuário está usando o lynx:
T 192.168.1.254:1065 -> 64.4.43.7:80 [AP]
GET / HTTP / 1.0..Host: [http://www.hotmail.com..Accept:] text / html, text / plain,
áudio / mod, imagem / *, vídeo / *, vídeo / mpeg, aplicativo / pgp, aplicativo /
pgp, aplicativo / pdf, mensagem / parcial, mensagem / corpo externo, aplicativo
íon / postscript, x-be2, aplicativo / inserção de andrew, texto / richtext, texto / e
nriched .. Aceitar: x-sun-attachment, arquivo de áudio, arquivo postscript, padrão
t, arquivo de correio, mensagem de mesa de sol, aplicativo / x-metamail-patch, texto /
sgml, * / *; q = 0,01 .. Codificação de Aceitação: gzip, compress .. Linguagem de Aceitação: pt
Agente do usuário: Lynx / 2.8.3dev.18 libwww-FM / 2.14 ….
Obviamente, a versão do HTTP que está sendo usada pode ser determinada usando “HTTP” como expressão de pesquisa ou o servidor sendo executado usando “SERVER” como expressão. Alguns ataques em servidores da Web tentam solicitar documentos com pontos como o nome do arquivo, como ../. O ngrep também pode verificar estes:
ngrep ‘../’
T 192.168.1.100:1103 -> 10.1.1.1:80 [AP]
GET /../ HTTP / 1.0..Host: [http://www.somedomain.to..Accept:] texto / html, texto
/ simples, áudio / mod, imagem / *, vídeo / *, vídeo / mpeg, aplicativo / pgp, appl
documentação / pgp, aplicativo / pdf, mensagem / parcial, mensagem / corpo externo,
application / postscript, x-be2, application / andrew-inset, texto / richtext
, texto / enriquecido .. Aceitar: x-sun-attachment, arquivo de áudio, arquivo postscript
, padrão, arquivo de mensagens, sun-deskset-message, application / x-metamail-patc
h, texto / sgml, vídeo / mpeg, imagem / jpeg, imagem / tiff, imagem / x-rgb, imagem / p
ng, imagem / x-xbitmap, imagem / x-xbm, imagem / gif .. Aceitar: aplicativo / postagens
criptografia, * / *; q = 0,01 .. Codificação de aceitação: gzip, compress .. Linguagem de aceitação: e
n..Usuário-agente: Lynx / 2.8.4dev.7 libwww-FM / 2.14 ….
Essa mesma técnica pode ser usada para determinar o que um servidor ftp está relatando como sua versão:
porta 21 do ngrep ‘220’
T 209.155.82.18:21 -> 192.168.1.100:1105 [AP]
220 servidor FTP wcarchive.cdrom.com (versão DG-4.0.62 974200128) pronto
ou para investigar o Secure Shell, que pode ser difícil de depurar durante a primeira instalação:
ngrep porta ‘SSH’ 22
T 192.168.1.1:22 -> 192.168.1.100:1023 [AP]
SSH-1.5-1.2.27.
##
T 192.168.1.100:1023 -> 192.168.1.1:22 [AP]
SSH-1.5-OpenSSH_2.1.1.
Recursos interessantes do ngrep
Alguns dos recursos mais agradáveis do ngrep são óbvios para os administradores de sistemas, mas podem ser menos óbvios para os administradores de rede com tarefas de administrador de sistemas leves. Vejamos alguns deles:
* -A n – O recurso -A imprime pacotes “n” após a partida. Isso pode ser útil, por exemplo, para imprimir várias linhas após o “para:” no cabeçalho de endereço do smtp para obter uma imagem mais completa do cabeçalho.
* -l – Às vezes é necessário canalizar a saída do grep para outro programa para mais processamento. No entanto, o comportamento normal do ngrep parecerá esporádico quando canalizado para o outro programa, porque ele primeiro preenche seu buffer antes de imprimir pacotes correspondentes. Ao usar -l, a saída será impressa imediatamente, em vez de esperar que o buffer do ngrep seja preenchido antes da impressão.
* -v – O -v imprime todas as linhas que não correspondem à expressão. Isso é útil durante a solução de problemas inicial, em que uma causa ainda não é conhecida, mas você pode assumir que ela não é gerada pelo tráfego que você está enviando para o host do host remoto enquanto acessa o host. Por exemplo, se você telnetar para o host para iniciar a solução de problemas, use:
ngrep -v ” porta 23
para ver todo o tráfego, exceto o telnet.
* -d – O -d permite que você especifique o dispositivo que deseja monitorar. O caminho completo para o nome do dispositivo não é necessário. Portanto:
ngrep -d le0 ”
ouvirá le0 em uma caixa Solaris.
Sumário
O ngrep, como seu primo tcpdump, é útil para solucionar problemas de rede. Com a adição de poder pesquisar com expressões regulares, vale a pena adicionar o ngrep à sua caixa de ferramentas de rede. Pesando pouco mais de 100 K, também vale a pena considerar para suas distribuições de disquetes de rede e de emergência.