Está en la página 1de 17

Tutorial tcpdump y el cebador con

ejemplos
Inicio » Estudios » Un tutorial tcpdump y cartilla con ejemplos
Patrocinador del sitio : Netsparker - encontrar vulnerabilidades en las aplicaciones web
antes de que alguien lo hace por usted.

☞ Cada domingo me puso una lista curada de las historias más


interesantes de la semana en infosec, la tecnología y los seres
humanos. Puede suscribirse a él aquí .

 ¿Por qué tcpdump ?


 Lo esencial
 Ejemplos
o Comunicación básica

o interfaz específica

o Ver salida en bruto

o Encuentra Tráfico por IP

o Al ver el contenido del paquete con la salida Hex

o Filtrado por fuente y / o destino


o Encontrar paquetes por la red
o Mostrar tráfico relacionado con un puerto

o Mostrar tráfico de un protocolo

o Mostrar sólo el tráfico IP6

o Encuentra tráfico utilizando rangos de puertos

o Encuentra tráfico en función de tamaño de paquete

o Captura de escribir en un archivo

o Lectura de tráfico desde un archivo

 Avanzado
o Es todo acerca de las combinaciones

o De IP específica y con destino a un puerto específico

o A partir de una red a otra

o El tráfico ICMP para no ir a una dirección IP específica

o El tráfico de un anfitrión que no está en un puerto


específico
o Agrupación complejo y caracteres especiales

o El aislamiento de ciertos indicadores de TCP

o Cabe destacar la identificación de Tráfico

 Tanto SYN y RST Conjunto

 HTTP GET sin cifrar

 Las conexiones SSH

 TTL baja

 Conjunto de bits mal

 Resumen

¿POR QUÉ TCPDUMP ?


tcpdump es la herramienta de análisis de la red principal para
los profesionales de seguridad de la información. Tener un
conocimiento sólido de esta aplicación súper-poderosa es
obligatoria para cualquiera que desee un conocimiento
profundo de TCP / IP. Muchos prefieren utilizar herramientas
de análisis de nivel superior, tales como Wireshark, pero creo
que esto es por lo general un error.

Cuando se utiliza una herramienta que muestra el tráfico de


red de una manera más natural (cruda) la carga de análisis se
coloca directamente sobre el ser humano en lugar de la
aplicación. Este enfoque cultiva la comprensión continua y
elevada del conjunto de protocolos TCP / IP, y por esta razón
por la que firmemente abogan por el uso tcpdump en lugar de
otras herramientas siempre que sea posible.

15:31:34.079416 IP (tos 0x0, ttl 64, id 20244, offset 0, flags [DF],

proto: TCP (6), length: 60) source.35970 > dest.80: S, cksum 0x0ac1

(correct), 2647022145:2647022145(0) win 5840 0x0000: 4500 003c 4f14

4006 7417 0afb 0257 E.. 0x0010: 4815 222a 8c82 0050 9dc6 5a41 0000

0000 H."*...P..ZA.... 0x0020: a002 16d0 0ac1 0000 0204 05b4

0402 080a ................ 0x0030: 14b4 1555 0000 0000 0103 0302

TABLE 1. — RAW TCP/IP OUTPUT.

15: 31: 34.079416 IP (TOS 0x0, ttl 64 , ID 20244, desplazamiento 0, banderas [DF] ,

proto: TCP (6), longitud: 60 ) source.35970> dest.80: S, 0x0ac1 cksum

(correcto), 2647022145: 2647022145 (0) Win 5840 0x0000: 4500 4f14 003c

4006 7417 0257 E .. 0afb 0x0010: 4815 222a 8c82 0050 9dc6 5a41 0000

. 0000 H "* ... P..ZA .... 0x0020: a002 0ac1 16d0 0000 0204 05b4

0402 080A ................ 0x0030: 14b4 1555 0000 0000 0103 0302

CUADRO 1. - RAW / SALIDA TCP IP.


LO ESENCIAL
A continuación se presentan algunas opciones que puede
utilizar durante la configuración tcpdump . Son fáciles de
olvidar y / o confundir con otros tipos de filtros, por ejemplo,
Wireshark, así que espero que esta página puede servir como
una referencia para usted, como a mí. aquí son las
principales que me gustan a tener en cuenta en función de lo
que estoy viendo.

OPCIONES

 -i any : Escuchar en todas las interfaces sólo para ver si se está


viendo todo el tráfico.
 -i eth0 : Escuchar en la interfaz eth0.
 -D : Muestra la lista de interfaces disponibles
 -n : No resuelva los nombres de host.
 -nn : No resuelva los nombres de host o nombres de puerto.
 -q : Ser menos detallado (más tranquilo) con su salida.
 -t : Dar salida de marca de tiempo legible.
 -tttt : Dar salida de marca de tiempo máximo legible.
 -X : La demostración de los paquetes contenidos tanto
en hexadecimal y ASCII .
 -XX : Igual -X , pero también muestra el encabezado de
Ethernet.
 -v, -vv, -vvv : Aumentar la cantidad de información de
paquetes que vuelvas.
 -c : Sólo obtener x número de paquetes y luego se detiene.
 -s : Definir el snaplength (tamaño) de la captura en
bytes. Utilizar -s0 para conseguir todo, a menos que esté
capturando intencionadamente menos.
 -S : Imprimir números de secuencia absolutos.
 -e : Obtener la cabecera Ethernet también.
 -q : Mostrar menos información de protocolo.
 -E : Descifrar el tráfico IPSEC, proporcionando una clave de
cifrado.

[El snaplength defecto como de tcpdump 4,0 ha cambiado desde 68


bytes a 96 bytes. Si bien esto le dará más de un paquete para ver,
todavía no obtendrá todo. Utilice -s 1514 o -s 0 para obtener una
cobertura completa]

EXPRESIONES

En tcpdump , las expresiones le permiten recortar a cabo


diversos tipos de tráfico y encontrar exactamente lo que estás
buscando. El dominio de las expresiones y aprender a
combinarlos de manera creativa es lo que hace que sea
realmente de gran alcance con tcpdump .

Hay tres tipos principales de expresión: type , dir , y proto .

 Opciones de tipo son: host , net y port .


 Dirección le permite hacer src , dst y combinaciones de los
mismos.
 Proto (col) permite designar: tcp , udp , icmp , ah , y muchos
más.
EJEMPLOS
Así que, ahora que hemos visto cuáles son nuestras
opciones, vamos a ver algunos ejemplos del mundo real que
es probable que veamos en nuestro trabajo diario.

COMUNICACIÓN BÁSICA

Sólo hay que ver lo que está pasando, mirando a todas las
interfaces.

# tcpdump -i any

INTERFAZ ESPECÍFICA

Visión básica de lo que ocurre en una interfaz determinada.

# tcpdump -i eth0

VER SALIDA EN BRUTO

Salida detallada, sin la resolución de nombres de host o


números de puerto, números de secuencia absolutos, y
marcas de tiempo legible por humanos.

# tcpdump -ttttnnvvS

ENCUENTRA TRÁFICO POR IP


Una de las consultas más comunes, esto le mostrará el tráfico
de 1.2.3.4, si se trata de la fuente o el destino.

# tcpdump host 1.2.3.4

VER MÁS DEL PAQUETE CON SALIDA HEX

Salida hexadecimal es útil cuando se desea ver el contenido


de los paquetes en cuestión, y que a menudo se utiliza mejor
cuando se está aislando algunos candidatos para un examen
más detenido.

# tcpdump -nnvXSs 0 C1 icmp

tcpdump: listening on eth0, link-type EN10MB (Ethernet), 23:11:10.370321 IP

(tos 0x20, ttl 48, id 34859, offset 0, flags [none], length: 84)

