Hoy vamos a destripar uno de los dispositivos tecnológicos más antiguos, presente en multitud de iglesias: los sistemas de velas eléctricas. Pueden parecer dispositivos tontos, pero todo lo contrario.
Como casi todo hoy en día, tienen su corazoncito, su puerto ethernet, puerto USB y como no, ¡su propio firmware!
Foto cortesía de hoy.com.ec Las velas eléctricas son la nueva moda en las iglesias de Cuenca |
Debido a que todavía estamos trabajando junto con el proveedor para el parcheo de las vulnerabilidades, en el presente post únicamente podremos mostrar una breve introducción del sistema y algunas de las conclusiones fruto del trabajo realizado durante meses y meses. Veremos como, By Default, la seguridad de estos sistemas deja mucho que desear.
Funcionamiento interno (hardware)
El mecanismo del portavelas es muy sencillo. Os mostramos un pequeño diagrama a continuación (vista aérea):
Diagrama de funcionamiento del portavelas eléctrico |
El mueble consta de dos partes: el circuito de LEDs (1) y la placa base (2). Esta última es la que contiene la lógica de, una vez introducida la moneda por la ranura, determinar cual de las luces pertenecientes a todo el circuito debe encenderse. El modo por defecto es aleatorio y puede configurarse, junto a otros parámetros, a través de una interfaz web.
Analizando el firmware
Tras determinar el fabricante del dispositivo (el cual no podemos desvelar de momento), nos dirigimos a su página web para descargar el último firmware disponible.
Una vez descargado, hacemos ingeniería inversa sobre el fichero y os podemos adelantar las conclusiones más llamativas tras el análisis:
- El sistema operativo corresponde con creoendiOS, personalizada por el fabricante cuya base corresponde con el sistema OpenWRT.
- La contraseña por defecto de root es "aguabendita".
- La contraseña por defecto del usuario admin para el panel web de administración es "innominepatris", todo junto.
- Posee los siguientes puertos abiertos:
- 22/TCP - SSH para administración remota por consola
- 80/TCP - Administración web
- 443/TCP - Administración web segura
- 666/TCP - Puerto de administración a modo de backdoor, que permite acceder a la administración sin necesidad de introducir usuario o contraseña.
Dirigiéndonos al funcionamiento principal del sistema (encender velas con monedas), se detectó un demonio corriendo sobre el sistema operativo, llamado "monitMoneda", sobre el cual recaía la funcionalidad de comprobación del tipo de moneda, para posteriormente encender más o menos velas según la ofrenda:
- 5 céntimos = 1 vela
- 50 céntimos = 10 velas
- 1 euro = 15 velas
Curiosamente, existía un caso dentro del bloque selector, en el que había otra casuística: monedas de 500 pesetas. Si bien aparentemente el dispositivo no aceptaba moneda diferente a euros, el fabricante mantuvo la moneda de 500 pesetas para que una vez introducida, se activase un modo de depuración para el sistema.
En el próximo post, enseñaremos cómo fue posible, gracias al modo de depuración y el acceso completo al menú de administración del sistema, conseguir algo como lo siguiente:
Escribiendo mensajes personalizados con velas eléctricas (sin ofrenda) |
Iremos actualizando el siguiente enlace a modo de wiki con más información acerca de la investigación, y permaneced atentos al blog, ¡sobretodo para la segunda parte!
13 comments :
Feliz día de los inocentes a vosotros también!! ;)
XDDDDD
¡¡Muy bueno!! Curradísimo!! XDD
¡Enhorabuena chicos! ¡Feliz día de los inocentes!
Una buena inocentada. Os ha salido genial. Muy currada.
Grandeee. Lo de innominepatris todo junto ya me ha sonado raro pero el backdoor en el puerto 666 ha sido épico!! Enhorabuena. Espero con ansia la segunda parte
Buenisimo jajajaja cuando lei la contraseña aguabendita ya cai del dia jajajaja
Pues en el enlace que ponéis no me sale ninguna wiki!!! ;-)
Muy bueno, jajaja, feliz dia de los inocentes ;)
aguabendita jajaj
Joder, la he leído hoy y me la he comido entera ajajjajajajajajja
Genial. El puerto abierto explica muchas cosas !!!
Hay una pequeña errata, la variable LATCH tiene valores distintos en los scripts. Muy bueno, lo he modificado para usarlo con pam-script y xscreensaver, funciona genial.
Estoy intentando hacer lo mismo en FreeNAS 9.3 (basado en FreeBSD). El script de emparejamiento que estoy usando es este: http://pastebin.com/tSJDkubH (es el mismo del post, pero con un par de cambios y por supuesto mi applicationid y mi secretkey). Al ejecutarlo, siempre obtengo: {"error":{"code":102,"message":"Invalid application signature"}}. Estoy 100% seguro que mi applicationid y mi secretkey están bien. Estoy pensando en algún error en FreeBSD al convertir la cadena a base64 o tal vez antes al hacer la firma. Alguien tiene alguna idea de por donde puede estar el error? Muchas gracias!
Como podria hacer para parear latch con una pagina web que no tenga la opcion de lath, como por ejemplo gmail o con cuentas de las universidades?
Publicar un comentario