Quiero usar una regla de filtro para capturar solo paquetes de reconocimiento o sincronización. ¿Cómo hago esto?
Quiero usar una regla de filtro para capturar solo paquetes de reconocimiento o sincronización. ¿Cómo hago esto?
Respuestas:
La sintaxis del filtro pcap utilizada para tcpdump debería funcionar exactamente de la misma manera en el filtro de captura Winshark.
Con tcpdump usaría un filtro como este.
tcpdump "tcp[tcpflags] & (tcp-syn|tcp-ack) != 0"
Consulte la página de manual de tcpdump y preste mucha atención a los tcpflags.
Asegúrese de revisar también las secciones en Wireshark Wiki sobre captura y visualización de filtros. Desafortunadamente, los dos tipos de filtros usan una sintaxis completamente diferente y nombres diferentes para la misma cosa.
Si desea un filtro de visualización en lugar de un filtro de captura, probablemente necesite construir una expresión que combine tcp.flags.ack y tcp.flags.syn. Sin embargo, estoy mucho más familiarizado con los filtros de captura, por lo que tendrá que resolverlo por su cuenta.
Si bien la respuesta de @ Zoredache es agradable y completa, tenga en cuenta que la sintaxis generará todos los paquetes que tengan configurado el indicador TCP SYN o TCP ACK, incluidos los paquetes que no son estrictamente simples "TCP SYN" o "TCP ACK", porque También tienen otras banderas establecidas. Esto puede o no ser lo que usted (o futuros lectores) pretendía. Por ejemplo, esa sintaxis también capturará paquetes TCP SYN-ACK, TCP FIN-ACK, etc. Si solo desea paquetes TCP SYN o TCP ACK (es decir, SOLO uno de esos indicadores establecidos), la sintaxis adecuada del filtro de captura es:
'tcp[tcpflags] == tcp-syn or tcp[tcpflags] == tcp-ack'
Equivalentemente:
'tcp[13] == 2 or tcp[13] == 16'
¡Salud!
Hice un script para ver los principales "sincronizadores". Para eso, considero solo el paquete de sincronización inicial (el primer paquete del apretón de manos de tres paquetes). Es decir, syn = 1, ack = 0
while :; do
date;
tcpdump -i eth1 -n -c 100 \
'tcp[tcpflags] & (tcp-syn) != 0' and
'tcp[tcpflags] & (tcp-ack) == 0' 2> /dev/null \
| awk '{ print $3}' \
| sort | uniq -c | sort | tail -5;
echo;
sleep 1
done
tcpdump 'tcp[13] = 3'
http://danielmiessler.com/study/tcpdump/
Avanzado
También puede filtrar según porciones específicas de un paquete, así como combinar múltiples condiciones en grupos. El primero es útil cuando se busca solo SYNs o RSTs, por ejemplo, y el segundo para un aislamiento de tráfico aún más avanzado.
UAP RSF
[Sugerencia: un anagrama para las banderas TCP: los atacantes no calificados molestan a la gente de seguridad real]
tu nota: ...
Muéstrame todos los URGpaquetes URGENTES ( ) ...
tcpdump 'tcp[13] & 32 != 0'
Muéstrame todos los ACKpaquetes de RECONOCIMIENTO ( ) ...
tcpdump 'tcp[13] & 16 != 0'
Muéstrame todos los PSHpaquetes PUSH ( ) ...
tcpdump 'tcp[13] & 8 != 0'
Muéstrame todos los RSTpaquetes RESET ( ) ...
tcpdump 'tcp[13] & 4 != 0'
Muéstrame todos los SYNpaquetes SYNCHRONIZE ( ) ...
tcpdump 'tcp[13] & 2 != 0'
Muéstrame todos los FINpaquetes FINISH ( ) ...
tcpdump 'tcp[13] & 1 != 0'
Muéstrame todos los SYNACKpaquetes SINCRONIZAR / RECONOCER ( ) ...
tcpdump 'tcp[13] = 18'
[ Nota: Sólo el PSH, RST, SYN, y FINbanderas se muestran en la producción del campo de la bandera de tcpdump. URGsys ACKse muestran, pero se muestran en otra parte de la salida en lugar de en el campo de banderas]
Quería obtener solo paquetes SYN, utilicé el siguiente comando:
tcpdump -i eth7 'tcp[13] & 2 != 0'
Esto debería funcionar para usted de inmediato.
tcpdump -s SIZE. El encabezado TCP puede tener una longitud variable, por lo que la captura-s 128probablemente obtendrá todos los encabezados posibles y tal vez un poco de datos.