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