69.254.213.43 > 72.21.34.42: icmp 64: echo request seq 0

0x0000: 4520 0054 882b 0000 3001 7cf5 45fe d52b E..T.+..0.|.E..+

0x0010: 4815 222a 0800 3530 272a 0000 25ff d744 H."..50'..%..D

0x0020: ae5e 0500 0809 0a0b 0c0d 0e0f 1011 1213 .^..............

0x0030: 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223 .............!"#

0x0040: 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 $%&'()*+,-./0123

0x0050: 3435 3637 4567

1 packets captured

1 packets received by filter

0 packets dropped by kernel

TABLE 2. — VERBOSE CAPTURE OF AN ICMP PACKET.


tcpdump: escuchar en eth0, del tipo de conexión EN10MB (Ethernet), 23: 11: 10.370321 IP

(TOS 0x20, TTL 48, id 34859, compensados 0, banderas [ninguno], longitud: 84)

69.254.213.43> 72.21.34.42: ICMP 64: solicitud de eco ss 0

0x0000:. 4520 0054 0000 3001 882B 7cf5 45fe d52b E..T + .. 0. | .E .. +

0x0010: 4815 0800 3530 222a 272a 0000 25ss D744 H." ..50' ..% .. D

0x0020:. Ae5e 0500 0809 0a0b 0c0d 0e0f 1011 1213 ^ ..............

0x0030: 1415 1617 1819 2021 1A1B 1c1d 1e1f 2223 ............. "#

0x0040:. 2425 2627 2829 2A2B 2c2d 2e2f 3031 3233 $% & '() * +, - / 0123

0x0050: 3435 3637 4567

1 paquetes capturados

1 paquetes recibidos por el filtro

0 paquetes descartados por el kernel

TABLA 2. - CAPTURA DETALLADO DE UN PAQUETE ICMP.

FILTRADO POR ORIGEN Y DESTINO

Es bastante fácil aislar el tráfico basándose en la fuente o el


destino utilizando src y dst .

# tcpdump src 2.3.4.5


# tcpdump dst 3.4.5.6

ENCONTRAR PAQUETES POR LA RED

Para encontrar los paquetes que van hacia o desde una red
en particular, utilice la net opción. Esto se puede combinar
con los src o las dst opciones también.
# tcpdump net 1.2.3.0/24

MOSTRAR TRÁFICO RELACIONADO CON UN PUERTO ESPECÍFICO

Usted puede encontrar el tráfico de un puerto específico


mediante la port opción seguida por el número de puerto.

# tcpdump port 3389

# tcpdump src port 1025

MOSTRAR TRÁFICO DE UN PROTOCOLO

Si usted está buscando un tipo particular de tráfico, puede


utilizar TCP, UDP, ICMP, y muchos otros también.

# Tcpdump ICMP

MOSTRAR SÓLO EL TRÁFICO IP6

También se puede encontrar todo el tráfico IP 6 utilizando la


opción de protocolo.

# Tcpdump ip6

ENCUENTRA TRÁFICO UTILIZANDO RANGOS DE PUERTOS

También puede utilizar un rango de puertos para encontrar


tráfico.
# Tcpdump portrange 21-23

ENCUENTRA TRÁFICO EN FUNCIÓN DE TAMAÑO DE PAQUETE

Si usted está buscando paquetes de un tamaño particular


puede utilizar estas opciones. Puede utilizar menos mayores
o sus símbolos, asociados, que se puede esperar de las
matemáticas.

# Tcpdump less 32

# tcpdump greater 64

# tcpdump <= 128

CAPTURA DE ESCRIBIR EN UN ARCHIVO

A menudo es útil guardar capturas de paquetes en un archivo


para su análisis en el futuro. Estos archivos se conocen como
PCAP (PEE-cap) archivos, y pueden ser procesados por
cientos de diferentes aplicaciones, incluyendo los
analizadores de red, los sistemas de detección de intrusos, y
por supuesto por el mismo tcpdump . Aquí estamos
escribiendo en un archivo llamado capture_file utilizando el –
w interruptor.

