* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
Uno de los primeros pasos que un equipo de Red puede hacer es buscar números de teléfono disponibles para contactar con la empresa utilizando herramientas de OSINT, búsquedas en Google o raspando las páginas web.
Saber si el operador proporciona servicios de VoIP te permitirá identificar si la empresa está utilizando VoIP... Además, es posible que la empresa no haya contratado servicios de VoIP, pero esté utilizando tarjetas PSTN para conectar su propia PBX de VoIP a la red telefónica tradicional.
* **`nmap`** es capaz de escanear servicios UDP, pero debido a la cantidad de servicios UDP que se están escaneando, es muy lento y puede no ser muy preciso con este tipo de servicios.
* **`svmap`** de SIPVicious (`sudo apt install sipvicious`): ubicará los servicios SIP en la red indicada.
*`svmap` es **fácil de bloquear** porque utiliza el User-Agent `friendly-scanner`, pero puedes modificar el código de `/usr/share/sipvicious/sipvicious` y cambiarlo.
* **`sipscan.py`** de [**sippts**](https://github.com/Pepelux/sippts)**:** Sipscan es un escáner muy rápido para servicios SIP sobre UDP, TCP o TLS. Utiliza multihilo y puede escanear grandes rangos de redes. Permite indicar fácilmente un rango de puertos, escanear tanto TCP como UDP, utilizar otro método (por defecto utilizará OPTIONS) y especificar un User-Agent diferente (y más).
Metasploit es una herramienta de prueba de penetración ampliamente utilizada en el campo de la seguridad informática. Proporciona una plataforma para realizar pruebas de seguridad en sistemas y redes, identificando vulnerabilidades y explotándolas de manera controlada. Metasploit ofrece una amplia gama de módulos y exploits que permiten a los profesionales de la seguridad evaluar la seguridad de los sistemas y aplicaciones. Es una herramienta poderosa y versátil que se utiliza tanto en pruebas de penetración éticas como en actividades maliciosas.
Es posible encontrar **qué métodos están disponibles** para usar en el PBX utilizando `sipenumerate.py` de [**sippts**](https://github.com/Pepelux/sippts)
Las extensiones en un sistema de PBX (Private Branch Exchange) se refieren a los **identificadores internos únicos asignados a líneas telefónicas individuales**, dispositivos o usuarios dentro de una organización o empresa. Las extensiones permiten **enrutamiento eficiente de llamadas dentro de la organización**, sin la necesidad de números de teléfono externos individuales para cada usuario o dispositivo.
* **`svwar`** de SIPVicious (`sudo apt install sipvicious`): `svwar` es un escáner de líneas de extensión de PBX SIP gratuito. En concepto, funciona de manera similar a los wardialers tradicionales al **adivinar un rango de extensiones o una lista dada de extensiones**.
* **`sipextend.py`** de [**sippts**](https://github.com/Pepelux/sippts)**:** Sipexten identifica extensiones en un servidor SIP. Sipexten puede verificar grandes rangos de red y puertos.
* **metasploit**: También puedes enumerar extensiones/nombres de usuario con metasploit:
```
auxiliary/scanner/sip/enumerator_tcp normal No SIP Username Enumerator (TCP)
auxiliary/scanner/sip/enumerator normal No SIP Username Enumerator (UDP)
```
* **`enumiax` (`apt install enumiax`): enumIAX** es un enumerador de fuerza bruta de nombres de usuario del protocolo Inter Asterisk Exchange. enumIAX puede operar en dos modos distintos; Adivinanza secuencial de nombres de usuario o Ataque de diccionario.
Una vez descubierto el **PBX** y algunos **extensiones/nombres de usuario**, un Equipo Rojo podría intentar **autenticarse a través del método `REGISTER`** en una extensión utilizando un diccionario de contraseñas comunes para realizar un ataque de fuerza bruta.
Ten en cuenta que un **nombre de usuario** puede ser el mismo que la extensión, pero esta práctica puede variar dependiendo del sistema PBX, su configuración y las preferencias de la organización...
* **`svcrack`** de SIPVicious (`sudo apt install sipvicious`): SVCrack te permite descifrar la contraseña de un nombre de usuario/extensión específico en un PBX.
* **`sipcrack.py`** de [**sippts**](https://github.com/Pepelux/sippts)**:** SIP Digest Crack es una herramienta para crackear las autenticaciones de digest dentro del protocolo SIP.
Si encuentras equipos de VoIP dentro de una **red Wifi abierta**, podrías **capturar toda la información**. Además, si estás dentro de una red más cerrada (conectada a través de Ethernet o Wifi protegida), podrías realizar ataques de **MitM como** [**ARPspoofing**](../../generic-methodologies-and-resources/pentesting-network/#arp-spoofing) entre el **PBX y la pasarela** para capturar la información.
Entre la información de la red, podrías encontrar **credenciales web** para administrar el equipo, **extensiones de usuario**, **nombre de usuario**, **direcciones IP**, incluso **contraseñas encriptadas** y **paquetes RTP** que podrías reproducir para **escuchar la conversación**, y más.
Para obtener esta información, podrías utilizar herramientas como Wireshark, tcpdump... pero una **herramienta especialmente creada para capturar conversaciones de VoIP es** [**ucsniff**](https://github.com/Seabreg/ucsniff).
[Revisa este ejemplo para entender mejor una **comunicación SIP REGISTER**](basic-voip-protocols/sip-session-initiation-protocol.md#sip-register-example) para aprender cómo se envían las **credenciales**.
* **`sipdump`** y **`sipcrack`,** parte de **sipcrack** (`apt-get install sipcrack`): Estas herramientas pueden **extraer** de un **pcap** las **autenticaciones digest** dentro del protocolo SIP y **realizar ataques de fuerza bruta** sobre ellas.
No solo se pueden encontrar las credenciales SIP en el tráfico de red, también es posible encontrar códigos DTMF que se utilizan, por ejemplo, para acceder al buzón de voz.\
Es posible enviar estos códigos en mensajes SIP INFO, en audio o dentro de paquetes RTP. Si los códigos están dentro de paquetes RTP, puedes cortar esa parte de la conversación y usar la herramienta multimo para extraerlos:
En Asterisk es posible permitir una conexión **desde una dirección IP específica** o desde **cualquier dirección IP**:
```
host=10.10.10.10
host=dynamic
```
Si se especifica una dirección IP, el host **no necesitará enviar solicitudes REGISTER** de vez en cuando (en el paquete REGISTER se envía el tiempo de vida, generalmente 30 minutos, lo que significa que en otro escenario el teléfono necesitará REGISTRARSE cada 30 minutos). Sin embargo, deberá tener puertos abiertos que permitan conexiones desde el servidor VoIP para recibir llamadas.
Para definir usuarios, se pueden definir como:
* **`type=user`**: El usuario solo puede recibir llamadas como usuario.
Cuando se utiliza **`type=friend`**, el **valor** de la variable **host****no se utilizará**, por lo que si un administrador **configura incorrectamente un trunk SIP** utilizando ese valor, **cualquiera podrá conectarse a él**.
Por ejemplo, esta configuración sería vulnerable:\
En Asterisk, un **contexto** es un contenedor o sección con nombre en el plan de marcado que **agrupa extensiones, acciones y reglas relacionadas**. El plan de marcado es el componente principal de un sistema Asterisk, ya que define **cómo se manejan y enrutan las llamadas entrantes y salientes**. Los contextos se utilizan para organizar el plan de marcado, gestionar el control de acceso y proporcionar separación entre las diferentes partes del sistema.
Cada contexto se define en el archivo de configuración, típicamente en el archivo **`extensions.conf`**. Los contextos se indican mediante corchetes, con el nombre del contexto encerrado en ellos. Por ejemplo:
Dentro del contexto, se definen extensiones (patrones de números marcados) y se les asocia una serie de acciones o aplicaciones. Estas acciones determinan cómo se procesa la llamada. Por ejemplo:
Este ejemplo demuestra un contexto simple llamado "mi\_contexto" con una extensión "100". Cuando alguien marca 100, la llamada será contestada, se reproducirá un mensaje de bienvenida y luego la llamada será terminada.
Además, por defecto el archivo **`sip.conf`** contiene **`allowguest=true`**, entonces **cualquier** atacante sin autenticación podrá llamar a cualquier otro número.
***`sipinvite.py`** de [**sippts**](https://github.com/Pepelux/sippts)**:** Sipinvite verifica si un servidor PBX nos permite hacer llamadas sin autenticación. Si el servidor SIP tiene una configuración incorrecta, nos permitirá hacer llamadas a números externos. También puede permitirnos transferir la llamada a un segundo número externo.
Por ejemplo, si tu servidor Asterisk tiene una mala configuración de contexto, puedes aceptar solicitudes INVITE sin autorización. En este caso, un atacante puede hacer llamadas sin conocer ningún usuario/contraseña.
IVRS significa **Sistema de Respuesta de Voz Interactiva**, una tecnología de telefonía que permite a los usuarios interactuar con un sistema informatizado a través de comandos de voz o tonos táctiles. IVRS se utiliza para construir sistemas de manejo de llamadas automatizados que ofrecen una variedad de funcionalidades, como proporcionar información, dirigir llamadas y capturar la entrada del usuario.
1.**Indicaciones de voz**: Mensajes de audio pregrabados que guían a los usuarios a través de las opciones del menú y las instrucciones del IVR.
2.**Señalización DTMF** (Dual-Tone Multi-Frequency): Entradas de tonos táctiles generadas al presionar teclas en el teléfono, que se utilizan para navegar por los menús del IVR y proporcionar información.
3.**Enrutamiento de llamadas**: Dirigir las llamadas al destino adecuado, como departamentos específicos, agentes o extensiones según la entrada del usuario.
4.**Captura de entrada del usuario**: Recopilar información de los llamantes, como números de cuenta, IDs de casos u otros datos relevantes.
5.**Integración con sistemas externos**: Conectar el sistema IVR a bases de datos u otros sistemas de software para acceder o actualizar información, realizar acciones o activar eventos.
En un sistema VoIP Asterisk, puedes crear un IVR utilizando el plan de marcación (archivo **`extensions.conf`**) y varias aplicaciones como `Background()`, `Playback()`, `Read()`, y más. Estas aplicaciones te ayudan a reproducir indicaciones de voz, capturar la entrada del usuario y controlar el flujo de la llamada.
El ejemplo anterior muestra cómo se le pide al usuario que **presione 1 para llamar** a un departamento, **2 para llamar** a otro, o **la extensión completa** si la conoce.\
La vulnerabilidad radica en el hecho de que **no se verifica la longitud de la extensión indicada**, por lo que un usuario podría ingresar un número completo durante el tiempo de espera de 5 segundos y se realizará la llamada.
Sin embargo, si **`${EXTEN}`** permite introducir **más que números** (como en versiones anteriores de Asterisk), un atacante podría introducir **`101&SIP123123123`** para llamar al número de teléfono 123123123. Y este sería el resultado:
Por lo tanto, una llamada a la extensión **`101`** y **`123123123`** será enviada y solo se establecerá la primera que reciba la llamada... pero si un atacante utiliza una **extensión que evita cualquier coincidencia** que se esté realizando pero que no existe, podría **inyectar una llamada solo al número deseado**.
El SIP Digest Leak es una vulnerabilidad que afecta a una gran cantidad de teléfonos SIP, incluyendo tanto teléfonos IP de hardware como de software, así como adaptadores telefónicos (VoIP a analógico). La vulnerabilidad permite la **filtración de la respuesta de autenticación Digest**, que se calcula a partir de la contraseña. Un **ataque de contraseña sin conexión es entonces posible** y puede recuperar la mayoría de las contraseñas basadas en la respuesta del desafío.
7. El atacante puede entonces realizar un ataque de fuerza bruta en la respuesta del desafío en su máquina local (o en una red distribuida, etc.) y adivinar la contraseña.
Click2Call permite a un **usuario web** (que por ejemplo puede estar interesado en un producto) **introducir** su **número de teléfono** para recibir una llamada. Luego se llamará a un comercial y cuando este **conteste el teléfono**, el usuario será **llamado y conectado con el agente**.
* Para **organizar una llamada**, como se especificó anteriormente, **no es necesario tener permisos de lectura** y solo se necesita **origen** en **escritura**.
En Asterisk es posible utilizar el comando **`ChanSpy`** indicando la **extensión(es) a monitorear** (o todas ellas) para escuchar las conversaciones que están ocurriendo. Este comando debe ser asignado a una extensión.
Por ejemplo, **`exten => 333,1,ChanSpy('all',qb)`** indica que si **llamas** a la **extensión 333**, se **monitorearán****`todas`** las extensiones, **comenzando a escuchar** cuando una nueva conversación comienza (**`b`**) en modo silencioso (**`q`**) ya que no queremos interactuar en ella. Puedes pasar de una conversación a otra presionando **`*`**, o marcando el número de extensión.
**RTCPBleed** es un importante problema de seguridad que afecta a los servidores VoIP basados en Asterisk (publicado en 2017). La vulnerabilidad permite que el tráfico de **RTP (Protocolo de Tiempo Real)**, que lleva las conversaciones VoIP, sea **interceptado y redirigido por cualquier persona en Internet**. Esto ocurre porque el tráfico de RTP evita la autenticación al atravesar los firewalls de NAT (Traducción de Direcciones de Red).
Los proxies de RTP intentan solucionar las **limitaciones de NAT** que afectan a los sistemas RTC al actuar como intermediarios en los flujos de RTP entre dos o más partes. Cuando hay NAT, el software del proxy de RTP a menudo no puede confiar en la información de IP y puerto de RTP obtenida a través de la señalización (por ejemplo, SIP). Por lo tanto, varios proxies de RTP han implementado un mecanismo donde esta **tupla de IP y puerto se aprende automáticamente**. Esto se hace a menudo inspeccionando el tráfico de RTP entrante y marcando la IP y puerto de origen de cualquier tráfico de RTP entrante como aquellos a los que se debe responder. Este mecanismo, que puede llamarse "modo de aprendizaje", **no utiliza ningún tipo de autenticación**. Por lo tanto, los **atacantes** pueden **enviar tráfico de RTP al proxy de RTP** y recibir el tráfico de RTP proxy destinado al llamante o al receptor de un flujo de RTP en curso. Llamamos a esta vulnerabilidad RTP Bleed porque permite a los atacantes recibir flujos de medios RTP destinados a usuarios legítimos.
Otro comportamiento interesante de los proxies de RTP y las pilas de RTP es que a veces, **incluso si no son vulnerables a RTP Bleed**, aceptarán, reenviarán y/o procesarán paquetes de RTP de cualquier origen. Por lo tanto, los atacantes pueden enviar paquetes de RTP que les permitan inyectar sus propios medios en lugar de los legítimos. Llamamos a este ataque RTP injection porque permite la inyección de paquetes de RTP ilegítimos en flujos de RTP existentes. Esta vulnerabilidad puede encontrarse tanto en proxies de RTP como en puntos finales.
Asterisk y FreePBX tradicionalmente han utilizado la configuración **`NAT=yes`**, que permite que el tráfico de RTP evite la autenticación, lo que puede provocar que no haya audio o que el audio sea unidireccional en las llamadas.
* **`rtpbleedinject.py`** de [**sippts**](https://github.com/Pepelux/sippts)**:** Explota la vulnerabilidad de RTP Bleed enviando flujos de RTP (desde un archivo de audio)
En Asterisk, de alguna manera logras ser capaz de **agregar reglas de extensión y recargarlas** (por ejemplo, comprometiendo un servidor de administración web vulnerable), es posible obtener RCE utilizando el comando **`System`**.
Si el servidor **prohíbe el uso de ciertos caracteres** en el comando **`System`** (como en Elastix), verifica si el servidor web permite **crear archivos de alguna manera dentro del sistema** (como en Elastix o trixbox) y úsalo para **crear un script de puerta trasera** y luego utiliza **`System`** para **ejecutar** ese **script**.
* **`Elastix.conf`** -> Contiene varias contraseñas en texto claro, como la contraseña de root de mysql, la contraseña de IMAPd y la contraseña del administrador web.
* **Varias carpetas** pertenecerán al usuario de Asterisk comprometido (si no se está ejecutando como root). Este usuario puede leer los archivos anteriores y también controla la configuración, por lo que podría hacer que Asterisk cargue otros binarios con puertas traseras cuando se ejecuten.
Es posible insertar un archivo **`.wav`** en las conversaciones utilizando herramientas como **`rtpinsertsound`** (`sudo apt install rtpinsertsound`) y **`rtpmixsound`** (`sudo apt install rtpmixsound`).
O puedes utilizar los scripts de [http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/](http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/) para **escanear conversaciones** (**`rtpscan.pl`**), enviar un archivo `.wav` a una conversación (**`rtpsend.pl`**) e **insertar ruido** en una conversación (**`rtpflood.pl`**).
* [**IAXFlooder**](https://www.kali.org/tools/iaxflood/): Ataque de DoS al protocolo IAX utilizado por Asterisk.
* [**inviteflood**](https://github.com/foreni-packages/inviteflood/blob/master/inviteflood/Readme.txt): Una herramienta para realizar inundaciones de mensajes SIP/SDP INVITE a través de UDP/IP.
* [**rtpflood**](https://www.kali.org/tools/rtpflood/): Envía varios paquetes RTP bien formados. Es necesario conocer los puertos RTP que se están utilizando (hacer un sniff primero).
* [**SIPp**](https://github.com/SIPp/sipp): Permite analizar y generar tráfico SIP, por lo que también se puede utilizar para realizar ataques de DoS.
* [**SIPsak**](https://github.com/nils-ohlmeier/sipsak): Navaja suiza SIP. También se puede utilizar para realizar ataques SIP.
* **`sipsend.py`** de [**sippts**](https://github.com/Pepelux/sippts)**:** SIPSend nos permite enviar un mensaje SIP personalizado y analizar la respuesta.
* **`wssend.py`** de [**sippts**](https://github.com/Pepelux/sippts)**:** WsSend nos permite enviar un mensaje SIP personalizado a través de WebSockets y analizar la respuesta.
La forma más sencilla de instalar un software como Asterisk es descargar una **distribución del sistema operativo** que ya lo tenga instalado, como: **FreePBX, Elastix, Trixbox**... El problema con estos es que una vez que están funcionando, los administradores del sistema podrían **no actualizarlos nuevamente** y se descubrirán vulnerabilidades con el tiempo.
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PR al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).