Hola, se supone no hay que pedir Auth en un re-INVITE y que es suficiente con comprobar "!has_totag()" dentro de ""loose_route()".
Se me ha ocurrido probar el Sipp, crear un XML tratando de colarme al añadir un "Route" (para que pase por "loose_route()") y poniendo un tag aleatorio en el "To".
Entonces sólo con conocer la IP y puerto público donde escucha un cliente podemos llegar hasta él sin más que poner en el XML:
INVITE sip:ibc@86.35.221.20:22723 SIP/2.0 Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch] Route: sip:88.95.0.210;lr=on;ftag=[call_number] From: sipp sip:sipp@mydomain.org:[local_port];tag=[call_number] To: ibc sip:[service]@[remote_ip]:[remote_port];tag=aaaaa ...
Y lanzando "sipp":
sipp -sf mi-invite-trampa.xml ip_server -s ibc -r 100 -m 1
Bueno, pues obviamente ese paquete es rechazado por MI cliente Twinkle (que es muy listo) y devuelve:
481 Call Leg/Transaction Does Not Exist
Pero el caso es que llega. Es decir, existe una forma muy sencilla (la que he descrito) de echar algo de peste sobre una red interna por muy protegida que esté vía firewall (incluso aunque sólo permita paquetes SIP desde el proxy) y tan sólo conocer: - Su proxy SIP. - Un nombre de usuario. - Su IP pública o bien la del NAT. - Suponer que se mapea en el NAT el puerto también al 5060.
En fin, que lo que toca es entonces fiarse de los clientes SIP que sabrán rechazar estos mensajes por no pertenecer a ninguna transacción (al contener un "tag" en el "To" del que no se sabía nada).
Pero me vienen entonces a la cabeza todos esos ataques SIP que tumban algunos softphones como el X-Lite, OpenWengo y un montón más con sólo enviar algún parámetro con valor "malintencionado" (length = valor negativo y cosas así).
En fin, ¿qué opináis? ¿hay que dejar esto así sin más?
PD: Obviamente, aún en el caso de solicitar auth para el re-INVITE también podría repetir lo anterior enviando cualquier otro mensaje.
Saludos.
No se hasta que punto podemos "fiarnos" del !hast_totag(), pero adivinar el valor del tag por casualidad sería _demasiada_ casualidad, y si suponemos (que es mucho suponer) que la peña implementa bien las cosas, no debería haber problema.
No obstante, efectivamente están empezando a surgir ataques contra softphones, mira este que wapo, con exploit y todo! Con sigue el shell de windows: http://www.blueboxpodcast.com/2007/08/blue-box-video-.html
Por cierto, me he dado cuenta que en el re-INVITE yo tengo puesta la autenticación... debería quitarla? quiero decir, un softphone(decente) se autenticaría en un reinvite?
El 1/09/07, Iñaki Baz Castillo ibc@aliax.net escribió:
Hola, se supone no hay que pedir Auth en un re-INVITE y que es suficiente con comprobar "!has_totag()" dentro de ""loose_route()".
Se me ha ocurrido probar el Sipp, crear un XML tratando de colarme al añadir un "Route" (para que pase por "loose_route()") y poniendo un tag aleatorio en el "To".
Entonces sólo con conocer la IP y puerto público donde escucha un cliente podemos llegar hasta él sin más que poner en el XML:
INVITE sip:ibc@86.35.221.20:22723 SIP/2.0 Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch] Route: <sip:88.95.0.210;lr=on;ftag=[call_number]> From: sipp <sip:sipp@mydomain.org:[local_port]>;tag=[call_number] To: ibc <sip:[service]@[remote_ip]:[remote_port]>;tag=aaaaa ...
Y lanzando "sipp":
sipp -sf mi-invite-trampa.xml ip_server -s ibc -r 100 -m 1
Bueno, pues obviamente ese paquete es rechazado por MI cliente Twinkle (que es muy listo) y devuelve:
481 Call Leg/Transaction Does Not Exist
Pero el caso es que llega. Es decir, existe una forma muy sencilla (la que he descrito) de echar algo de peste sobre una red interna por muy protegida que esté vía firewall (incluso aunque sólo permita paquetes SIP desde el proxy) y tan sólo conocer:
- Su proxy SIP.
- Un nombre de usuario.
- Su IP pública o bien la del NAT.
- Suponer que se mapea en el NAT el puerto también al 5060.
En fin, que lo que toca es entonces fiarse de los clientes SIP que sabrán rechazar estos mensajes por no pertenecer a ninguna transacción (al contener un "tag" en el "To" del que no se sabía nada).
Pero me vienen entonces a la cabeza todos esos ataques SIP que tumban algunos softphones como el X-Lite, OpenWengo y un montón más con sólo enviar algún parámetro con valor "malintencionado" (length = valor negativo y cosas así).
En fin, ¿qué opináis? ¿hay que dejar esto así sin más?
PD: Obviamente, aún en el caso de solicitar auth para el re-INVITE también podría repetir lo anterior enviando cualquier otro mensaje.
Saludos.
-- Iñaki Baz Castillo
Users-es mailing list Users-es@openser.org http://openser.org/cgi-bin/mailman/listinfo/users-es
El Sábado, 1 de Septiembre de 2007, Saúl Ibarra escribió:
No se hasta que punto podemos "fiarnos" del !hast_totag(), pero adivinar el valor del tag por casualidad sería _demasiada_ casualidad, y si suponemos (que es mucho suponer) que la peña implementa bien las cosas, no debería haber problema.
En realidad ahora que lo pienso mejor es más sencillo: Si un cliente SIP recibe un INVITE (o lo que sea) con un totag directamente lo rechaza ya que en una nueva llamada no debe haber totag (ese campo lo rellena el llamado cuando hace el OK al aceptar la llamada.
Otra cosa es que la trampa consista en "meterse" en una llamada existente y enviar un re-INVITE para, por ejemplo, redirigir el audio a otro sitio y cosas así (o por joder sin más).
Aún en ese caso, una llamada (de la que los clientes SIP obviamente sí tienen constancia no como un proxy SIP) se identifica con los tags del From y del To y con el call-id. Serían necesario que coincidiesen los 3.
Ahora, que si alguien snifa la red y programa un software que pille ese datos y envíe un BYE pues ya la tenemos liada... (de hecho me suena haber leído que eso ya existe).
No obstante, efectivamente están empezando a surgir ataques contra softphones, mira este que wapo, con exploit y todo! Con sigue el shell de windows: http://www.blueboxpodcast.com/2007/08/blue-box-video-.html
Acojonante.
Por cierto, me he dado cuenta que en el re-INVITE yo tengo puesta la autenticación... debería quitarla? quiero decir, un softphone(decente) se autenticaría en un reinvite?
Yo al principio, supongo que por temas paranoicos también la ponía, pero Jesús me recomendó no ponerla. Eso sí, en el REFER ponla.
El 1/09/07, Iñaki Baz Castillo ibc@aliax.net escribió:
El Sábado, 1 de Septiembre de 2007, Saúl Ibarra escribió:
No se hasta que punto podemos "fiarnos" del !hast_totag(), pero adivinar el valor del tag por casualidad sería _demasiada_ casualidad, y si suponemos (que es mucho suponer) que la peña implementa bien las cosas, no debería haber problema.
En realidad ahora que lo pienso mejor es más sencillo: Si un cliente SIP recibe un INVITE (o lo que sea) con un totag directamente lo rechaza ya que en una nueva llamada no debe haber totag (ese campo lo rellena el llamado cuando hace el OK al aceptar la llamada.
Otra cosa es que la trampa consista en "meterse" en una llamada existente y enviar un re-INVITE para, por ejemplo, redirigir el audio a otro sitio y cosas así (o por joder sin más).
Aún en ese caso, una llamada (de la que los clientes SIP obviamente sí tienen constancia no como un proxy SIP) se identifica con los tags del From y del To y con el call-id. Serían necesario que coincidiesen los 3.
Ahora, que si alguien snifa la red y programa un software que pille ese datos y envíe un BYE pues ya la tenemos liada... (de hecho me suena haber leído que eso ya existe).
Si, tienen que coincidir muchas cosas...
No obstante, efectivamente están empezando a surgir ataques contra softphones, mira este que wapo, con exploit y todo! Con sigue el shell de windows: http://www.blueboxpodcast.com/2007/08/blue-box-video-.html
Acojonante.
Me quede flipado! :P
Por cierto, me he dado cuenta que en el re-INVITE yo tengo puesta la autenticación... debería quitarla? quiero decir, un softphone(decente) se autenticaría en un reinvite?
Yo al principio, supongo que por temas paranoicos también la ponía, pero Jesús me recomendó no ponerla. Eso sí, en el REFER ponla.
En el REFER si que tengo, pero en el re-INVITE ahora la quito. Thanks por el tip! :)
-- Iñaki Baz Castillo
Users-es mailing list Users-es@openser.org http://openser.org/cgi-bin/mailman/listinfo/users-es
sr-users-es@lists.kamailio.org