# TCPDump: analizador de paquetes en red

## ¿Qué es `TCPDUMP`? &#x20;

**tcpdump** es una herramienta de línea de comandos para **capturar y analizar tráfico de red** en sistemas Unix/Linux. Se trata de una herramienta muy ligera y potente, ideal para administradores de sistemas, ingenieros de redes y para tareas de seguridad informática.&#x20;

#### Algunas de las funciones principales:

* Captura paquetes en **tiempo real** desde una interfaz de red.
* Filtra tráfico según **IP, puerto, protocolo, rango de red, etc.**
* Permite guardar capturas en un archivo `.pcap` para analizarlas después (por ejemplo, con **Wireshark**).
* Muestra el contenido de los paquetes en **ASCII o hexadecimal**.
* Útil para depuración de **conexiones HTTP, DNS, SSH, FTP, ICMP (ping), IPv6** y muchos más.

***

### Instalación de TCPDump

Este programa es muy utilizado en todos los sistemas operativos basados en Linux, por lo tanto, vamos a poder instalarlo directamente desde los repositorios oficiales de cada distribución.&#x20;

Ten en cuenta que este tipo de herramienta también se puede descargar directamente desde su página y compilarlo posteriormente. Aunque, esto es en el caso de que tu distribución no tuviera esta herramienta en sus repositorios, algo que resulta bastante extraño.

Por lo tanto, en el caso de Debian o Ubuntu, tenemos que **poner la siguiente orden en la terminal**:

```bash
sudo apt install tcpdump
```

Y nos saldrá algo así:

<figure><img src="https://www.redeszone.net/app/uploads-redeszone.net/2022/04/tcpdump_linux_1.jpg" alt=""><figcaption></figcaption></figure>

Una vez que lo tengamos instalado, podemos ejecutar la siguiente orden en la terminal para que nos muestre la ayuda:

```bash
tcpdump -h
```

<figure><img src="https://www.redeszone.net/app/uploads-redeszone.net/2022/04/tcpdump_linux_2.jpg" alt=""><figcaption></figcaption></figure>

* En el caso de que necesites mucha más información sobre la herramienta, ver ejemplos de utilización y toda la documentación puedes recurrir al manual:

```bash
man tcpdump
```

***

## Uso de la herramienta

Algunos de los comandos más básicos de `tcpdump` son los siguientes, apréndetelos!

1. **Ver interfaces disponibles**:

   ```bash
   tcpdump -D
   ```

   (Lista las interfaces de red que puedes capturar).
2. **Capturar tráfico en una interfaz** (ejemplo: `eth0`):

   ```bash
   sudo tcpdump -i eth0
   ```
3. **Guardar captura en un archivo `.pcap`**:

   ```bash
   sudo tcpdump -i eth0 -w captura.pcap
   ```

   (Luego se puede abrir en Wireshark).
4. **Leer un archivo de captura**:

   ```bash
   tcpdump -r captura.pcap
   ```

### Casos de uso

A continuación tienes una lista de otros casos de uso, recuerda poner el `sudo` en todas:

<details>

<summary>Filtrar tráfico por IP</summary>

```bash
$ tcpdump src 192.168.0.1
```

Captura paquetes originarios de una IP concreta

</details>

<details>

<summary>Filtrar tráfico por IP de destino</summary>

```bash
$ tcpdump dst 192.168.0.1
```

Captura paquetes destinados a una dirección IP específica, por ejemplo, **192.168.0.1**.

</details>

<details>

<summary>Filtrar tráfico por puerto</summary>

```bash
$ tcpdump port 80
```

Captura paquetes con un número de puerto específico, como el puerto **80 (HTTP)**.

</details>

<details>

<summary>Filtrar tráfico por protocolo</summary>

```bash
$ tcpdump icmp
```

Captura paquetes que usan un protocolo de red específico, como **ICMP (ping)**.

</details>

<details>

<summary>Mostrar tráfico en formato ASCII</summary>

```bash
$ tcpdump -A
```

Muestra el contenido de los paquetes en formato **ASCII** para facilitar la lectura.

</details>

<details>

<summary>Mostrar tráfico en formato hexadecimal</summary>

```bash
$ tcpdump -X
```

Muestra el contenido de los paquetes en formato **hexadecimal y ASCII**.

</details>

<details>

