29.9.12

Grave vulnerabilidad en Android / Codigos USSD, Wap-push SMS y tu movil arruinado en segundos


hace una semana se libero en la ekoparty2012 una vulnerabilidad que afecta a los equipos android en general, pero particularmente a los samsung se les puede hacer un hard-reset y blockeo de sim sin interaccion del usuario. si... sin tocar absolutamente nada puede que la proxima vez que quieras usar tu telefono te encuentres con que no tenes contactos, aplicaciones ni absolutamente nada, solo lo que viene en la rom de fabrica... ademas de una sim inservible que no puede salvar ni el operador de telefonia sin cambiarla por una nueva.

la tecnologia sigue avanzando y millones de personas tienen aparatos que practicamente no saben usar ni tienen la mas minima idea de como funcionan. ayer, comentando el asunto entre "profanos" note que casi no le daban importancia dado que no llegan a entender el alcance de algo asi. alguien con muchas ganas de molestar y sin demasiados conocimientos podria estarse dedicando a resetear equipos samsung todo el dia, solo hace falta mandar un sms con un formato especial y... pwned!! asi tambien se podria organizar un ataque masivo por parte de algun grupo mas organizado dejando sin telefonia a un gran porcentaje de la poblacion mundial.

obviamente esto se puede desactivar ademas de que samsung no tardo en responder y saco anteaayer un parche para solventar el problema, lo que no parece tan obvio es que el user comun no anda haciendo updates de su android cuando no los hace ni de su windows... de desactivar la opcion de recibir push sms ni hablar, hay q entrar a demasiados menus... je

si queres una solucion rapida anda al final de la entrada, si te interesa saber como funciona todo este tema a continuacion explico como funcionan cada una de las tecnologias que intervienen en el fallo y porque es posible.

como siempre digo... el futuro es del que domine a la maquina, no del que la posea... ;)

codigos USSD


el protocolo ussd (Unstructured Supplementary Service Data) es usado normalmente para comunicacion con el proveedor de telefonia, generalmente para servicios de mensajeria en tiempo real. es usado por Paypal de brasil, Airtel Money en la india, Mobipay en españa y muchas otras empresas en africa y otros lugares de europa.

el sistema es muy parecido al sms pero no tiene capacidad de almacenamiento, o sea que el mensaje que no se puede entregar en el momento se pierde... algo asi como un paquete udp, si llega llega y sino olvidate.

hay codigos propios del operador, del fabricante, codigos standard... uno de los mas comunes y q la mayoria habra usado alguna vez es el tipico:

*#06#

que nos devuelve el imei del aparato. pueden probarlo ingresandolo como si marcaran un numero de telefono normal y sale una ventana con el numero correspondiente.

tenemos tambien los codigos del operador, por ejemplo mucha gente gasta en sms o llamadas preguntando el saldo cuando con un simple ussd se puede saber gratis. en personal marcamos:

*150#

pero hay codigos mas "peligrosos", en los equipos Samsung se conoce uno que puede hacer un hard-reset al equipo que es lo que tanto revuelo trajo estos dias. el codigo en cuestion es:

*2767*3855#

este ultimo seria recomendable q no lo prueben... ;)

hay un pequeño detalle si comparamos los dos 1eros codigos, al ingresar el 1ero (al igual que el 3ero) no hace falta presionar el boton de marcar, el codigo se ejecuta automaticamente al ingresar el ultimo numeral (#).


el link html "tel"


hace unos años, aunque muchos no se dieron cuenta, existe la posibilidad de crear un link hacia un numero de telefono para la gente que navega desde sus moviles. simplemente haciendo click sobre el link el numero se ingresa en el marcador del telefono.

asi tambien se pueden hacer links para sms o skype pero no vienen al caso. el formato para un link a un numero telefonico podria ser asi:

<a href="tel:66660000">llamar al 66660000</a>

si estan viendo el blog desde un celular pueden probarlo en el siguiente link:

marcar 66660000

al hacer click se carga el numero pero, como es logico, no se marca sino que necesita la intervencion del usuario para hacerlo... o no? creo q ya se dieron cuenta por donde viene la historia... pero recien estamos empezando ;)

wap-push y el "sms of death"...


el wap-push es un tipo de mensaje que se usa para enviar contenido en forma de un link, se utiliza mucho en paginas a las que al enviar un sms a cierto numero nos devuelve otro con un link de acceso. este tipo de mensajes no muestra informacion sobre el sender, simplemente aparecen como "mensaje push" o algo parecido segun el sistema.

hasta ahi parece bastante inocente pero existen dos tipos de push, el SI (Service Indication) que envia el link y necesita de la intervencion del destinatario para cargarlo y SL (Service Load). este ultimo, que es el que nos interesa, se usa mas que nada para updates de software y carga directamente el contenido en el navegador predeterminado del sistema sin preguntarle a nadie.

hay que tener en cuenta que la palabra "contenido" es muy amplia... asi como se entrega un update se puede abrir una web determinada conteniendo cualquier cosa... por ejemplo un link "tel"...


el ataque


volviendo atras, habiamos visto que el codigo ussd para reset de samsung es publico, o sea que teniendo un equipo en la mano lo podemos borrar ingresandolo. tambien vimos que podemos poner en una pagina un link "tel" para que cargue cualquier numero, no hay que ser muy genio para darse cuenta que podemos poner el ussd en el link para que el dueño de un samsung que haga click se quede sin datos... no olvidemos el pequeño detalle de que no hay que presionar el boton de marcar para estos codigos, o sea que se ejecuta automaticamente.

otro vector de ataque del que no voy a hablar en tanto detalle son los codigos QR, por medio de uno se puede obtener el mismo resultado, y como "los profanos" estan siempre tan avidos de usar tecnologias nuevas que no entienden, no duden que algun malintencionado que empieze a pegarlos por ahi consiga muchas victimas.

... pero todavia seguimos necesitando que alguien interactue haciendo click en el link... o no? claro, con un push sms del tipo SL le hacemos cargar la web automaticamente.

ademas de esto en la demostracion del bug se hizo un blockeo de sim introduciendo por el mismo metodo codigos PUK erroneos. al hacer esto 10 veces el chip se blockea quedando inservible a tal punto que ni siquiera el operador lo puede recuperar, sino que entrega al usuario uno nuevo.

no voy a explicar como hacer esto y mucho menos como enviar un push sms ya que me parece demasiado peligroso como para que lo pueda hacer cualquier lammer que lea esto pero ciertamente es informacion que se puede encontrar en google bastante facil. el unico dato que pienso dar es que hasta hay aplicaciones en el play store que pueden hacerlo.

aca se puede ver una prueba a mi celular con un link a mi red local:


como se puede ver el sender sale simplemente como "mensaje push". el link tenia el ussd *#06#, cuando entro el mensaje simplemente abrio la pagina y ejecuto el codigo mostrandome la ventana con el imei sin que haga absolutamente nada.


como protegerse


samsung saco rapidamente un parche pero es solamente para el galaxy S3, como siempre se cuida al producto que se vende en el momento y los demas... que se compren un S3. si bien como decia al principio la mayoria no actualiza nada, aunque sea es un avance.

mas alla de parches lo primero que habria que hacer es rechazar los mensajes push. esto se setea desde la aplicacion de mensajes, en ajustes -> mensajes push, simplemente desactivando la casilla ya no se reciben este tipo de mensajes. para el tema de los links la solucion mas facil es instalar el opera mobile que antes de abrir un link del tipo "tel" pide autorizacion.

en el caso de tener el push activado pero el opera como navegador predeterminado el link nunca llega a abrirse solo. con el tema de los qr pasa lo mismo.

otra posibilidad es cambiar la aplicacion del dialer por otra como por ejemplo el TelStop, que resuelve el problema y se puede descargar gratuitamente del play store.


como saber si tu telefono es vulnerable


si queres saber si tu equipo es vulnerable hace click en el link de abajo, tiene el codigo ussd para mostrar el imei. deberia abrir la ventana con el numero correspondiente si lo es.

IMEI TesT



5 comentarios:

Anónimo dijo...

Muy buen post. Me saco muchas dudas y sobre todo pude anular los sms push que tanto me molestaban

Reconquista dijo...

Esta bueno para eso esta Eset ussd control que te dice cuando quiere acceder el código

|_ocutus dijo...

hola. si te fijas la fecha de lanzamiendo del soft:

ESET USSD Control
ESET - October 4, 2012
Tools

es posterior a la entrada, en ese momento la vulnerabilidad era nueva y no habia ningun soft para proteccion.

gracias x el dato y x comentar!


saludos

Anónimo dijo...

pido el saldo al *150# (personal) y me dice "problema de coneccion o codigo de MMI no valido" y no me dice cuanto saldo tengo a veces si lo puedo pedir pero otras veces me sale eso y no puedo saber cuanto credito tengo..no se como solucionar el problema.ojala alguien me pueda ayudar :-)

|_ocutus dijo...

hola. debe ser algun problema de señal. el codigo sigue funcionando perfectamente, lo uso todo el tiempo.


saludos!