# Tcpdump port 80 -w capture_file


LA LECTURA DE ARCHIVOS PCAP

Puede leer archivos PCAP utilizando el –r interruptor. Tenga


en cuenta que puede utilizar todos los comandos regulares
dentro de tcpdump mientras que la lectura de un archivo; que
sólo está limitado por el hecho de que no se puede capturar y
procesar lo que no existe en el archivo ya.

# Tcpdump -r capture_file

AVANZADO
Ahora que hemos visto lo que podemos hacer con los
conceptos básicos a través de algunos ejemplos, vamos a ver
algunas cosas más avanzadas.

SÓLO SE TRATA DE LAS COMBINACIONES

Ser capaz de hacer estas cosas distintas individual es de


gran alcance, pero la verdadera magia de tcpdump proviene
de la capacidad de combinar las opciones de manera
creativa con el fin de aislar exactamente lo que estás
buscando. Hay tres maneras de hacer combinaciones, y si
usted ha estudiado programación en todos van a estar
bastante familiarizado con usted.

1. AND
and or &&
2. OR
or or ||
3. EXCEPT
not or !
Estos son algunos ejemplos de comandos combinados.

DE IP ESPECÍFICA Y CON DESTINO A UN PUERTO ESPECÍFICO

Vamos a ver todo el tráfico de 10.5.2.3 ir a cualquier host en


el puerto 3389.

tcpdump -nnvvS src 10.5.2.3 and dst port 3389

A PARTIR DE UNA RED A OTRA

Veamos para todo el tráfico que viene de 192.168.xx y yendo


a los 10.xo 172.16.xx redes, y estamos mostrando salida
hexagonal sin resolución de nombres y un nivel de
verbosidad adicional.

tcpdump -nvX src net 192.168.0.0/16 and dst net 10.0.0.0/8 or


172.16.0.0/16

EL TRÁFICO ICMP PARA NO IR A UNA DIRECCIÓN IP ESPECÍFICA

Esto nos mostrará todo el tráfico va a 192.168.0.2 y que


no sea ICMP.

tcpdump dst 192.168.0.2 and src net and not icmp

TRÁFICO DE UN ANFITRIÓN QUE NO ESTÁ EN UN PUERTO


ESPECÍFICO
Esto nos mostrará todo el tráfico desde un host que no es el
tráfico SSH (suponiendo el uso de puertos por defecto).

tcpdump -vv src mars and not dst port 22

Como se puede ver, se puede construir consultas para


encontrar casi cualquier cosa que necesite. La clave es saber
primero exactamente lo que está buscando y luego construir
la sintaxis para aislar ese tipo específico de tráfico.

Agrupación complejo y caracteres especiales

También hay que tener en cuenta que cuando está la


construcción de consultas complejas que podría tener que
agrupar sus opciones utilizando comillas simples. Las
comillas simples se utilizan con el fin de decirle a tcpdump que
ignore ciertos caracteres, en este caso por debajo de los
paréntesis “()” especiales. Esta misma técnica se puede
utilizar para agrupar el uso de otras expresiones tales
como host , port , net , etc Tome un vistazo a la siguiente
comando.

# El tráfico que es de 10.0.2.4 y con destino a los puertos 3389 o


22 (incorrecta)

# tcpdump src 10.0.2.4 and (dst port 3389 or 22)

Si se trató de ejecutar este comando por lo demás muy útil,


se obtendría un error debido al paréntesis. Usted puede
solucionar este problema mediante escapar el paréntesis
(poniendo una \ antes de cada uno), o poniendo todo el
comando entre comillas simples:

# El tráfico que es de 10.0.2.4 y con destino a los puertos 3389 o


22 (correcto)

# tcpdump 'src 10.0.2.4 and (dst port 3389 or 22)'


El aislamiento de ciertos indicadores de TCP

