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 SYN
s o RST
s, 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 URG
paquetes URGENTES ( ) ...
tcpdump 'tcp[13] & 32 != 0'
Muéstrame todos los ACK
paquetes de RECONOCIMIENTO ( ) ...
tcpdump 'tcp[13] & 16 != 0'
Muéstrame todos los PSH
paquetes PUSH ( ) ...
tcpdump 'tcp[13] & 8 != 0'
Muéstrame todos los RST
paquetes RESET ( ) ...
tcpdump 'tcp[13] & 4 != 0'
Muéstrame todos los SYN
paquetes SYNCHRONIZE ( ) ...
tcpdump 'tcp[13] & 2 != 0'
Muéstrame todos los FIN
paquetes FINISH ( ) ...
tcpdump 'tcp[13] & 1 != 0'
Muéstrame todos los SYNACK
paquetes SINCRONIZAR / RECONOCER ( ) ...
tcpdump 'tcp[13] = 18'
[ Nota: Sólo el PSH
, RST
, SYN
, y FIN
banderas se muestran en la producción del campo de la bandera de tcpdump. URG
sys ACK
se 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 128
probablemente obtendrá todos los encabezados posibles y tal vez un poco de datos.