<summary>Capturar un número específico de paquetes</summary>

```bash
$ tcpdump -c 100
```

Captura solo los **primeros 100 paquetes** y luego finaliza.

</details>

<details>

<summary>Capturar y mostrar tráfico IPv6</summary>

```bash
$ tcpdump -6
```

Captura y analiza paquetes **IPv6** para un análisis más completo de la red.

</details>

<details>

<summary>Capturar tráfico en una interfaz específica</summary>

```bash
$ tcpdump -i wlan0
```

Captura el tráfico de red en una interfaz específica, por ejemplo, **wlan0 (interfaz inalámbrica)**.

</details>

<details>

<summary>Capturar protocolo y puerto específicos</summary>

```bash
$ tcpdump tcp port 443
```

Captura solo los paquetes **TCP** en el puerto **443 (HTTPS)** para su análisis.

</details>

<details>

<summary>Filtrar tráfico por origen y destino</summary>

```bash
$ tcpdump src 192.168.0.1 and dst 192.168.0.2
```

Captura paquetes entre una IP de **origen** específica (**192.168.0.1**) y una IP de **destino** específica (**192.168.0.2**).

</details>

<details>

<summary>Mostrar el tráfico capturado en formato de marca de tiempo:</summary>

```bash
$ tcpdump-tttt
```

Muestra los paquetes capturados con una marca de tiempo en un formato legible por humanos.

</details>

### Opciones avanzadas

TCPdump ofrece capacidades avanzadas para un análisis de red en profundidad. Exploremos algunos ejemplos complejos que demuestran el poder y la flexibilidad de TCPdump para capturar y diseccionar paquetes de red:

<details>

<summary>Capturar cabeceras de peticiones y respuestas HTTP</summary>

```bash
$ tcpdump -i eth0 -s 0 -A -n 'tcp dst port 80'
```

Captura y muestra tráfico **HTTP** en el puerto **80**, incluyendo tanto las cabeceras de petición como de respuesta (`-A` para salida en ASCII).

</details>

<details>

<summary>Filtrar tráfico por rango de IP y protocolo</summary>

```bash
$ tcpdump -i eth0 'net 192.168.0.0/24 and (tcp port 22 or icmp)'
```

Captura paquetes dentro del rango de IP **192.168.0.0/24**, filtrando el tráfico **SSH (puerto 22)** y **ICMP**.

</details>

<details>

<summary>Capturar tráfico DNS y resolver nombres de host</summary>

```bash
$ tcpdump -i eth0 'udp port 53' -nnvvv
```

Captura paquetes **DNS** en el puerto **53** y muestra la salida detallada (`-nnvvv`), sin resolución de nombres de host.

</details>

<details>

<summary>Capturar tráfico del canal de control FTP</summary>

```bash
$ tcpdump -i eth0 -s 0 'tcp port 21'
```

Captura tráfico del canal de control **FTP** en el puerto **21**, incluyendo los comandos y respuestas intercambiados entre el cliente y el servidor FTP.

</details>

<details>

<summary>Monitorizar conexiones SSH</summary>

```bash
$ tcpdump -i eth0 'tcp port 22' -l -e
```

Monitoriza conexiones **SSH** capturando paquetes en el puerto **22**, mostrándolos en tiempo real (`-l`) e incluyendo cabeceras Ethernet (`-e`).

</details>

{% hint style="info" %}
Si queremos aumentar la información que nos muestra a través de la línea de comandos, debemos aumentar el «*verbose*» de la siguiente forma:

```bash
tcpdump -i NOMBRE_INTERFAZ -v
```

Si queremos aumentarlo más, añadiremos más «v» detrás, de la siguiente forma:

```bash
tcpdump -i NOMBRE_INTERFAZ -vvv
```

{% endhint %}

Como ves, `tcpdump` es una herramienta avanzada más de captura y análisis de paquetes por terminal, lo bueno de esta, como siempre es la capacidad de integrarse en el sistema para automatizar detecciones por ejemplo.

#### Referencias:

* <https://www.tcpdump.org/>
* <https://www.redeszone.net/tutoriales/servidores/tcpdump-capturar-trafico-red-linux/>
*


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://apuntes-alex.gitbook.io/apuntes-sistemas-y-redes/redes/analisis-escaneo-y-sniffing-de-red/tcpdump-analizador-de-paquetes-en-red.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
