Skip to content

Instantly share code, notes, and snippets.

@dpsoft
Created December 13, 2018 20:11
Show Gist options
  • Save dpsoft/de2d33cc86fc21e7a1e1ff44954f02b2 to your computer and use it in GitHub Desktop.
Save dpsoft/de2d33cc86fc21e7a1e1ff44954f02b2 to your computer and use it in GitHub Desktop.
TCPDUMP

TCPDUMP

Muy útil para depurar los mensajes que se envían por la red.

Permite ver en tiempo real los paquetes TCP/UDP que están pasando por la red. Por ejemplo, podríamos entrar a una app y ver como se comunica con otra. Supongamos que se comunica app-02 mediante el puerto 2020:

sudo tcpdump -i any -A "host app-02 and port 2020"

Algunos parámetros:

  • -A Imprimir cada paquete en ASCII.

  • -i {interface} Indicás que interface sniffeas, por ejemplo: eth0 , wlan0 , etc. Para todas: any.

  • -n Mostrar la IP y el puerto en vez del nombre del host.

La expresión es opcional, y se puede especificar un montón de cuestiones.

sudo tcpdump { parámetros } { expresión para filtrar }

Ejemplos:

Desde o hasta un host específico:

sudo tcpdump -i any -A "host 192.168.1.1"

Desde un host expecífico:

sudo tcpdump -i any -A "src host 192.168.1.1"

Hasta un puerto expecífico:

sudo tcpdump -i any -A "dst port 23"

Hasta un host específico y hasta un puerto específico:

sudo tcpdump -i any -A "dst host 192.168.1.1 and dst port 23"

Hasta un host específico y desde un puerto u otro específico:

sudo tcpdump -i any -A "dst host 192.168.1.1 and (dst port 80 or dst port 443)"

Para armar filtros más elaborados, donde el payload del TCP contenga un string específico: https://www.wireshark.org/tools/string-cf.html

Y si no, lo mas fácil es grepear y usar los parámetros de contexto: -A (after) -B (before) y -C (arriba y abajo). Por ejemplo:

sudo tcpdump -i any -A "host hotels.despegar.it" | grep -B 5 -A 20 'GET /v3/hotels'**

Un resultado:

..f...P.............k.....
9.1.....
12:36:16.939283 IP rebook-rc-00.39439 > 10.254.168.102.http: Flags [P.], seq 1128:1894, ack 30634, win 65160, options [nop,nop,TS val 967193037 ecr 2864896274], length 766
E..2..@[email protected]
..f...P.............i.....
9.1.....GET /v3/hotels?ids=480926&options=room_types%28amenities%29&include=test%2Cunpublished HTTP/1.1
Host: hotels.despegar.it
X-Access-Token: 3ft5scs3ina7b4jekdiimt8er2
X-Cluster: 
X-Forwarded-For: 1.1.1.1
X-Version-Override: 
X-Component: rebook-v1.1.51
X-Author-Transaction: rebook-1.1.51-rebook-rc-00-4912ad30-8ab3-44de-9f31-4966b5bf05c2
X-Client: rebook
X-UOW: tEun8370-94200-rebook-rc-00
X-Username: admin
X-TID: 
X-User-Id: tEun8370-94200-rebook-rc-00
X-NewRelic-Transaction: PxQCBQVUDwJRUwVUVVQAVlMFFB8EBw8RVU4aV1xbAwUCBA4FBwNWVVQBA0NKQQkAB1xVUw4BFTs=
X-NewRelic-ID: VQQGUFFRCBABUFRVBgMAVg==
Connection: keep-alive
Accept: */*
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36
  • Una limitación es que solo sirve cuando se va por HTTP, no por HTTPS.
  • Es mucho más poderoso que lo que acá se detalla. Permite sniffear a nivel IP, y trae utilidades para filtrar con especificaciones a nivel TCP, UDP e ICMP.
  • La salida puede ser consumida por el famoso Wireshark.

Links útiles

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment