Haciendo unas pruebas de seguridad en la instalación de Asterisk que
tengo en casa con vistas a probar SRTP o ZRTP, la primera prueba que
estoy haciendo es un ataque man-in-the-middle entre dos extensiones para
capturar el tráfico VoIP entre ellas.
En este escenario, el atacante es una máquina virtual con la cual estoy
intentando capturar el tráfico VoIP entre una PC con un softphone y un
teléfono Grandstream BT200.
Pero me llama la atención que entre la PC con el softphone y el teléfono
solo obtengo en la captura tráfico ARP o algunos ICMP Echo Request que
hice para probar entre estos dos equipos, pero no logro capturar el
tráfico RTP al hacer una llamada. En la máquina virtual atacante estoy
haciendo la captura con tcpdump usando la siguiente sintaxis donde
10.1.0.65 es la PC con el softphone:
# tcpdump -i eth0 -n host 10.1.0.65 -w dump
¿Se me está pasando alguna consideración u opción de captura que no
estoy teniendo en cuenta?
Gracias anticipadas por responder.
Saludos,
Daniel
--
Daniel Bareiro - GNU/Linux registered user #188.598
Proudly running Debian GNU/Linux with uptime:
06:49:10 up 10 days, 11:09, 10 users, load average: 0.00, 0.02, 0.00
> Hola!
Hola, Saúl!
> > Haciendo unas pruebas de seguridad en la instalación de Asterisk que
> > tengo en casa con vistas a probar SRTP o ZRTP, la primera prueba que
> > estoy haciendo es un ataque man-in-the-middle entre dos extensiones
> > para capturar el tráfico VoIP entre ellas.
> >
> > En este escenario, el atacante es una máquina virtual con la cual
> > estoy intentando capturar el tráfico VoIP entre una PC con un
> > softphone y un teléfono Grandstream BT200.
> >
> > Pero me llama la atención que entre la PC con el softphone y el
> > teléfono solo obtengo en la captura tráfico ARP o algunos ICMP Echo
> > Request que hice para probar entre estos dos equipos, pero no logro
> > capturar el tráfico RTP al hacer una llamada. En la máquina virtual
> > atacante estoy haciendo la captura con tcpdump usando la siguiente
> > sintaxis donde 10.1.0.65 es la PC con el softphone:
> >
> > # tcpdump -i eth0 -n host 10.1.0.65 -w dump
> >
> >
> > ¿Se me está pasando alguna consideración u opción de captura que no
> > estoy teniendo en cuenta?
> Salvo que captures en el propio host por donde pasa el audio o en una
> red que use un hub no vas a 'ver' el tráfico, ya que no es para ti :)
>
> Para capturarlo tienes que hacer 'arp poisoning', es decir, envenenar
> las tablar arp para poner tu host atacante en medio de la
> comunicación.
>
> En esta presentación tienes la línea que hace el arp poisoning con
> ettercap:
> http://www.slideshare.net/saghul/in-seguridad-en-voip-presentation
Gracias por el enlace a la presentación. Justamente, estas pruebas que
comentaba que estoy haciendo son para acompañar con una demo una charla
que pienso dar sobre seguridad en VoIP en una materia llamada Sistemas
distribuidos :-)
Efectivamente, estoy usando arp poisoning con ettercap en la máquina
atacante para ver el tráfico entre la PC con el softphone y el teléfono
Grandstream. Para esto la sintaxis que estoy usando es la siguiente:
# ettercap -Tq -M arp:remote /10.1.0.65/ /10.1.0.38/
Donde 10.1.0.65 es la IP de la PC con el softphone y la IP 10.1.0.38
corresponde al teléfono Grandstream. Ahora bien, como decía, estoy
observando en este escenario lo que planteaba más arriba. El único
tráfico que veo inicialmente son paquetes ARP de 10.1.0.65 o 10.1.0.38
pero no veo paquetes RTP al hacer un llamado. Incluso, si hago un ping
desde 10.1.0.65 a 10.1.0.38 veo también los paquetes de request y
respuesta ICMP Echo Request, pero no logro capturar los paquetes VoIP,
lo cual me llama la atención.
¿Tengo que usar alguna opción adicional a la sintaxis que comentaba más
arriba con tcpdump?
Gracias por responder.
Saludos,
Daniel
--
Mi frase del día:
All I ask of life is a constant and exaggerated sense of my own importance.
Daniel Bareiro - GNU/Linux registered user #188.598
Proudly running Debian GNU/Linux with uptime:
14:17:23 up 10 days, 18:37, 10 users, load average: 0.00, 0.00, 0.00
El jueves 22 de abril del 2010 a las 21:03:07,
Saúl Ibarra Corretgé escribió:
> > Gracias por el enlace a la presentación. Justamente, estas pruebas
> > que comentaba que estoy haciendo son para acompañar con una demo una
> > charla que pienso dar sobre seguridad en VoIP en una materia llamada
> > Sistemas distribuidos :-)
> >
> > Efectivamente, estoy usando arp poisoning con ettercap en la máquina
> > atacante para ver el tráfico entre la PC con el softphone y el
> > teléfono Grandstream. Para esto la sintaxis que estoy usando es la
> > siguiente:
> >
> > # ettercap -Tq -M arp:remote /10.1.0.65/ /10.1.0.38/
> >
> >
> > Donde 10.1.0.65 es la IP de la PC con el softphone y la IP 10.1.0.38
> > corresponde al teléfono Grandstream. Ahora bien, como decía, estoy
> > observando en este escenario lo que planteaba más arriba. El único
> > tráfico que veo inicialmente son paquetes ARP de 10.1.0.65 o
> > 10.1.0.38 pero no veo paquetes RTP al hacer un llamado. Incluso, si
> > hago un ping desde 10.1.0.65 a 10.1.0.38 veo también los paquetes de
> > request y respuesta ICMP Echo Request, pero no logro capturar los
> > paquetes VoIP, lo cual me llama la atención.
> >
> > ¿Tengo que usar alguna opción adicional a la sintaxis que comentaba
> > más arriba con tcpdump?
> Así a botepronto no se me ocurre... Prueba a capturar normal (tcpdump
> -n -v -i eth0 -s0) en el servidor a ver si todo va way. Sino, mira a
> ver donde manda el RTP... :-S
Creo que ya me di cuenta por qué no estaba capturando tráfico VoIP.
Porque no hay tráfico directo entre 10.1.0.65 (la PC con el softphone) y
10.1.0.38 (el teléfono Grandstream) sino que es entre cada parte y el
servidor Asterisk, claro :-) Entonces, ahora sí usando ettercap con la
IP del servidor Asterisk y 10.1.0.65, puedo capturar y reproducir los
llamados desde esta IP a 10.1.0.38 o viceversa.
Es un avance, aunque la reproducción desde Wireshark se escucha un tanto
retardada. ¿Es normal que suceda esto?
Por otra parte, tuve que cambiar el orden de preferencia de los codecs
en el sip.conf del servidor para que de preferencia a G711 por sobre
GSM, porque lo tenía configurado en un orden de preferencia inverso y
veo que el RTP player de Wireshark no soporta GSM. ¿Sabés de alguna
manera para reproducir GSM directamente desde los paquetes capturados?
Saludos,
Daniel
--
Daniel Bareiro - GNU/Linux registered user #188.598
Proudly running Debian GNU/Linux with uptime:
07:30:39 up 11 days, 11:50, 10 users, load average: 0.13, 0.06, 0.01
El viernes 23 de abril del 2010 a las 12:58:50,
Saúl Ibarra Corretgé escribió:
> > Es un avance, aunque la reproducción desde Wireshark se escucha un
> > tanto retardada. ¿Es normal que suceda esto?
> >
> > Por otra parte, tuve que cambiar el orden de preferencia de los
> > codecs en el sip.conf del servidor para que de preferencia a G711
> > por sobre GSM, porque lo tenía configurado en un orden de
> > preferencia inverso y veo que el RTP player de Wireshark no soporta
> > GSM. ¿Sabés de alguna manera para reproducir GSM directamente desde
> > los paquetes capturados?
> En GNU/Linux mal asunto... te recomiendo que para esto uses Cain&Abel
> desde un windows. Tiene un bonito botón llamado 'Poison' así que nada
> de preocuparse de ettercap. Además puedes reproducir audio hasta en
> g729 :)
Sí, había leído algo al respecto. Intentaré probarlo abriendo la captura
y reproduciéndola en un equipo con Windows usando Cain&Abel porque aquí
en casa tengo solo GNU/Linux y OpenBSD. ¿Eso que te decía más arriba de
que la reproducción se escuchaba como retardada desde Wireshark es algo
que también hayas experimentado?
Por otra parte, me están pidiendo que haga una demostración práctica de
las contramedidas. Si bien lo más práctico es lo de las VLANs, no creo
que al menos esa solución pueda probarla aquí en casa porque mi switch
no es tan sofisticado como para eso. Entonces había pensando en probar,
por ejemplo, SRTP o SIP sobre TCP/TLS. ¿Has llegado a implementar esto
sobre Asterisk 1.4? En tal caso, ¿Podrías recomentarme algún buen
documento al respecto? Estoy usando actualmente Asterisk 1.4.24.1.
Gracias por responder.
Saludos,
Daniel
--
Daniel Bareiro - GNU/Linux registered user #188.598
Proudly running Debian GNU/Linux with uptime:
08:37:48 up 20 days, 12:57, 10 users, load average: 0.05, 0.04, 0.01