Ataques de denegación de servicio en VoIP (II)

En el anterior artículo de esta serie introdujimos los ataques de Denegación de Servicio (DoS attacks) en redes VoIP. abordando la problemática de los ataques DoS en general, y comentando su impacto específico en VoIP. En esta ocasión hablaremos de los fuzzers o herramientas para generar tráfico, que pueden emplearse con fines perversos y desencadenar un DoS. Dejamos para la tercera entrega el análisis de herramientas específicas de ataque.

 

Herramientas para realizar ataques DoS en VoIP

Actualmente las herramientas disponibles para realizar ataques DoS en VoIP se podrían separar en dos grandes grupos:

  1. Herramientas de auditoría o de generación de tráfico artificial: su propósito original es testear la red, pero pueden ser utilizadas con intenciones deshonestas. Ejemplos de este tipo de aplicaciones los encontramos en SIPsak, SIPp o SiVuS.
  2. Herramientas destinadas específicamente a ataques DoS: normalmente se trata de pequeños scripts (típicamente en Perl o Python) ideados para implementar específicamente alguno de los ataques ya comentados. Ejemplos de este tipo de scripts pueden ser UDPflood, RTPflood, INVITEflood, o Teardown.

SIPsak

SIPsak es una pequeña utilidad programada por Nils Ohlmeier (http://sipsak.org), pensada inicialmente para desarrolladores y administradores de sistemas basados en SIP. Entre sus características o funcionalidades destacan:

  • Envío de peticiones OPTIONS.
  • Envío de ficheros (que deberían contener peticiones SIP).
  • traceroute (RFC3261, sección 11).
  • Test de localización de usuario.
  • Test de flooding o inundación.
  • Test de envío de caracteres aleatorios.
  • Interpretación y generación de respuestas.
  • Autenticación (MD5 y SHA1).
  • Notación breve para la recepción (no para el envío).
  • Reemplazos de cadenas de caracteres ilimitados en fichero y en peticiones.
  • Posibilidad de añadir cualquier cabecera a las peticiones.
  • Simulación de llamadas.
  • Señalización simétrica, buen funcionamiento tras un NAT.
  • Posibilidad de subir cualquier contacto a un registrar.
  • Envío de mensajes a cualquier destino SIP.
  • Códigos de error compatibles con Nagios.
  • Expresiones regulares para la generación de respuestas.
  • Multiproceso para aumentar la carga del servidor.
  • Lectura de mensajes SIP desde la entrada estándar.
  • Soporte para registros SRV en DNS.
  • Soporte para transporte mediante UDP o TCP.

Veamos su funcionamiento:

sipsak -F -s sip:6001@192.168.0.2 -vvvv
warning: redirects are not expected in flood. disableing
fqdnhostname: 127.0.0.1
flooding message number 1

request:
OPTIONS sip:6001@192.168.0.2 SIP/2.0
Via: SIP/2.0/UDP 127.0.0.1:9;branch=z9hG4bK.69ff4bfe
From: sip:sipsak@127.0.0.1:9;tag=2b7e4741
To: sip:6001@192.168.0.2
Call-ID: 729696065@127.0.0.1
CSeq: 1 OPTIONS
Contact: sip:sipsak@127.0.0.1:9
Content-Length: 0
Max-Forwards: 70
User-Agent: sipsak 0.9.6

send to: UDP:192.168.0.2:5060
flooding message number 2

request:
OPTIONS sip:6001@192.168.0.2 SIP/2.0
Via: SIP/2.0/UDP 127.0.0.1:9;branch=z9hG4bK.28a41c32
From: sip:sipsak@127.0.0.1:9;tag=596f366a
To: sip:6001@192.168.0.2
Call-ID: 1500460650@127.0.0.1
CSeq: 2 OPTIONS
Contact: sip:sipsak@127.0.0.1:9
Content-Length: 0
Max-Forwards: 70
User-Agent: sipsak 0.9.6

Como vemos, va generando múltiples mensajes OPTIONS al servidor (192.168.0.2). Si eliminamos la opción -vvvv, bajará su nivel de información para el usuario y realizará una inundación de peticiones más eficiente. Veamos qué es lo que ocurre en el servidor cuando está sometido a tantas peticiones:

# top

top - 19:25:30 up 4 days, 22:57,  1 user,  load average: 0.54, 0.65, 0.54
Tasks:  90 total,   1 running,  89 sleeping,   0 stopped,   0 zombie
Cpu(s): 69.6%us,  2.0%sy,  0.0%ni,  0.0%id,  0.0%wa, 22.4%hi,  5.9%si,  0.0%st
Mem:    288596k total,   254228k used,    34368k free,     7828k buffers
Swap:   498004k total,    52540k used,   445464k free,    98204k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
16195 root      18   0 46884  29m 3168 S 98.3 10.6   1:28.14 asterisk
 3098 root      16   0  2260 1156  868 R  1.3  0.4   0:02.31 top

Como se puede observar, la carga de procesador para la centralita Asterisk es del 98.3% cuando es sometida a tanto estrés por parte de sipsak.

SIPp

SIPp es una herramienta libre para generar tráfico y tests para el protocolo SIP. Incluye varios escenarios de usuarios de agentes Sipstone (UAC y UAS) y establece y libera múltiples llamadas con los métodos INVITE y BYE. También es capaz de leer otros escenarios en XML para generar diferentes pruebas. Durante su ejecución muestra estadísticas acerca del test que está siendo ejecutado. Entre sus características más avanzadas destacan el soporte para IPv6, TLS, autenticación SIP, escenarios condicionales, retransmisiones UDP, robustez frente a errores, variables para llamadas específicas, soporte para expresiones regulares, acciones personalizables a la llegada de un mensaje e inyección de campos desde un fichero CSV externo para emular usuarios activos. También es capaz de enviar tráfico RTP (audio o audio y vídeo) a través de RTP echo y RTP / pcap replay.

A pesar de estar optimizado para tests de tráfico, estrés y rendimiento, SIPp puede ser usado para hacer una sola prueba y salir, por lo que es fácilmente utilizable dentro de otros programas o scripts.

Su utilización es sencilla:

/sipp 192.168.0.2
Resolving remote host '192.168.0.2'... Done.
------------------------------ Scenario Screen -------- [1-9]: Change Screen --
  Call-rate(length)     Port   Total-time  Total-calls  Remote-host
  10.0(0 ms)/1.000s   5061      66.21 s           60  192.168.0.2:5060(UDP)

  0 new calls during 0.063 s period      7 ms scheduler resolution
  0 calls (limit 30)                     Peak was 30 calls, after 3 s
  0 Running, 0 Paused, 1 Woken up
  0 out-of-call msg (discarded)
  1 open sockets

                                 Messages  Retrans   Timeout   Unexpected-Msg
      INVITE ---------->         60        300       60
         100 <----------         0         0                   0
         180 <----------         0         0                   0
         183 <----------         0         0                   0
         200 <----------  E-RTD1 0         0                   0
         ACK ---------->         0         0
       Pause [      0ms]         0                             0
         BYE ---------->         0         0         0
         200 <----------         0         0                   0

------------------------------ Test Terminated --------------------------------

----------------------------- Statistics Screen ------- [1-9]: Change Screen --
  Start Time             | 2007-01-14 19:40:18
  Last Reset Time        | 2007-01-14 19:41:24
  Current Time           | 2007-01-14 19:41:24
-------------------------+---------------------------+--------------------------
  Counter Name           | Periodic value            | Cumulative value
-------------------------+---------------------------+--------------------------
  Elapsed Time           | 00:00:00:075              | 00:01:06:226
  Call Rate              |    0.000 cps              |    0.906 cps
-------------------------+---------------------------+--------------------------
  Incoming call created  |        0                  |        0
  OutGoing call created  |        0                  |       60
  Total Call created     |                           |       60
  Current Call           |        0                  |
-------------------------+---------------------------+--------------------------
  Successful call        |        0                  |        0
  Failed call            |        1                  |       60
-------------------------+---------------------------+--------------------------
  Call Length            | 00:00:31:543              | 00:00:31:545
------------------------------ Test Terminated --------------------------------

Durante este test se han intentado hacer 60 llamadas, pero ninguna de ellas ha sido satisfactoria, por lo que el estrés sufrido por el servidor ha sido mínimo.

SiVuS

Como ya hemos adelantado previamente, SiVus es una escáner de vulnerabilidades para redes VoIP que usa el protocolo SIP. Está disponible para todos los sistemas Windows y se puede descargar desde la página de VoPSecurity (http://www.vopsecurity.org).

SiVuS detecta los servidores SIP que se encuentren en la red y envía una serie de mensajes SIP con alguna característica no especificada en el estándar para comprobar si el servidor SIP es vulnerable.

Para utilizarlo seguiremos las recomendaciones detalladas en [Rincón et al. 2006]. Antes de comenzar, en la pestaña “SIP Scanner – Scanner Configuration” es preciso configurar qué tipo de mensajes SIP se van a enviar.

sivus01.jpg

Figura: Configuración de SiVuS.Para iniciar el test de vulnerabilidades es preciso acceder a la pestaña “Scanner Control Panel” y pulsar el botón botón verde. Cuando la barra de progreso haya llegado al 100%, podremos ver el resultado de cada prueba, en qué ha consistido y cómo ha respondido el servidor SIP.

sivus02.jpg

Figura: SiVuS realizando un test de vulnerabilidades en una red VoIP.

Por cada puerto analizado, hay tres grupos de riesgo : High (en rojo), Passed (en verde) y Low (en azul). Si expandimos cada grupo aparecerán las pruebas con el resultado correspondiente. Para ello hacemos click sobre cada puerto analizado y se desplegarán cada una de las pruebas, representada con un número entre corchetes y un semáforo, que representa el riesgo.

Seleccionando cada prueba aparecerán la descripción y los comentarios en los cuadros de texto de la derecha. Una vez que el escáner ha terminado, pulsando sobre el botón “Generate a report” podemos generar un informe en HTML con el resultado del análisis.

SiVuS además incorpora una utilidad para mandar mensajes SIP y ver los mensajes de respuesta del servidor SIP. Para utilizarla es preciso situarse sobre la pestaña “Utilities – Message Generator”. En el cuadro de texto “Conversation Log” aparecerá en rojo la respuesta del servidor SIP al mensaje enviado. Es posible obtener información sobre los mensajes SIP o el RFC 3261 en la pestaña SIP Help.

8 pensamientos en “Ataques de denegación de servicio en VoIP (II)

  1. Antonio Pardo

    ¿Qué hay Txipi?

    No es recomendable exponer Asterisk a servicios externos en Internet, mejor usarlo como enlace a otros proveedores y funciones de PBX (voicemail, ivr, conference, etc). Haz estas mismas pruebas contra OpenSER, veras que casi no se inmuta. Con OpenSER además puedes ofrecer SIP seguro (sips) y si usas clientes con soporte para SRTP o ZRTP ya tienes cifrado el login y el audio/video.

    Ciao.

    PD: Sigue con esta serie de artículos que molán 🙂

    Responder
  2. txipi

    @saghul: muchas gracias por el link! 😉

    @apardo: Sí, me meteré en breve con OpenSER, ya que parece que cuesta meter SRTP y ZRTP en Asterisk.

    @ANELKAOS: ya sé que DoS is lame, pero creo que sí que tienen que ver con la seguridad informática y el hacking en general. ¿Hubieras preferido cracking como tag? A mí me suena más a reversing el tema de cracking que a DoS.

    Responder
  3. Dario

    Hola queria saber si pueden ayudarme con un motorola vt1005s, este ATA no puede programarser via http solo via tftp, y no esta bloqueado, lo que se programa via http es por ej la IP del proveedor VoIP y el directorio donde se encuentra el archivo de provisionamiento para configurar las lineas, ususario y pass del ATA

    Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *