Archivo

Archive for the ‘Asterisk’ Category

Nuevo Libro “Implementando Elastix SIP FIREWALL”

mayo 7, 2015 1 comentario

Elastix-SIP-FIREWALL
Tengo el gusto de compartirles que fue publicado el libro que elaboré denominado “Implementando Elastix SIP FIREWAL”

El libro, es un manual que hace una revisión del SIP Firewall de  Elastix e incluye algunos tips y configuraciones para sacar el mejor provecho del equipo.

Por otro lado, no solo cubre aspectos que involucran la correcta y adecuada configuración de Elastix SIP FIREWALL, sino también, las pruebas que todo profesional del área de la VoIP, tendría que realizar, para poder validar y comprobar la protección y aseguramiento de su plataforma VoIP es la adecuada.

El agradecimiento a Elastix , por permitirme desarrollar el material y sobre todo por liberar el contenido, fiel a la filosofía que persigue desde sus inicios.

 Lo pueden descargar desde el blog de Elastix o directamente desde aquí
Saludos
Juan Oliva
@jroliva

Troncalización de Elastix MT y A2BILLING mediante SIP

marzo 19, 2015 15 comentarios

ElastixMT

Luego del primer post sobre ELastix 3  Elastix 3 Multi Tenant – Configuración 1 (Extensiones y trunks) por cierto redefinido con el nombre Elastix MT donde mostraba la troncalización SIP funcional, me llegaron muchas consultas, por que al parecer no conseguían realizar el trunk , a continuación veremos como hacer un trunk entre una cuenta (customer) de A2BILLING y Elastix MT para poder sacar llamadas usando este servidor A2BILLING, como se ilustra en el gráfico a continuación.

ElastixMT

No voy a explicar, como es el proceso de instalación o creación de cuentas en A2BILLING,  se asume que ya tienen todo esa parte lista, sin embargo si necesitan alguna referencia, hace poco mi amigo e instructor de Elastix,  Ludwig Ramirez realizó un Webinar llamado “interactuando con A2billing” es muy buen punto de partida.

Ahora vamos al manual:

1.- Configuración del customer en A2BILLING
Digamos que tenemos este customer creado en nuestro a2b

Usuario : 7973430
Contraseña : 915215kd7amaqhkvbts0

ElastixMTelastix3
2.- Creación del trunk en Elastix MT

Ingresar a PBX / PBX / Trunks y hacer clic en “Create New Trunk”

Pestaña General

Descriptive Name : 7973430
Outbound Caller ID : 7973430
Organization: * : Especificar la organización creada previamente.

elastix3

Pestaña Peer Settings

Name: * : 7973430
secret:  ladefinida
host: 192.168.1.42
username: 7973430

elastix3

Pestaña Registration

Register String:  : 7973430:915215kd7amaqhkvbts0@192.168.1.42/7973430

elastix3

Una vez creada la troncal se mostrará de esta forma :

elastix3

3.- Configurar ruta saliente
Ingresar a PBX / PBX / Outbound Routes y editamos la ruta creada (9 + numero)

elastixmt

Luego vamos a la pestaña “Tunk Secuence” y le indicamos que use la troncal creada previamente, como se muestra a continuación :
elastixmt
4.- Servidor A2BILLING

Mientras tanto en el servidor a2b veremos el registro

elastixmt

elastixmt

5.- Llamadas salientes

Cuanto intentamos sacar llamadas en Elastix MT desde el CLI de Asterisk , podemos observar que tenemos el mensaje “todas las lineas están ocupadas”

ElastixMT

EL PROBLEMA!!

En el servidor A2BILLING tenemos el siguiente mensaje de error también.

ElastixMT
“chan_sip.c:23173 handle_request_invite: Failed to authenticate device <sip:101@192.168.1.40:5080>;tag=as5f10d355”

Si no ponemos a googlear existen algo de dos mil entradas referentes al problema….

ElastixMT

Y ahora que hacemos !! traigan a los Avengers !!

LA SOLUCIÓN !!

Nada de eso… toca hacer debug a bajo nivel y recordar las clases de SIP del gran  Olle Johansson

Después de revisar las tramas en Wireshark, me di cuenta de que el tema pasa por la manera como negocia el invite y el puerto, la parte de ElastixMT hacia A2B y viceversa.

http://www.voip-info.org/wiki/view/Asterisk+sip+insecure

Así que le agregué al customer “7973430” los parámetros SIP:

insecure=port,invite

ElastixMT

Luego reiniciar hacer un “sip reload” en el CLI

Nuevamente intentamos hacer llamadas y ahora si lo realiza correctamente:

Elastix MT

ElastixMT

A2Billing

ElastixMT
Luego de realizar esta integración,  se puede afirmar que ElastixMT puede troncalizar con cualquier plataforma, gateway  e inclusive Softwich que converse el estandar SIP.

Espero les sirva

Juan Oliva
@jroliva

 

 

 

 

Explotando vulnerabilidad PHP Code Injection Exploit en VTIGER 5.2.1

junio 17, 2013 2 comentarios

php-code-inyection

De regreso con las vulnerabilidades en VTIGER, anteriormente habíamos hablado de “Vulnerabilidad de directorios transversales” que afecta hasta implementaciones en Goautodial. En este oportunidad, vamos hablar otra denominada “PHP Code Injection” , el fundamento básico de esta técnica, es inyectar código arbitrario, como lo hace una inyección SQL.

Lo delicado de esto, es que se ha desarrollado un programa a modo de  “exploit” que automatiza este ataque, para tomar el control de una plataforma Elastix primordialmente, que tiene la version de Vtiger vulnerable.

Más adelante, me tomare el tiempo, para explicar como funciona el programa al detalle, por ahora me interesa, mostrar cómo se ejecuta el exploit, cómo funciona cuando es exitoso,  y después como lo parchamos, para que la vulnerabilidad ya no este activa.

Escenario de prueba

Atacante
SO : Kali Linux 32bits
Atacado
SO : Elastix 2.3 recien instalado y sin actualizar

1.-Explotando nuestro sistema y viendo si somos vulnerables.

#apt-get install php5-curl curl
#wget http://packetstormsecurity.com/files/download/119253/elastix23-exec.txt
#mv elastix23-exec.txt elastix.php
#chmod a+wrx elastix.php
#php elastix.php

Nos solicita ingresar la direccion IP del host atacado
Enter Target [https://ip] # https://192.168.10.142

Si el exploit es satifactorio, habremos optenido el acceso como lo muestra el siguiente video

2.- Parchando la vulnerabilidad

Aactualizacion a VTIGET 5.2.1-7
#yum update elastix-vtigercrm

o la que mas me gusta  , Como diria mi abuela , que en paz descanse …. santo remedio hijo !!  😀
#mv /var/www/html/vtigercrm /root/


3.- Condiciones
– Si bien es cierto el “exploit” esta enfocado a Elastix, con algunas modificaciones , puede funcionar para cualquier otra plataforma que user Vtiger.
– Solo afecta a implementaciones de Elastix 2.3 sin Actualizar que contengan Vtiger Crm
– No afecta a Elastix 2.4 , debido a que ya tiene la actualización por default.

Categorías:Asterisk, Centos, Hacking, Linux

Sistema de llamadas desatendidas para Elastix – AudioElastixdialer 0.1

junio 13, 2013 261 comentarios

En algun momento, existe la necesidad de realizar llamadas a los clientes , para reproducir le un grabacion o mensaje determinado (mas conocido como IVR) , por ejemplo para los siguientes casos :

– Sistemas de cobro
– Aviso de promociones
– Recordatorios de pago

Lo interesante es poder hacer estas llamadas de manera automatica y que podamos subirlas desde un archivo, ejemplo un  csv y tenerlo registrado en una base de datos.

Ese es el objetivo, ahora como lo hacemos ?

Bueno para eso nos vamos a apoyar en la funcionalidad “Asterisk call files” desde nuestro Elastix, como lo haremos

– Usaremos un par de paginas en php, que tendran el objetivo de cargar un csv (donde estaran los numeros a llamar)
– Luego se leera el archivo csv , para introducirlo en la base de datos.
– Finalmente leera la base de datos y generara los archivos .call en la carpeta /var/spool/asterisk/outgoing.

A.- COMPOSICION DE LOS ARCHIVOS
Como a todos los ingenieros nos gusta poner nombres a nuestras creaciones, a este lo he llamado, AudioElastixDialer , el cual esta compuesto de los siguientes archivos.

– funciones_bd.php , Contiene funciones basicas , de conexion a la base de datos , operaciones a las tablas , generacion de nuevos codigos.

– index.php , formulario donde se establece el nombre de campaña , tipo de troncal a usar (por default voip) , contexto a usar , y el archivo de numeros a llamar.

– audioelastixdialer.php , realiza las siguientes funciones , sube el cvs a la carpeta del servidor , luego lee los numeros del csv y los inserta a la base de datos  y finalmente crear los archivos .call , basado en la informacion de la base de datos.

B.- INSTALACION
La instalacion esta basada en una plataforma ELASTIX 2.4 a 32 bits , sin embargo puede trabajar en cualquier plataforma basada en Asterisk.

1.-  Crear carpeta donde se alojara la aplicacion , descargarla y descomprirla
#mkdir /var/www/html/AudioElastixDialer
#cd /var/www/html/
#wget http://www.silcom.com.pe/soft/AudioElastixDialer.zip
#unzip AudioElastixDialer.zip

2.- Configuracion de directorios en el sistema
#
chmod a+wr /var/www/html/AudioElastixDialer
#chmod a+wrx /var/spool/asterisk/outgoing/

3.- Configurar el dialplan de Elastix

Ingresamos a modificar el archivo de extensiones personalizadas

#vi /etc/asterisk/extensions_custom.conf

Incluimos en el contexto central uno nuevo el cual llamaremos “call-file-test”  y lo unicaremos al final como se muestra a continuacion.

[from-internal-custom]
exten => 1234,1,Playback(demo-congrats)         ; extensions can dial 1234
exten => 1234,2,Hangup()
exten => h,1,Hangup()
include => agentlogin
include => conferences
include => calendar-event
include => weather-wakeup
include => call-file-test

Luego vamos al final del mismo archivo e ingresamos nuestro contexto nuevo

[call-file-test]
exten => s,1,wait(15)
exten => s,2,Playback(demo-congrats)
exten => s,3,Hangup()

Guardamos los cambios en el archivo y finalmente recargamos los cambios a nivel del CLI de Asterisk

#asterisk -rvvvvvvvv
CLI> reload

4.- Modificar los datos de conexion a la base de datos

#vi /var/www/html/AudioElastixDialer/funciones_bd.php

if(!($conector=mysql_connect(“localhost”,”root”,”tucontrasena”)))

Nota Importante: Verificar también el nombre de la base de datos “AudioElastixDialerBD” en el mismo archivo.

5.- Crear la base de datos para el Audio Elastix Dialer

#mysql -p

mysql> create database AudioElastixDialerBD;

#mysql -u root -p AudioElastixDialerBD < /var/www/html/AudioElastixDialer/sql/AdioElastixDialerBD.sql


6.- Configuracion de la troncal de salida

Para configurar la troncal voip es necesario ingresar al archivo “audioelastixdialer.php” y configurar los parámetros a partir de la linea 77 aproximadamente, actualmente esta configurado para llamadas con prefijo de Perú

$tronc1=”SIP/0051″;
$tronc2=”@PROVEEDORVOIP”;

Ejemplo , para configurar la salida del dialer por el proveedor Nextor Proxy, asumiendo que la troncal tiene el mismo nombre, seria de esta forma:

$tronc1=”SIP/52″;
$tronc2=”@NEXTORPROXY”;

C.- USANDO AUDIOELASTIXDIALER

1.- Ingresar a la aplicación

Ingresar via : https://TUIP/AdioElastixDialer/  y veremos el siguiente formulario

AudioElastixDialer

Ingresaremos basicamente :

Nombre de Campaña : Prueba1
Archivo de llamadas : selecionaremos el archivo csv a subir (incluyo un ejemplo en el zip)

2.- Iniciar Campaña

Para iniciar la campaña es necesario hacer click sobre el boton “Crear Campaña” , si todo salio bien , generara los archivos .call y comezara a llamadar a los numeros indicados, luego reproducira el audio definido en el contexto “call-file-test” agregado asteriormente.

Si todo esta bien configurado nos mostrara esta pantalla :

AudioElastixDialer-OKEl programa generara los archivos .call de la siguiente forma

AudioElastixDialer-SPOOL

Luego empezara a generar las llamadas , esto es lo que tendria que verse a nivel de CLI

AudioElastixDialer-CLI

3.- Conclusiones y modificaciones

– El programa esta hecho en PHP con MYSQL
– Es totalmente Open Source mientras me respeten los creditos
– Resalto que no es un marcador predictivo , ya que se generan tantas llamadas como la troncal usada lo permita.
– Es posible modificarlo para que funcione con troncales Dahdi
– Es posible modificarlo para que funcione con colas
– El futuro , integrarlo al Elastix Addons

La interfase es fea , lo se.. sorry no soy diseñador 😀

Espero les sirva !!

Instalación de Asternic Call Center Stats Pro en Elastix 2.3

diciembre 20, 2012 13 comentarios

asternic
Durante el 4k Conference , tuve el gusto de conocer a Nicolas  y Agustin Gudiño , el primero nada menos que el creador de el no menos conocido “Flash Operator Panel”  ,  ellos son los responsables de uno de los reporteadores mas importantes para callcenters sobre plataformas y distribuciones basadas en Asterisk.

En este caso Asternic Call Center Stats , estoy seguro que más de uno conoce la versión Open-source o  LITE  , sin embargo  déjenme decirles que solo están viendo la punta del iceberg, de todo lo que puede hacer este maravilloso sistema.

En este caso no vamos a ver los innumerables reportes que provee, para eso los invito a visitar la página http://www.asternic.net/   , lo que vamos a ver, es el proceso de instalación sobre una plataforma Elastix en su versión 2.3  de Asternic Call Center Stats Pro 2

1.- Descargar y descomprimir
#wget http://download.asternic.net/asternic-stats-pro-2.0.0.tgz
#tar xvfz asternic-stats-pro-2.0.0.tgz

2.- Crear y cargar base de datos
#mysqladmin -u root -p create qstats
#cd asternic-stats-pro-2.0.0
#mysql -uroot -p qstats < ./sql/mysql-tables.sql

3.- Configurar conexión a base de datos y Manager de Asterisk

cd asternic-stats-pro-2.0.0
vi html/config.php

// Connection details
$DBHOST = ‘localhost’;
$DBNAME = ‘qstats’;
$DBUSER = ‘root’;
$DBPASS = ‘tupassword’;

// Manager details (for realtime tab)
$MANAGER_HOST   = “localhost”;
$MANAGER_USER   = “admin”;
$MANAGER_SECRET = “tupassword”;

4.- Configuración del entorno Web

#mv html /var/www/html/stats
#chown asterisk.asterisk /var/www/html/stats
#chown asterisk.asterisk /var/www/html/stats/* -R
#touch /var/www/html/stats/asterniclic.txt
#chmod 666 /var/www/html/stats/asterniclic.txt
#mv parselog /usr/local

5.- IONCUBE LOADER
Asternic Stats Pro requiere que librerias de ionCube para php.

#wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz
#tar zxvf ioncube_loaders_lin_x86.tar.gz
#mv ioncube /usr/local
#echo “zend_extension=/usr/local/ioncube/ioncube_loader_lin_5.1.so” >/etc/php.d/ioncube.ini
#service httpd restart

6.- ACTIVAR LICENCIA
Para el caso de Call Center Stats Pro es necesario activar el software. La licencia
está ligado a la dirección MAC de la interfaz de red del servidor.
Es necesario tener acceso a Internet desde el servidor con el fin de activar la copia.

Ingresar a : https://TUIP/stats/

asternic
Licence Name : Nombre de la empresa
Activation Code : xxxxxxxxx  (Enviada por EMAIL)

Una vez que la licencia ha sido activada, nos mostrará el formulario de ingreso al sistema:

asternic

7.- VOLCADO DE LOGS (PARSING)

#cd /usr/local/parselog/
#./tailqueuelog -u root -p 123456 -d qstats -l /var/log/asterisk/queue_log &

Como pueden ver el scrip genera un PID numer , el cual podemos consultar, si deseamos deterlo de lo contrario podemos ingresar en rc.local el comando para que se ejecute cada vez que iniciamos el servidor.

#ps aux | grep tailqueuelog

8.- INGRESO AL SISTEMA
Ingresar a : https://192.168.10.136/stats/

User : admin
Password : admin

asternic

 

Bueno ahí lo tienen, desde mi punto de vista la relación costo – beneficio es muy buena ,  comparado con otros productos bastante conocidos y que doblan el precio , sin considerar que en este caso Asternic Call Center Stats Pro 2 , no tiene limitaciones de agentes en cuanto a la licencia, otro punto interesante es que es un producto totalmente hecho en la región, por lo cual tendremos soporte en nuestro idioma y quién sabe , quizás nos toque el gusto de poder conversar con el mismísimo Nicolas Gudiño en algún momento 😀

Espero les sirva la información

Módulo de seguridad en Elastix : Restringir el acceso al Entrorno Web

julio 2, 2012 9 comentarios

Normalmente posteo cosas sobre inseguridad, sin embargo debido a mucha inquietud sobre Hacking VoIP  y aveces desconocimiento del mismo, me anime a realizar este pequeño post … al grano entonces.

El proyecto Elastix, a parir de la versión 2.0.4, incorporo el módulo de seguridad , el cual como parte de sus funcionalidades, trae un completo gestor de FIREWALL (Iptables en background) para el manejo de puertos y servicios, es evidente que para muchos, el manejo de IPTABLES , puede ser un dolo de cabeza, sin embargo la incorporación de este feature , permitirá la administración de los puertos de acceso un poco mas amigable.

Justificación : No es novedad, que uno de los vectores mas importantes, son los ataques a nivel de aplicaciones web, ya que regularmente aparecen siempre nuevas vulnerabilidades, para ayudarnos en este tema, vamos a ver, como nos puede ayudar el modulo de seguridad y lo contextualizo en el siguiente ejemplo.

Escenario :
Restringir el acceso a la interfase web de administración de Elastix, solo desde una dirección IP especifica, digamos que sea la de nuestra maquina, ya sea interna o externa.

NOTA IMPORTANTE : El uso erróneo de la siguiente configuración puede dejarlos sin acceso completo al entorno de administración , no me responsabilizo, si no aplican bien o interpretan mal el instructivo.

PROCEDIMIENTO

1.- Activar Contrafuegos
Con el objetivo de asegurarnos, si las reglas por defecto, no van a producir algún problema, en nuestra configuración actual, tener cuidado sobre todo con las troncales SIP.

Pulsar sobre el Boton : Activar Contrafuegos

Una vez realizado esto, el firewall quedara activado como se muestra en la siguiente imagen

2.- Cambiar la configuración de la regla 12(http) y 15(https)
Cambiar las reglas que apunta a los servicios http y https que aceptan todas las conexiones de entrada (opción por default) para que ahora solo permita conexiones a nuestra dirección IP en este caso va ser la  :   192.168.10.244

A) Ubicar las reglas http y https

B) Editar las reglas y cambiar el parámetro “Dirección Origen” con la dirección IP a la cual daremos acceso

Regla para HTTP

Regla para HTTPS

C) Finalmente tendrían que quedar de la siguiente forma, una vez modificadas.

3.- Aplicar las reglas del Contrafuegos

Dar click en el boton “Guardar Cambios”

Finalmente, de este modo, realizaremos lo que se conoce como filtrar por origen, en este caso, solo estamos dando acceso a una dirección IP en especifico, de igual forma, pueden aplicar el mismo proceso para los servicios SSH e inclusive SIP.

Espero les sirva la información.

Mas información sobre el modulo de seguridad de Elastix : http://www.elastix.org/index.php/es/component/content/article/67-newstest/523-elastix-launches-security-module-10012011.html

Categorías:Asterisk, Centos, Hacking, Linux

Anonymous sip calls in Elastix 2.2.0

noviembre 29, 2011 21 comentarios

Hace unos meses se lanzo la flamante nueva versión  de Elastix , la 2.2.0 , donde se anunciaban , todo un conjunto de mejoras ,no solo a nivel de administración , si no también a nivel de seguridad.

No lo pensé mucho y actualice la pbx , y después de usarla aproximadamente 1 semana , no me puedo quejar , puedo comprobar que esta nueva versión es muy estable , ya que  la 2.0.x no me había dejado muy buena sensación en ese sentido.

Desde ya, la mayor novedad es el uso de Asterisk 1.8.7.0 , y la muy renovada interfase de usuario , que ahora viene con una pestaña “Security” en donde se puede configurar fácilmente la apertura y cerrado de puertos, lo cua les muy importante.

Después de afinarlo y darle alguna seguridad básica a ssh , decidí que los mas duros críticos en la red , para validar la seguridad de las IP PBX , me hagan el favor, estoy hablando de mis amigos de Europa del este , japon , etc.etc. A estas alturas pienso que nos andamos siguiendo los pasos 😀 , es por ello que no configure  fail2ban ni sipcheck para revisar logs.

Después de unos días , como esperaba tenia un incidente , que a continuación detallo :

1.- PRIMERA EVIDENCIA – REPORTES
El domingo pasado , revisando los reportes , me pareció raro , ver este tipo de registro:

Donde la información detalla , llamadas desde el canal “SIP/62.146.72.141-0000002a”  con destino a la estension “s”  respondida y con duración de 13s. lo cual me alarmo un poco,

2.- SEGUNDA EVIDENCIA – LOGS

Luego de ir a los logs, y revirarlo , pude encontrar lo siguiente :

A) Primer registro

Numero llamado : 00442032987303
Destino : Gran Bretaña
Tipo de llamada : llamada en modalidad anónima
Respuesta a nivel de software : la llamada es respondida y fuerza espera (wait) de 2 segundos y luego el canal se corta.

