Introdução
Monitorar o tráfego de rede é algo
fundamental para a solução de problemas e análises de vulnerabilidades e
desempenho. Uma ótima opção para este tipo de trabalho é o tcpdump. O tcpdump é
um conhecido sniffer do mundo GNU/Linux. Um sniffer é um software que faz a
análise de pacotes direcionados a ele ou não.
O tcpdump também permite o uso de filtros e opções dependendo do tipo de
trabalho desejado e tipo de análise a ser executado.
Para trabalhar com o tcpdump é necessário entender o funcionamento de uma
rede TCP/IP, ou pelo menos ter alguma fundamentação ou conhecimento do assunto.
Tcpdump: Monitoramento
de conexões
O
tcpdump é um sniffer para sistemas GNU/Linux. Com o tcpdump é possível
monitorar portas e interfaces de redes de um servidor e/ou de um cliente.
Instalação:
A
instalação do tcpdump em sistemas Debian é bem simples, bastando executar o
comando abaixo como super usuário (root):
#
apt-get install tcpdump
Utilização dos Parâmetros
Para iniciarmos a utilização do tcpdump
podemos especificar a interface de rede que queremos analisar com o parâmetro
-i seguido da interface desejada, por exemplo, se quisermos analisar todo o
tráfego que passa pela interface eth0, executaríamos a seguinte linha de
comando:
#
tcpdump -i eth0
Obs.:
Não se faz obrigatório o uso do parâmetro -i, mas se não especificado, o
tcpdump vai capturar os pacotes de todas as interfaces de rede (tanto Ethernet
quanto USB).
Conexões de origem podem ser
monitoradas utilizando o parâmetro src host, um exemplo simples seria
monitorarmos o tráfego que vem de 192.168.0.9 para o nosso computador, com o ip
192.168.0.2. A linha de comando ficaria da seguinte forma:
#
tcpdump -i eth0
O parâmetro -D mostra as interfaces
disponíveis para o monitoramento.
#
tcpdump -D
Outro parâmetro interessante é o -c que
termina o monitoramento após “n” pacotes.
#
tcpdump -i eth0 -c 20
O parâmetro -v mostra o pacote com mais
detalhes. O parâmetro -vv mostra ainda mais detalhes do que -v, e o parâmetro
-vvv mostra o máximo de detalhes que o tcpdump pode mostrar.
#
tcpdump -i eth0 -vv
O parâmetro -x escreve o conteúdo do
pacote no formato hexadecimal.
#
tcpdump -i eth0 -x
O parâmetro -X mostra o
conteúdo do pacote no formato hexadecimal e ASCII.
#
tcpdump -i eth0 -X
Um comando interessante dentro do
tcpdump é portrange. O portrange permite que você monitore um range de portas
de uma vez só.
#
tcpdump -i eth0 portrange 1-443
Para não resolver o nome dos hosts
durante a captura dos pacotes basta utilizarmos o parâmetro -n.
#
tcpdump -i eth0 -n -c 20
Para não resolvermos o nome dos hosts e
dos serviços associados às portas utilizamos o parâmetro -nn.
# tcpdump -i eth0 -nn
-c 20
Conexões de origem podem
ser monitoradas utilizando o parâmetro src host, um exemplo simples seria
monitorarmos o tráfego que vem de 192.168.0.9 para o nosso computador, com o ip
192.168.0.2. A linha de comando ficaria da seguinte forma:
#
tcpdump -i eth0 src host 192.168.0.9
Se quisermos monitorar conexões
especificando um host de destino, poderíamos fazê-lo com o parâmetro dst host,
o exemplo abaixo mostra todo o tráfego do host 192.168.0.2 com 192.168.0.1, no
caso, 192.168.0.1 é nosso gateway.
# tcpdump -i eth0 dst
host 192.168.0.1
Com o tcpdump também
podemos especificar exceções com o parâmetro not host, por exemplo, em nosso
servidor queremos ver todo o tráfego que se passa em sua rede, exceto o de
192.168.0.8, faríamos da seguinte forma:
# tcpdump -i eth0 not
host 192.168.0.9
No tcpdump podemos
também especificar portas de origem com os comando src e st port, um exemplo
seria monitorarmos todo o tráfego destinado à porta 80 (http), para isso
utilizaríamos a linha de comandos abaixo e navegaríamos em um site qualquer:
# tcpdump -i eth0 dst port 80
Para verificarmos o
tráfego da porta de origem 32881 por exemplo, faríamos da seguinte forma:
# tcpdump -i eth0 src
port 32881
Para fazermos uma
varredura de todas as portas com exceção de uma determinada porta, por exemplo
80 utilizamos o seguinte parâmetro:
#
tcpdump not port 80
Para fazermos a
varredura de uma rede por inteiro descartando a varredura de um host 10.1.4.5
por exemplo, utilizamos a seguinte sintaxe:
# tcpdump -i any net
10.1.4.0/24 and not host 10.1.4.248
Assim
será feita a varredura de toda a rede 10.1.4.0/24 mas ignorando o host
10.1.4.248.
Armazenando os Pacotes Capturados em Arquivo
Não vai te ajudar apenas ver todo o
stream de pacotes em sua tela, por isso é interessante que você armazene todos
esses dados em um arquivo para que você possa analisar tudo com calma depois,
identificando cada pacote.
No tcpdump isso é feito utilizando a
flag -w:
#tcpdump -nn -ni eth0
not host 192.168.0.1 -w /tmp/captura.pcap
Isso irá escrever todos
os pacotes capturados no arquivo /tmp/captura.pcap. Este é um arquivo binário
(escrever em um arquivo binário é mais rápido que escrever em um arquivo texto
puro, evitando que o sniffer perca pacotes enquanto espera o fluxo ser salvo no
arquivo), portanto não adianta você tentar lê-lo utilizando um editor de textos
normal ou mesmo um comando como o cat, por exemplo. Você precisa de um software
que saiba ler este arquivo como o próprio tcpdump ou o Wireshark
Depois que
você escrever um arquivo binário com a captura, pode lê-lo utilizando a flag -r
do tcpdump:
#
tcpdump -r /tmp/captura.pcap
Assim você pode fazer uma análise ainda mais
detalhada dos pacotes que você capturou. A opção -XX (ou -X, que não imprime
alguns cabeçalhos de nível mais baixo) também pode ser utilizada diretamente na
linha de comando, não apenas quando se está lendo um arquivo.
Conclusão
Segurança é algo fundamental,
seja em um ambiente doméstico ou empresarial. O importante é que tanto nestes
dois tipos de estrutura o que mais se presa são os dados. O nível de segurança
a ser adotado em rede deve ser avaliado de acordo com o valor das informações
que a empresa carrega.
Existem várias formas de prover
segurança em sua rede: fazendo tentativas de invasão em seus servidores,
verificando registros de log, entre outros. Mas quem conhece sabe que verificar
listas de log é muito trabalhoso e exige muita atenção a pequenos detalhes. Com
o tcpdump se torna mais fácil e amigável este tipo de análise, pois o mesmo
pode escanear somente as portas determinadas e gerar logs separados dos logs
comuns do kernel.
O tcpdump pode fazer muito que gerar
logs de portas comuns da sua rede, basta explorá-lo.
Referências
TCPDUMP – DUMP TRAFFIC ON A NETWORK
Disponível
em: www.tcpdump.org/tcpdump_man.html.
Acesso em 20 fevereiro 2012Desenvolvido por Matheus Manito.
Nenhum comentário:
Postar um comentário