Ya hemos visto, respecto a tcptrace, su instalación, uso básico, estádisticas, extracción de datos del contenido o payload, gráficas con Jplot / Xplot,..
En esta ocasión vamos a estudiar el filtrado de conexiones con tcptrace.
Sobre el filtrado Tcptrace.
Como ya he explicado en anteriores capítulos, tcptrace se orienta a identificar las conexiones tcp establecidas en un fichero pcap, analiza su estado, rendimiento, etc, etc, y cuyo objetivo más importante es la generación de gráficas a partir de las información que de el se obtiene. Por tanto, el verdadero filtrado ha de establecerse a partir de la fuente de la captura (tcpdump, wireshark, etc ). El filtrado tcptrace , pues, es un filtro centrado en las características de la conexión TCP, valores de rendimiento, etc…
Tcptrace. Filtrado básico.
Ya hemos visto algo sobre filtrado básico de conexiones cuando hablamos de la opción -onúmeroconexión, con esto ya estamos realizando un primer y básico filtrado ya que solo visualizaremos la conexión indicada. Podemos mostrar varias conexiones, por ejemplo:
- tcptrace -o1,4,8 fichercaptura.pcap
que generará una salida tal como esta:
La opción -n es para que no resuelva nombres de host, con lo que irá mucho más rápido cuando se trata de ficheros de captura muy grandes.
Vemos de forma clara que indicamos las conexiones 1,4 y 8 que son las que se visualizan.
Podemos también establecer un rango de conexiones. De la 5 a la 9 por ejemplo. Además queremos incluir la primera:
- tcptrace -o1,5-9 fichercaptura.pcap
Hablamos también en la Parte 2, de limitar en la visualizaciones, el número de segmentos a mostrar, rangos, etc con las opciones -E y –B. Algunos ejemplos de estas opciones:
- tcptrace -zxy -E30000 -o1 -S fichercaptura.pcap con -E30000 limitamos hasta 30000 segmentos.
- tcptrace -zxy -B10000 -E20000 -o1 -S fichercaptura.pcap con –B10000 -E20000 desde 10000 a 20000 segmentos
Las opciones -E y -B están, sobre todo, orientadas a las gráficas y gráficas time sequence graph, de ahí la opción -S para invocarlas y las opciones -zxy que ya hemos visto.
Tenemos otras opciones:
- -c para ignorar las conexiones no completadas.
- –i númeroconexión para ignorar la conexión númeroconexión
Por ejemplo:
- tcptrace -n -i1-2224 fichercaptura.pcap que solo mostrará desde la conexión 2225 hasta el final
Hasta aquí el filtrado básico.
Tcptrace. Filtrado avanzado.
No termina con el filtrado básico las capacidades de filtrado de tcptrace. Tenemos un filtrado algo más avanzado aunque, a su vez, bastante más básico que BPF usado hasta ahora con Tcpdump / Windump / Tshark / Wireshark, etc..
Se trata de un filtrado basado en unas primitivas. La mayoría centrado en las conexiones TCP.
Por ejemplo podemos filtrar por:
- segs
- rtt_min
- rtt_max
- ack_segs
- data_bytes
- data_segs
- mss
- packets
- syn_count
- ….
y además por otros filtros algo más generales como:
- hostname
- portname
- port
Más abajo tenéis una lista.
La sintaxis básica sería:
- -f»filtro»
Como siempre lo vamos viendo con ejemplo:
Ejemplo 1.
Queremos filtrar, apartir de un fichero de captura de red, de la siguiente forma. De las conexiones completadas (-c), ver solo las que corresponden al puerto de origen o destino = 80.
- tcptrace -n -f»port==80″ -c 050608.pcap
Vemos
Ejemplo 2.
De todas las conexiones, queremos visualizar solo las que incluyan hostname=eleconomista.es.
Para ello tendremos que eliminar -n para que pueda resolver los nombres de hosts.
- tcptrace -f’hostname==»eleconomista.es»‘ 050608.pcap
Aunque en la captura añadí las opciones -c y -o como prueba, no son necesarias. Las ignora.
Ejemplo 3.
Queremos ver las conexiones en las que está involucrado el protocolo https, ssh y también las que tiene como puerto origen o destino el puerto=81. Para la primitiva portname también necesitamos no indicar -n.
- tcptrace -f’portname==»https» or portname==»ssh» or port==81′ 050608.pcap
Hay que decir que el filtro portname solo funcionará si en la captura se identifica el puerto usado con portname, es decir, en vez de aparecer el puerto 22, aparece como ssh. Por ejemplo: en el ejemplo 1, el puerto http patrece como 80 y no como http.
Otros filtros.
Podemos filtrar por número segmentos de la conexión, tanto en una dirección como en la otra otra:
- tcptrace -n -f«segs >= 150» 050608.pcap
podemos combinar:
- tcptrace -n -f«segs>75 && port==80» 050608.pcap
No paremos aquí un poco para explicar los modificadores de flujo para los filtros.
En el caso que indiquemos el prefijo b_ indicamos el flujo de la conexión en dos sentidos (por defecto). Si indicamos c_ o s_, indicamos un sentido o el otro.
Por ejemplo:
tcptrace -n -f«s_segs>75 && c_port==80″ 050608.pcap
Vamos ahora con filtros que forman parte de una conexión TCP, sus características, campos, etc.
Por ejemplo, las conexiones con peticiones SYN enviadas:
- tcptrace -n -f»syn_count==2» captura4.pcap
Vamos a ver las conexiones que tengan más de 15 segmentos fuera de orden:
- tcptrace -n -f»out_order_segs>15″ 050608.pcap
también los ACKs duplicados (rtt_dupack):
-
tcptrace -n -f"rtt_dupack>15" 050608.pcap
Retransmisiones en una conexión.
Vamos a realizar un pequeño y muy sencillo estudio sobre retransmisiones.
Lo primero ver si existen alguna conexión que contenga retansmisiones, despúes analizaremos de forma más profunda alguna de las conexiones que aparezcan:
- tcptrace -n -f»rexmit_segs>20» 050608.pcap
Podemos calcular, para hacernos una idea, la tasa de retransmisión de la forma:
rexmt data pkts / actual data pkts * 100
23 / 9806 * 100 = 0,2345% tasa retrans.
Rendimiento de las conexiones.
Vamos crear un filtro para averiguar que conexiones tienen un Throughput, en bits/segundo, mayor que una determinada cantidad que indiquemos. En este caso 100000 bps.
El Throughput, explicado de forma sencilla, es la cantidad de datos real (depende de varios factores) que pueden transmitirse/unidad de tiempo por un determinado canal o dispositivo.
- tcptrace -n -f»thruput>300000» 050608.pcap
Listado de primitivas para filtros.
=================================
Hasta aquí por hoy. En la próxima veremos los módulos de tcptrace.