B) Segundo  registro

Numero llamado : 001442032987303
Destino : EEUU
Tipo de llamada : llamada en modalidad anónima
Respuesta a nivel de software : la llamada es respondida y reproduce el audio “ss-noservice” y luego el canal se cierra.

C) Tercer  registro

Numero llamado : 900442032987306
Destino : Gran Bretaña
Tipo de llamada : llamada en modalidad anónima
Respuesta a nivel de software : la llamada es respondida y fuerza espera (wait) de 2 segundos, luego reproduce el audio “ss-noservice”

3.- ANALISIS DEL DIALPLAN

Los registros mostrados en el punto 2 , muestra que todos los intentos , son procesados por el contexto “from-sip-external”  , realizando una revisión al “extensions.conf” encontramos dicho contexto.

Observaciones:

– Al inicio del conexto, existe unos comentarios que se puede traducir “Si esto realmente intenta lo que se quiere hacer , Sabemos que existe quejas en Asterisk al respecto de esto, pero sabemos los que estamos haciendo, esto es correcto”

– El dialplan del contexto en general lo que hace es evaluar el origen de la llamada, comprueba que es una llamada sin autentificar , y reproduce los audios no-service y los tonos congestions

4.- CONCLUSIONES

– Mejoras en el desarrollo , Es claro que estos arreglos ,  muestran el gran esfuerzo del equipo de Elastix , en tener un producto, cada vez con menos vectores, a nivel de seguridad,  y el trabajo en conjunto con los desarrolladores de Freepbx,

–  Vector cubierto , Cabe señalar que el vector esta ahí, Cabe señalar que el vector esta hay , mas halla de que tenga la opción “Allow Anonymous sip calls” con el valor “no” , es decir es posible realizar este tipo de intentos, sin embargo , no cumple su objetivo , lo cua les muy importante y que no sucedía en versiones anteriores, que es finalmente efectuar llamadas salientes.

– El candado, Por el contrario los atacantes , se encuentran con lo que se podría llamar “un candado a nivel dialplan” , esto me hace recordar algo que están llamando “anonymatron” usado para llamadas entrantes de ofertas.

Vamos a ver, que otras cosas iremos encontrando en el tiempo, para los que estamos del lado de la seguridad, desde ya espero que les sirva la información y felicitaciones al equipo de Elastix por darnos esta nueva versión,


Categorías:Asterisk, Hacking