ARP (Address Resolution Protocol) es un protocolo de comunicación utilizado para mapear direcciones IP (capa 3) a direcciones MAC físicas (capa 2) en redes locales. Es esencial para la comunicación entre dispositivos en la misma red.
ARP opera en la capa 2 (enlace de datos) del modelo OSI y es responsable de resolver la diferencia entre direccionamiento lógico y físico en redes Ethernet.
Conceptos clave:
Dirección IP: Identificador lógico de red (ejemplo: 192.168.1.10)
Dirección MAC: Identificador físico único del hardware de red (ejemplo: 00:1A:2B:3C:4D:5E)
Resolución: Proceso de encontrar la MAC correspondiente a una IP específica
graph LR
A[IP Address<br/>192.168.1.10] -->|ARP Resolution| B[MAC Address<br/>00:1A:2B:3C:4D:5E]
style A fill:#e1f5fe,stroke:#01579b
style B fill:#f3e5f5,stroke:#4a148c
⚙️ Funcionamiento del Protocolo
Proceso de resolución ARP
sequenceDiagram
participant A as Dispositivo A<br/>(192.168.1.26)
participant N as Red Local<br/>(Broadcast)
participant B as Dispositivo B<br/>(192.168.1.10)
Note over A: Necesita enviar datos a 192.168.1.10
A->>N: ARP Request (Broadcast)<br/>"¿Quién tiene 192.168.1.10?"
N->>B: ARP Request recibido
B->>A: ARP Reply (Unicast)<br/>"Soy 192.168.1.10, mi MAC es 00:1A:2B:3C:4D:5E"
Note over A: Actualiza tabla ARP<br/>Envía datos usando MAC destino
Pasos detallados:
Verificación de tabla ARP local
El dispositivo busca la IP destino en su caché ARP
Si no la encuentra, inicia el proceso ARP
ARP Request (Solicitud)
Se envía un mensaje broadcast a toda la red
Contiene: IP origen, MAC origen, IP destino, MAC destino vacía
ARP Reply (Respuesta)
Solo responde el dispositivo con la IP solicitada
Envía su dirección MAC en un mensaje unicast
Actualización de tabla ARP
Ambos dispositivos actualizan sus tablas ARP
La entrada se almacena temporalmente (TTL típico: 2-20 minutos)
Ejemplo práctico
Escenario: PC-A (192.168.1.26) quiere comunicarse con PC-B (192.168.1.10)
La tabla ARP es una caché local que almacena las asociaciones IP-MAC conocidas para optimizar la comunicación.
Visualizar tabla ARP:
# Comando moderno (iproute2)ip neigh show# Comando tradicionalarp -a# Ver tabla ARP con detallesip neigh show dev eth0
Estados de entradas ARP:
Estado
Descripción
REACHABLE
Entrada válida y activa
STALE
Entrada antigua, requiere verificación
DELAY
Verificando disponibilidad
PROBE
Enviando solicitudes ARP
INCOMPLETE
Resolución en progreso
FAILED
Resolución fallida
Gestión de tabla ARP
# Limpiar tabla ARP completasudo ip neigh flush all# Eliminar entrada específicasudo ip neigh del 192.168.1.10 dev eth0# Agregar entrada estáticasudo ip neigh add 192.168.1.10 lladdr 00:11:22:33:44:55 dev eth0
⚠️ Vulnerabilidades y Ataques
1. ARP Spoofing (Envenenamiento ARP)
El ataque más común que explota la falta de autenticación en ARP.
graph TD
A[Víctima<br/>192.168.1.10] -->|ARP Reply falsa| B[Atacante<br/>192.168.1.50]
B -->|ARP Reply falsa| C[Gateway<br/>192.168.1.1]
A -->|Tráfico interceptado| B
C -->|Tráfico interceptado| B
B -->|Reenvía tráfico| D[Internet]
style B fill:#ffcdd2,stroke:#d32f2f
style A fill:#c8e6c9,stroke:#388e3c
style C fill:#c8e6c9,stroke:#388e3c
Proceso del ataque:
Reconocimiento: El atacante identifica víctimas y gateway
Envenenamiento: Envía ARP replies falsos:
A la víctima: “El gateway está en MI MAC”
Al gateway: “La víctima está en MI MAC”
Intercepción: Todo el tráfico pasa por el atacante
Man-in-the-Middle: Puede leer, modificar o interceptar datos
# Escanear red con arp-scanarp-scan 192.168.1.0/24# Monitorear cambios en ARParpwatch -i eth0# Detectar ARP spoofingarp-scan -l | sort | uniq -d
🛠️ Comandos y Herramientas
Comandos básicos de diagnóstico:
# Ver tabla ARP actualip neigh# Hacer ping para generar entrada ARPping -c 1 192.168.1.1# Ver estadísticas ARPcat /proc/net/arp# Capturar tráfico ARPtcpdump -i eth0 arp# Análisis detallado con Wiresharkwireshark -f "arp" -i eth0
Herramientas de seguridad:
Herramienta
Propósito
Ejemplo de uso
arp-scan
Descubrimiento de hosts
arp-scan 192.168.1.0/24
ettercap
ARP spoofing/MitM
ettercap -T -M arp
bettercap
Suite de ataques de red
bettercap -iface eth0
arpwatch
Monitoreo de ARP
arpwatch -i eth0
arping
Envío de ARP requests
arping 192.168.1.1
🛡️ Medidas de Protección
1. Entradas ARP estáticas
# Configurar entradas estáticas para dispositivos críticossudo ip neigh add 192.168.1.1 lladdr 00:11:22:33:44:55 dev eth0 nud permanent# Script para automatizar entradas estáticas#!/bin/bashdeclare -A static_arp=( ["192.168.1.1"]="00:11:22:33:44:55" ["192.168.1.10"]="aa:bb:cc:dd:ee:ff")for ip in "${!static_arp[@]}"; do sudo ip neigh add "$ip" lladdr "${static_arp[$ip]}" dev eth0 nud permanentdone
2. Monitoreo y alertas
# Configurar arpwatch para alertassudo arpwatch -i eth0 -m root@company.com# Script de monitoreo personalizado#!/bin/bashwhile true; do current_arp=$(ip neigh show | grep "192.168.1.1") if [[ "$current_arp" != "$expected_arp" ]]; then echo "¡ALERTA! Posible ARP spoofing detectado" echo "Esperado: $expected_arp" echo "Actual: $current_arp" fi sleep 30done
3. Configuraciones de seguridad
# Configurar límites ARP en el kernelecho 1 > /proc/sys/net/ipv4/conf/all/arp_announceecho 2 > /proc/sys/net/ipv4/conf/all/arp_ignore# Configuración permanente en /etc/sysctl.confnet.ipv4.conf.all.arp_announce = 1net.ipv4.conf.all.arp_ignore = 2
Limitaciones importantes
Solo redes locales: ARP funciona únicamente en el mismo dominio de broadcast
Sin autenticación: No hay verificación de identidad en el protocolo
Vulnerable por diseño: La confianza implícita permite ataques
Dependiente de Ethernet: Específico para redes Ethernet/WiFi