O tcpdump é  um analisador de pacotes que roda em modo texto( e também um dos sniffers mais famosos que existe). Sua utilização é simples e sem mistérios, bastando apenas ter os conhecimentos básicos de redes TCP/IP e basta roda-lo com o root que ele começa a fazer o serviço. Segue uma pequena lista com alguns parâmetros.
-D: interfaces vistas pelo tcpdump
-c: captura c pacotes
-e: informação de camada de enlace
-A: imprime os pacotes em ASCII
-n: não resolve nomes (mostra endereços como são)
-v : modo verbose (pode-se aumenta-lo com -vv -vvv)
-x: mostra o PDU em hexadecimal
-S: mostra números de sequência em formato absoluto (por padrão o tcpdump
mostra os números relativos aos valores iniciais estabelecidos na conexão)
-s: tamanho do pacote
-t: retira a informação de timestamp do início da linha
-ttt: mostra a diferença de tempo para uma referência em us (microssegundos)
expressão – indica que pacotes devem ser mostrados (dumped) Ex.:
tcpdump -n icmp
tcpdump src <origem>
tcpdump dst <destino>
tcpdump host <máquina>

Agora vamos a algumas dicas o seu uso. Para armazenar a saída (em modo texto) em um arquivo digite:

tcpdump –c 100 > trace.txt

Com esse comando abaixo ele ira sniffar os pacotes que passam pela interface eth0:

#tcpdump -i eth0

Usando esse comando ele ira capturar todos os pacotes vindos de 192.168.0.2 (que também funciona com URL, que será explicado mais abaixo):

#tcpdump -i eth0 src host 192.168.0.2

É também e possível utiliza-lo com sites, por exemplo:

#tcpdump -i eth0 src host www.google.com

dessa forma ele ira capturar todos os pacotes que vem de www.google.com. Para verificar todo trafego que vem da porta de origem 666:

#tcpdump -i eth0 src port 666

O argumento -n evita name service queries, a resolução de DNS:

#tcpdump -n icmp

Para Scaneiar restritamente TCP ou UDP:

#tcpdump -n -t tcp or udp

Para scaneiar restritamente TCP port 22:

#tcpdump tcp port 22

Para scaneiar os dois IP (comunicação entre dois IP), excelente se o tcpdump estiver no gateway:

#tcpdump host \(10.10.100.100 and 10.10.200.200\)

Para scaneiar a porta 666 mas descarta host IP 192.168.0.1:

#tcpdump port 666 and not host 192.168.0.1

Capturando pacotes com origem em 172.25.50.1 e destino 201.XXX.XXX.XXX, com exceção da porta 666:

#tcpdump -i en1 -n src 172.25.50.1 and dst 201.XXX.XXX.XXX and port not 666.

Agora, um pouco mais chique, usando egrep - isso vai mostrar todos os seus pedidos da Web em tempo real:

#tcpdump-i eth0-Um porta-n 80 | egrep-i (GET. / | POST. / | Host:)

Se você esqueceu sua senha pop3, mas tê-lo guardado no cliente, isto também se aplica às senhas para a web, eu tenho utilizado este um lote, em vez de o "esqueci senha" mecanismo...

#tcpdump-i eth0-n port 110-A | egrep-i (user | pass)

Obtêm somente os segmentos com SYN ligado:

#tcpdump 'tcp[13] & 2==2'

Para filtrar pacotes com cabeçalhos maiores de 20 bytes:

#tcpdump 'ip[0] & 0x0f > 5'

Para filtra o 10º byte ou 9º offset (protocol field) - TCP = port 6 UDP = port 17, por exemplo:

#tcpdump ‘ip[9] = 6’

Capturar o tráfego de pacotes TCP que tenham o flag SYN ligado (ou seja apenas os pacotes de solicitações de conexão). Use o comando abaixo:

#tcpdump -i eth0 'tcp[13] & 2 == 2' –w syn.cap –c 5

O resto depende da criatividade...

Referências e links

[]'s