Blog do VoIP

Ngrep: Como analisar o trafego de pacotes SIP (Parte 1)

captura sip com ngrep

Para quem trabalha diariamente com VoIP acaba sendo inevitável conhecer um pouco mais sobre diálogo SIP, pois em várias ocasiões será necessário olhar diretamente os dados contidos no pacote SIP para efetuar uma análise com maior precisão e eficácia. Um comando que se utiliza com certa frequência nestes casos é o ngrep, que permite a análise de pacotes trafegados pela interface de rede, podendo filtrar por IP de origem ou destino e porta, além de possibilitar algumas configurações para melhor análise visual. Veremos agora como utilizar este comando e como visualizar de forma mais organizada os pacotes SIP retornados por esta ferramenta.

Instalando o ngrep

Antes de começarmos a demonstrar a utilização dessa ferramenta é bom frisar que ela geralmente não vem instalada por padrão nas distribuições Linux, para instalar basta apenas executar o comando:

# Sistemas Operacionais baseados em Red Hat:

yum install ngrep

#Sistemas Operacionais baseados em Debian

apt-get install ngrep

 

Utilizando o ngrep

Após instalado a ferramenta já podemos utilizá-la para capturarmos o trafego SIP da nossa máquina. Dependendo do objetivo da captura pode ser editado ou omitido alguns campos do filtro, observe abaixo um exemplo de filtro de pacotes SIP utilizando o ngrep:

ngrep -d any src or dst 177.71.187.168 -pqtW byline and port 5060

Neste exemplo estamos “dizendo” o seguinte: execute o ngrep filtrando todas as interfaces de rede (-d any) pela origem ou destino (src or dst) o ip 177.71.187.168, com os parâmetros -pqtW que basicamente impedem que apareçam informação desnecessária (-p -q), indique o tempo nos pacotes SIP (-t) e quebre cada informação do pacote SIP em uma linha ao invés de mostrar tudo em uma única linha (-W byline), e indicamos a porta que desejamos filtrar (port 5060).

Esse comando irá exibir na tela todo o tráfego de pacotes SIP enviado ou recebido do IP 177.71.187.168 na porta 5060. Caso não se conheça alguma destas informações basta não indicá-la no filtro. Supondo que não saibamos o IP que desejamos analisar, faríamos o filtro da seguinte maneira:

ngrep -d any -pqtW byline port 5060

Dessa forma será exibido tudo que passar pela porta 5060, independente da origem ou destino. Note que também foi excluído do filtro a condição lógica and. Quando não se tem certeza de qual porta está sendo usada para comunicação com determinado IP, pode-se selecionar mais de uma porta a ser filtrada adicionando apenas a seguinte condição:

ngrep -d any -pqtW byline port 5060 or port 5080 or port 6050

 

Salvando os pacotes SIP para análise

Os exemplos anteriores mostraram como exibir na tela os pacotes SIP, porém quando se necessita encontrar um único diálogo SIP em meio a dezenas de outros, procurar na tela pode não ser o meio mais eficiente.

Por este motivo costuma-se utilizar a saída do comando – que por default é a tela – para salvar em um arquivo, que posteriormente pode ser aberto por editores de texto que possuem ferramentas mais avançadas para identificação do diálogo que buscamos.

Você pode salvar o retorno do comando ngrep em um arquivo da seguinte maneira:

ngrep -d any src or dst 177.71.187.168 -pqtW byline and port 5060 > captura.sip

ou

ngrep -d any src or dst 177.71.187.168 -pqtW byline and port 5060 | tee captura.sip

No primeiro exemplo, todo o retorno do comando será enviado diretamente para o arquivo captura.sip, sem exibir qualquer retorno na tela para o usuário, já no segundo exemplo é utilizado o comando tee que além de gravar os pacotes SIP retornados pelo ngrep no arquivo captura.sip também os mostra na tela. Obs.: não recomendado para análise de baixo tráfego, pois o comando tee armazena os dados em cache antes de gravar no arquivo.

Bônus: Você ainda pode salvar a captura em um arquivo do tipo .pcap para analisar no Wireshark fazendo a captura da seguinte maneira:

ngrep -d any src or dst 177.71.187.168 -pqtW byline and port 5060 -O captura.pcap

Na continuação deste artigo veremos como analisar de forma fácil o arquivo gerado por este comando.

Tags:

Sobre

Bacharelando em Engenharia da Computação pela Univerdade Vale do Itajaí , atualmente trabalha como analista de suporte na equipe SipPulse. Participante ativo na escrita de artigos com intuito de compartilhar conhecimento com a comunidade VOIP.

Por | julho 12th, 2013 Comentários