También puede capturar tráfico en función de indicador TCP


específico (s).

[NOTA: Los filtros abajo encontrar estos diversos paquetes,


porque tcp[13] se ve en el offset 13 en la cabecera TCP , el número
representa la ubicación dentro del byte, y el = 0 significa que la
bandera en cuestión se establece en 1, es decir, que es el!. ]

Mostrar todas URGENTE (URG) paquetes ...

# tcpdump 'tcp [13] & 32 ! = 0 '

Muestra todas las RECONOZCO (ACK) paquetes ...

# Tcpdump 'TCP [13] & 16 ! = 0 '

Mostrar todas PUSH (PSH) paquetes ...

# tcpdump 'tcp [13] & 8 ! = 0 '

Mostrar todas RESTABLECER (RST) paquetes ...

# tcpdump 'tcp [13] & 4 ! = 0 '

Mostrar todas SYNCHRONIZE (SYN) paquetes ...

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

Mostrar todas ACABADO (FIN) paquetes ...

# tcpdump 'tcp [13] & 1 ! = 0 '


Mostrar todas los paquetes
SYNCHRONIZE/ACKNOWLEDGE (SYN ACK)...

# tcpdump 'tcp [13] = 18 '

[Nota: Sólo el PSH, RST, SYN, FIN y banderas se muestran


en tcpdump 's salida de campo bandera. URGs y ACK se muestran,
sino que se muestran en otra parte de la salida y no en el campo de
banderas. ]

Al igual que con la mayoría de las herramientas de gran


alcance, sin embargo, hay varias maneras de hacer las
cosas. El siguiente ejemplo muestra otra manera de capturar
paquetes con ciertos indicadores de TCP establecidas.

# tcpdump 'tcp [tcpflags] == tcp-syn '

Banderas capturar RST Uso de la tcpflags opción ...

# tcpdump 'tcp [tcpflags] == tcp-rst '

Banderas capturar FIN Uso de la tcpflags opción ...

# tcpdump 'tcp [tcpflags] == tcp-fin '

[Nota: La misma técnica se puede utilizar para las otras banderas


así; que se han omitido en aras de espacio. ]

Cabe destacar la identificación de Tráfico

Por último, hay algunas recetas rápidas que usted querrá


recordar para la captura de tráfico específico y especializado,
tales como paquetes malformados / probable-maliciosos.
LOS PAQUETES CON LAS BANDERAS RST Y SYN ACTIVO (ESTO
NUNCA DEBERÍA SER EL CASO, NO DEBERIA SUSEDER)

# tcpdump 'tcp [13] = 6'

ENCUENTRA PETICIONES GET HTTP SIN CIFRAR

# tcpdump 'tcp [32: 4] = 0x47455420'

ENCUENTRA CONEXIONES SSH EN CUALQUIER PUERTO (VÍA TEXTO


DE LA PANCARTA)

# tcpdump 'tcp [(tcp [12] >> 2): 4] = 0x5353482D'

LOS PAQUETES CON UN TTL DE MENOS DE 10 (POR LO GENERAL


INDICA UN PROBLEMA O EL USO DE TRACEROUTE )

# tcpdump 'ip [8] <10'

LOS PAQUETES CON EL CONJUNTO DE BITS MAL (PIRATA


INFORMÁTICO CURIOSIDADES MÁS QUE CUALQUIER OTRA COSA)

# tcpdump 'ip [6] & 128! = 0 '

RESUMEN
1. tcpdump es una herramienta valiosa para cualquiera que
quiera entrar en la seguridad de redes o información.
2. La forma más cruda que interactúa con el tráfico, combinado
con la precisión que ofrece en la inspección de paquetes hacen
que sea la mejor herramienta posible para el aprendizaje de
TCP / IP.
3. Analizadores de protocolos como Wireshark son grandes, pero
si usted quiere dominar verdaderamente paquetes-fu, que
deben ser uno con tcpdump primero.