Conversión Anytone AT-D868UV en AT-D878UV

En esta guía vamos a explicar cómo se puede convertir un walkie talkie Anytone AT-D868UV en el nuevo modelo AT-D878UV, ya que sólo existen diferencias de software entre ambos, siendo el hardware el mismo.

Aunque para hacer honor a la verdad, esta última afirmación no es estrictamente cierta. Existen tres versiones diferentes del Anytone AT-D868UV en cuanto a hardware:

  • V1: Lleva un microcontrolador modelo GD32F303VE de 512 KB de Flash. Utiliza el firmware V1 (v1.xx).
  • V2 “inicial”: Tiene varios cambios de diseño y mejoras en el PCB, pero sigue utilizando el GD32F303VE de 512 KB de Flash y firmware V1 (v1.xx). Sí, un tanto confuso.
  • V2 “final”: Es como la V2 “inicial”, pero lleva un microcontrolador modelo GD32F303VG con 1 MB de Flash y utiliza el firmware V2 (v2.xx).

En España este walkie llegó un año tarde y aparentemente todas las unidades se corresponden con la versión V2 “final”, por lo que potencialmente todos son convertibles al AT-D878UV, con el que comparte hardware.

¿Cómo saber si tu unidad lleva el GD32F303VE o el GD32F303VG? Muy fácil, ábrelo. Es la manera más fiable. En el momento de escribir este artículo no se ha encontrado aún una correspondencia entre versiones de hardware y números de serie, por lo que la única manera es abrirlo. Más adelante te explico cómo. Recuerda que la versión convertible lleva el GD32F303VG.

Mejoras

¿Qué características y funcionalidades ganaremos con la conversión?

  • APRS por FM (“analógico”)
  • APRS configurable vía menú desde el walkie
  • Roaming (cambio automático entre repetidores DMR)
  • Soporte para Talker Alias
  • Nuevo esquema de colores de alto contraste
  • Y futuras mejoras del AT-D878UV, ya que el desarrollo del AT-D868UV parece estar paralizado desde la salida al mercado del nuevo modelo

Descarga de responsabilidad

Esto es un procedimiento experimental que anula completamente la garantía y puede dañar el aparato de forma irreversible.

Personalmente he podido convertir varias unidades de forma satisfactoria, y ninguna ha sufrido ningún tipo de daño. Sin embargo, no puedo garantizar que estos pasos sirvan para tu unidad, ni me hago responsable de los daños que puedas causar. Si sigues adelante, es bajo tu entera responsabilidad.

Material necesario

Para la operación se ha utilizado el siguiente material:

Software necesario

Necesitamos un sistema Windows donde tengamos descargado todo lo siguiente:

1. Pasos previos

1.1. Exportar nuestro actual codeplug desde el CPS que corresponda a la versión de firmware que tengamos en nuestro AT-D868UV.

1.2. Anotar el Serial Number y la fecha de fabricación del equipo que aparece en el apartado “Local Information”, ya que se corrompe durante el proceso y hay que restaurarlo al final.

Ojo, que el número de serie que figura en esta ventana es diferente al que aparece en la pegatina trasera del equipo, bajo la bateria.

Modal de “Local Information” con el número de serie y la fecha de fabricación

1.3. Hacer un MCU Reset. Para ello, hay que encenderlo manteniendo PTT + PF1.

MCU Reset de la radio

2. Desmontaje

2.1. Retirar la antena y la batería.

2.2. Quitar los dos tornillos Torx que se alojan en la parte inferior del walkie, bajo la batería.

Retirada de los dos tornillos Torx bajo la batería

2.3. Quitar las dos ruedas superiores (volumen y canales). Salen simplemente tirando con firmeza.

2.4 Desenroscar la pieza metálica del conector de antena. Para ello, nos podemos ayudar de una pinza o un destornillador de punta plana.

Retirada de la pieza metálica del conector de antena (I)
Retirada de la pieza metálica del conector de antena (II)

2.5. Retirar la goma que se aloja en el hueco de la antena con la ayuda de unas pinzas.

Retirada de la goma estanca del conector de antena

2.3. Desenroscar las piezas metálicas de las ruedas superiores. De nuevo con la ayuda de una pinza o destornillador de punta plana.

Retirada de piezas metálicas de las ruedas
Elementos retirados hasta ahora

2.4. Separar el chasis metálico de la carcasa plástica con la ayuda de un objeto plano. Hay que realizar un poco de palanca con cuidado en una de las esquinas.

Apertura del equipo

2.5. Desconectar las cintas flex. Hay dos cintas, una gruesa para la pantalla, y una más fina para el GPS. Debemos empujar el mecanismo con la ayuda de unas pinzas curvas para liberar las cintas. Esta operación debe hacerse con cuidado, ya que tanto los conectores como las cintas son muy delicados.

2.6. Separar la placa del frontal. Ojo, que en este paso se caerán dos gomas negras alojadas en el hueco de las ruedas de canales y volumen. No hay que perderlas.

2.7. Comprobar el modelo de MCU que tenemos. Si es el GD32F303VG entonces estamos de enhorabuena. El chip es el que aparece en la esquina inferior derecha, el más grande de la placa.

Debemos comprobar el modelo de la MCU, abajo a la derecha

3. Preparación del ST-Link

3.1. Conectar el ST-Link con los cables de la breadboard. Los tres pines del ST-Link que necesitamos son:

  • SWCLK (señal de reloj)
  • SWDIO (datos)
  • GND (masa)

Cuidado, porque hay modelos de ST-Link que tienen los pines en distinto orden. Fijaos en la serigrafía del vuestro.

3.2. Construir un conector que encaje en los agujeros de la placa. En mi caso he utilizado un poco de cinta de carrocero para mantener los pines unidos, y he doblado las patillas para que tengan la distancia correcta entre ellas.

El sentido de los terminales según está orientado el walkie en las imágenes es:

  • Clock – Ground – Data

4. Sustitución del bootloader

Aquí es donde realizamos la transformación del AT-D868UV en AT-D878UV. Vamos a cambiar el bootloader escribiendo directamente en la memoria flash del MCU, lo que hará que el CPS reconozca la unidad como un AT-D878UV genuino y nos permita cargar su firmware.

4.1. Colocar la batería. Yo la he sujetado con un alambre plastificado. Se pueden usar también bridas, gomas, o incluso nada si tenemos cuidado. La batería apoya bastante bien por sí sola.

Batería sujeta con un alambre plastificado

4.2. Configurar el STM32 ST-Link Utility. Para ello debemos ir a “Settings”, establecer el tipo de conexión en modo SWD a 4,0 MHz, y modo de conexión “Normal”.

Configuración ST-Link

4.3. Copia de seguridad completa de la flash del MCU. Con el fin de poder revertir la conversión, o de recuperar el walkie en caso de que algo haya salido mal, haremos una copia de seguridad completa del chip. Para ello, configuraremos la siguiente dirección de memoria y tamaño de volcado:

  • Address: 0x08000000
  • Size: 0x100000
Copia de seguridad del contenido original de la MCU

Una vez establecidos los parámetros haremos lo siguiente:

  1. “Target / Connect”
  2. “File / Save”, y ponedle preferentemente extensión “.hex”

Este archivo es muy importante porque nos permitirá volver atrás en caso de que queramos revertir la conversión o que surjan problemas, así que debemos guardarlo en un lugar seguro y que podamos recordar.

4.4. Sustitución del bootloader. Aquí es donde ocurre la conversión. Necesitaremos este archivo:

A continuación, vamos a escribirlo en el walkie. Para ello, realizaremos los siguientes pasos:

  1. Con el walkie apagado, lo encenderemos en modo actualización de firmware manteniendo pulsados PTT + PF3 (botón naranja). El led parpadeará en rojo.
  2. Conectamos el cable del ST-Link a la placa del walkie.
  3. Vamos a “Target / Program & Verify” en el menú.
  4. Seleccionamos el archivo “878MCU_bootloader.hex” descargado antes.
  5. Marcamos “Verify while programming”.
  6. A continuación pulsamos “Start”.
  7. La programación del bootloader se completa en menos de 1 segundo.
Escritura del bootloader en la MCU

5. Carga del firmware del AT-D878UV

5.1. Carga del firmware. Bajaremos el último CPS correspondiente al modelo AT-D878UV y cargaremos su firmware siguiendo las intrucciones del fabricante como con cualquier otra actualización al uso. En esencia sería:

  1. Encender en modo actualización de firmware manteniendo pulsados PTT + PF3 (botón naranja). El led parpadeará en rojo.
  2. Utilizar el CPS para escribir el firmware en el walkie.
  3. Encender en modo factory reset manteniendo pulsados PTT + PF1. Nos preguntará si queremos reinicializar el walkie. Decimos que sí.
MCU Reset de la radio

5.2. Actualización de iconos. De nuevo, siguiendo las intrucciones del fabricante, cargaremos la actualización de iconos en el walkie.

  1. Encender en modo actualización de iconos manteniendo pulsados PTT + PF2.
  2. Utilizar el CPS para escribir la actualización de iconos en el walkie.
Modo de actualización de iconos

6. Restaurar el número de serie

6.1. Descargar y descomprimir el siguiente ZIP:

6.2. Abrir el archivo “normaltestmode.CDD” con un editor hexadecimal. Por ejemplo, para Windows podemos usar HxD.

6.3. Buscar la posición en el archivo donde se encuentra el número de serie y escribir el nuestro encima. Es muy importante no borrar nada de lo que hay, ya que en ese caso desplazaremos el contenido del archivo. Debemos pinchar en el primer dígito y a continuación escribir los dígitos de nuestro número de serie, sobreescribiendo los existentes.

Modificación de “normaltestmode.CDD” con un editor hexadecimal

6.4. Podemos hacer lo mismo con la fecha de fabricación si la tenemos previamente anotada.

6.5. Modo actualización de iconos. Debemos encender en modo actualización de iconos manteniendo pulsados PTT + PF2.

Modo de actualización de iconos

6.6. Escribir el archivo en el walkie. Vamos al CPS, elegimos “Tool / Firmware Upgrade” en el menú, y escribimos el archivo “normaltestmode.spi” en el walkie como si fuese una actualización de firmware al uso.

7. Restaurar el codeplug

7.1. Restaurar el codeplug desde el CPS.

7.2. Actualizar la BBDD de contactos. Podemos aprovechar el momento para cargar en el walkie la base de datos más reciente.

7.3. Revisar la configuración del walkie. El AT-D878UV tiene nuevas opciones de configuración. Echa un vistazo en el CPS para dejarlo a tu gusto.

Fin

Y ya está. Llegados a este punto deberíamos tener un walkie AT-D878UV completamente funcional en el que tenemos disponibles todas las nuevas características de este modelo, y actualizaciones estándar desde CPS.

Ahora a disfrutarlo.

Referencias

Esta guía se basa en una recopilación de información de diferentes fuentes, ordenada y organizada convenientemente para proporcionar un procedimiento claro y sencillo de seguir.

La información ha sido obtenida de:

Charla PMR 7-7: Radiocomunicaciones de emergencia en montaña


¿Sabías que unos walkie talkies de supermercado te pueden salvar la vida en montaña? ¿Conoces la iniciativa Canal 7-7 PMR?

Este viernes daremos una charla en Erandio (Bizkaia) sobre el empleo de radios de bajo coste y uso libre en montaña, y cómo pueden ayudar a enviar comunicados de emergencia en zonas sin cobertura de telefonía móvil. Si haces excursiones a la montaña y vives cerca, ven. Te puede salvar la vida.

Walkie talkies Baofeng y legalidad

Últimamente veo muchas preguntas en diversos foros sobre el uso de los famosos walkie talkies chinos Baofeng en España, sobre todo para actividades de ocio al aire libre como montañismo o Airsoft. Mi intención con este post es aclarar las dudas sobre la legalidad y los posibles usos de estos walkies chinos en España.

Baofeng UV-5R, el modelo más habitual

Baofeng UV-5R, el modelo más habitual

Si no conoces los Baofeng te contaré que son unos walkie talkies chinos de muy bajo coste, en torno a 30€ o menos en Amazon España, que emiten en frecuencias de radioaficionado de VHF y UHF con una respetable potencia de 5W. Hasta hace poco, para acceder a algo así tenías que irte a marcas como Kenwood o ICom, y gastarte del orden de 200€ o más.

Estos talkies se están poniendo de moda porque tienen unas prestaciones muy buenas al mismo precio que unos walkies PMR de uso libre, pero los Baofeng permiten cambiar la antena, emitir con más potencia (hasta 10 veces más que un PMR, 500mW vs 5W), y escuchar frecuencias de uso profesional. Funcionan en el rango de 130-176 MHz en banda VHF, y en 400-520 MHz en banda UHF.

Qué son y qué no son los Baofeng

Los Baofeng son walkie talkies para uso exclusivo de radioaficionados con licencia y dentro de las frecuencias atribuidas para éstos. Así de simple.

No pueden ser utilizados bajo ningún concepto por una persona sin licencia o con licencia caducada, ni fuera de los rangos 144-146 MHz y 430-440 MHz establecidos por el plan de bandas de la IARU para la Región 1, dentro de la que se encuentra España. Tampoco pueden utilizarse como PMR, como veremos más adelante.

Baofeng de origen chino y de origen europeo

Todos los Baofeng se fabrican en China, pero para que una tienda europea venda productos electrónicos, los productos tienen que cumplir con la legislación europea. Esto marca la diferencia entre los Baofeng comprados directamente a una tienda china como AliExpress, o aquellos comprados dentro de territorio europeo.

Los Baofeng comprados en China vienen con pegatina “China Export” y unos rangos de frecuencias que no se corresponden con el Plan de Bandas de la IARU para España. Por lo tanto, su uso no es legal incluso teniendo licencia de radioaficionado.

Baofeng de origen chino, donde se puede ver que no hay referencia alguna a normativas europeas, y las frecuencias de operación indicadas no son válidas en Europa.

Baofeng de origen chino, donde se puede ver que no hay referencia alguna a normativas europeas, y las frecuencias de operación indicadas no son válidas en Europa.

En cambio, los Baofeng comprados dentro de territorio europeo cuentan con marcado CE, rangos de frecuencia correctos, y mención a las normativas europeas que debe cumplir. Estos sí se pueden utilizar en España, como veremos más adelante.

Baofeng de origen europeo, con la normativa europea y frecuencias correctas.

Baofeng de origen europeo, con la normativa europea y frecuencias correctas.

Preguntas y Respuestas

P: Me he comprado un Baofeng para escuchar. ¿Es legal?
R: Sí y no. La escucha es legal, y si no vas a transmitir con el Baofeng no incurres en ningún delito. Sin embargo, si sales a la calle y algún miembro de las fuerzas del orden te ve con el talkie, muy posiblemente te pida la documentación. Y al tener un aparato que puede transmitir sin contar con la licencia pertinente te multará, ya que no puedes demostrar que sólo estabas escuchando. Si quieres escuchar en tu casa, perfecto, pero si lo quieres llevar encima o en el coche mejor cómprate un escáner.

P: Quiero usarlo como PMR. ¿Se puede?
R: No. Aunque lo configures en frecuencias PMR y con el límite de potencia establecido para ellos (500mW), los Baofeng no están autorizados para su uso dentro de esa banda. Además, también se violarían otros requisitos de la banda de PMR, como que la antena no sea desmontable ni exceda cierta ganancia. Si quieres trabajar en esta banda tendrás que comprarte unos PMR.

P: Subo mucho a la montaña y lo quiero para emergencias. ¿Qué opinas?
R: Lo ideal sería contar con licencia, pero en este caso mi opinión es flexible. Si has subido a la montaña sin compañía y sufres un accidente en una zona de sombra GSM con riesgo para tu vida, en mi opinión, el uso de una radio sin licencia o incluso fuera de las frecuencias establecidas para radioaficionados está plenamente justificado. ¿Es legal? No, pero qué importa cuando tu vida puede estar en riesgo. Una recomendación entre radioaficionados con licencia que practican montañismo en zonas de costa es llevar memorizada la frecuencia de emergencias de la banda marítima (156.800 MHz), además de la frecuencia de la Red de Emergencias REMER (146.175 MHz). Ninguna de las dos está autorizada para radioaficionados, pero ante una emergencia con riesgo vital qué más da. Recuerda también llevar tu móvil con alguna aplicación que te proporcione tus coordenadas GPS para pasarlas por radio, y un silbato.

P: Lo quiero para establecer comunicación en caso de catástrofes. ¿Se puede?
R: Aquí hay que distinguir entre catástrofes puntuales, y destrucción del orden mundial tal y como lo conocemos. Si de repente nos vemos inmersos en un mundo post-apocalíptico como en The Walking Dead, ¿a quién le importan las licencias? Pero si lo que queremos es contactar con los nuestros o ayudar en caso de terremoto, ataque terrorista, o cualquier otra circunstancia que interrumpa las comunicaciones habituales, en ese caso de verdad que te recomiendo sacarte la licencia de radioaficionado. No es muy cara, no es difícil, y si ocurre algo estarás capacitado para ayudar. Sabrás manejar las estaciones, construir antenas, utilizar correctamente los repetidores, y sobre todo no interferir en comunicaciones de emergencia que pudieran estar haciendo otros radioaficionados. Y si quieres, podrás ser colaborador de la Red de Emergencias REMER, formada por radioaficionados voluntarios para ayudar de forma organizada ante este tipo de situaciones.

P: Me la pela la legalidad. Me lo he comprado, hablo sin indicativo, y nunca ha pasado nada.
R: Hay gente que lo hace y no pasa nada, efectivamente. Pero el examen y la licencia están ahí por algo. Es necesario conocer cierta normativa para poder operar los equipos correctamente, ya que no es sólo cuestión de que quemes o no tu talkie, sino de que generes interferencias o problemas de recepción en equipos cercanos, estropees repetidores, o afectes a sistemas críticos. No será la primera vez que haya que revisar los transmisores cercanos a un aeropuerto porque hay algún equipo desajustado que causa interferencias en la radio de la torre de control. Saber la localización de todos los transmisores de una zona es importante. Si emites sin licencia no estás catalogado, y por lo tanto si generas un problema no pueden encontrarte para arreglarlo (y no hablo de multas). Además, los radioaficionados con licencia tienen prohibido por ley hablar con usuarios no identificados, por lo que pueden ser sancionados, y sí se sabe quienes son ellos porque tienen que identificarse al principio de cada transmisión.

P: Tengo licencia, pero mi talkie es de origen chino y no lleva la pegatina europea. ¿Puedo usarlo?
R: No, así que mejor no lo saques a la calle. Todos los equipos deben llevar la pegatina CE (no la de China Export, que es muy muy parecida) y cumplir la normativa europea. Si lleva pegatina china, su uso no está autorizado.

P: Tengo licencia, mi talkie es europeo, pero lo tengo abierto de bandas. ¿Puedo usarlo aunque sólo transmita en frecuencias de radioaficionado?
R: Esto es casi el mismo caso que el punto primero. Vale, tienes licencia, tu talkie supera la regulación europea, pero si está abierto de bandas está modificado a posteriori y ya no cumple el Plan de Bandas. No obstante, lo más seguro es que si un agente de las fuerzas del orden te ve con él y le enseñas tu DNI junto con la licencia, no mire más. Pero si investiga el aparato y ve que está abierto de bandas podrías ser multado. Si lo tienes abierto para poder llevar las frecuencias de emergencia antes mencionadas, es un riesgo asumible. Pero si lo quieres para escuchar no lo saques de casa, o compra otro para ese menester y el que lleves encima que esté cerrado, o compra un escáner.

Comentarios finales

Espero que esta entrada haya ayudado a resolver algunas dudas sobre los usos y legalidad de este tipo de talkies en España. Y de paso aprovecho para animar a aquellos que tengáis curiosidad por la radio a sacar la licencia de radioaficionado. De hecho, os diré dos cosas:

  • Si no quieres hacer exámenes o gastar pasta en licencias, la banda CB-27 es de uso completamente libre desde mayo de 2014. No hace falta examinarse, ni pagar nada, ni ir a Telecomunicaciones a registrar aparatos. Simplemente te compras una emisora, la enchufas, y a funcionar. En el mercado de segunda mano encontrarás multitud de equipos a muy bajo precio.
  • Pero si quieres ir en serio échale un vistazo a los requisitos de la licencia de radioaficionado EA. El examen es fácil, el coste no es muy alto (23€ examen + 111€ licencia, para siempre), y te autoriza a transmitir en todas las frecuencias atribuidas a radioaficionados en España. En la red tienes multitud de exámenes resueltos y resúmenes del temario. Consulta más información en la página del Ministerio de Industria.

Filtración de contraseñas en 000webhost

Me acaba de saltar una alerta de have i been pwned? sobre una nueva filtración de contraseñas.

Estamos hablando de la friolera de 13 millones de contraseñas en claro filtradas de la base de datos de usuarios de 000webhost, uno de los proveedores de hosting gratuito más habituales.

La base de datos de contraseñas se filtró en marzo de 2015, y desde entonces se ha estado vendiendo en foros por un precio de unos $2.000. Que se venda significa que aquellos que la hayan comprado esperan obtener un retorno económico de ello. Dicho de otra manera, esperan que las víctimas hayan reutilizado sus contraseñas de 000webhost en otros sitios de Internet y puedan robarte dinero de alguna manera.

Lo peor de todo este asunto es la estrategia seguida por 000webhost cuando el investigador de seguridad Troy Hunt les informó de ello: le ignoraron completamente y no avisaron a sus clientes. 000webhost ha reseteado silenciosamente las contraseñas de todos sus clientes, pero no les ha advertido de que, si han reutilizado su contraseña en otros sitios, pueden estar gravemente expuestos. En ese sentido, la actuación de 000webhost ha sido lamentable.

Si tienes cuenta en 000webhost y has reutilizado la contraseña en otros sitios de Internet, ve y cambia tus credenciales en todos esos sitios ahora mismo.

Si quieres leer más sobre la nefasta gestión de 000webhost ante el incidente, aquí tienes la investigación completa de Troy Hunt:

Breaches, traders, plain text passwords, ethical disclosure and 000webhost

Charla “Seguridad en Aplicaciones Web”

Este año voy a dar una charla dentro del programa de cursos de verano que organiza el grupo e-ghost en la Universidad de Deusto. Estos son los datos básicos de la convocatoria:

  • Tema: Seguridad en Aplicaciones Web
  • Fecha: 17 de julio, 12:00
  • Lugar: Bilbao, Facultad de Ingeniería de la Universidad de Deusto, aula 105L
  • Duración: 2 horas

En la charla analizaremos las 10 debilidades de seguridad más comunes que se cometen durante el desarrollo de una aplicación web, con ejemplos de cómo se podrían explotar y qué impacto tendrían en el negocio.

Analizaremos fugas de información, inyección de código en formularios, falsificación de peticiones, debilidades de autenticación, y mucho más. ¿Te lo vas a perder?

Para asistir hay que inscribirse previamente. Puede asistir cualquier persona, pero si se llena tendrán prioridad los alumnos y ex-alumnos de la Universidad de Deusto.

Los cursos de verano del grupo e-ghost se van a impartir del 13 al 24 de julio en la Facultad de Ingeniería de la Universidad de Deusto, en Bilbao. Puedes ver el programa completo aquí:

Hay charlas y talleres muy interesantes. ¡Anímate!

Actualización: Ya puedes consultar las transparencias utilizadas en la charla:

Muchas gracias a todos por asistir.

Sobre los 5 millones de contraseñas de Gmail

El pasado 10 de septiembre se desataba la noticia de que se habían filtrado nada menos que 5 millones de contraseñas de Gmail en claro. Rápidamente todos los medios de comunicación especializados se hicieron eco de la noticia y la alarma corrió por foros y redes sociales. Más tarde Google emitió un comunicado indicando que sus sistemas no habían sido vulnerados, y desde entonces nada más se ha vuelto a saber.

La sospecha es que las contraseñas no habían salido de Google, sino de algún otro sitio en Internet menos protegido. Digamos del “Blog Pepe”. La noticia también apuntaba a que, probada una pequeña muestra de la filtración, se podía inferir que el 60% de las contraseñas publicadas eran válidas en Gmail. Esto significa que al menos el 60% de las personas de esa lista utiliza la misma contraseña en Gmail que en “Blog Pepe”.

El listado de cuentas comprometidas se puede encontrar fácilmente en Internet. El listado completo con contraseñas no es mucho más difícil de conseguir. Yo he dado con él, y me he permitido cargarlo en un SQLite para sacar el Top 20 de contraseñas más utilizadas. Ahí va:

TOP 20 de Contraseñas

Posición

Contraseña Apariciones

1

123456 23116
2 password 5569
3 123456789 5379
4 12345 3974
5 qwerty 2922
6 12345678 2491
7 111111 1682
8 abc123 1499
9 123123 1476
10 1234567 1352
11 1234567890 1343
12 iloveyou 925
13 1234 923
14 password1 895
15 27653 889
16 000000 808
17 zaq12wsx 738
18 monkey 722
19 qwerty123 717
20 tinkle 716

De este listado se pueden extraer varias conclusiones:

  • La contraseña más utilizada es “123456”, seguida de “password”.
  • La mayor parte de las contraseñas son exclusivamente numéricas, las más fáciles de reventar por fuerza bruta.
  • Prácticamente todas representan secuencias sobre el teclado, y no sólo “123456” y derivados, sino también “qwerty” y “zaq12wsx”.
  • En general, las contraseñas son muy cortas, entre 6 y 8 caracteres.
  • Las que no son números ni secuencias son palabras del diccionario.

Las filtraciones de contraseñas están a la orden del día. En este caso la filtración no parece proceder de los sistemas de Google, pero en ocasiones pasadas se han visto comprometidos muchos sistemas de grandes compañías como Adobe (152 millones), mail.ru (casi 5 millones), Forbes (1 millón), Yahoo (medio millón), Vodafone (56.021), Sony (37.103) y muchos más. Puedes comprobar si tu cuenta está afectada visitando have I been pwned?

Siento decirte que si tu cuenta aparece en la filtración de Gmail, o en cualquier otra, tu email va a pasar a estar en las listas de los spammers de todo el mundo. Prepárate para recibir SPAM como un bellaco.

Y a continuación algunos consejos para minizar daños en el futuro:

  • Utiliza contraseñas únicas. No puedes evitar que un sitio web se vea comprometido, pero al menos puedes evitar que la información que extraigan sirva para acceder a otros servicios donde estés registrado. Utiliza una contraseña diferente en cada sitio web en el que te registres, o como mínimo hazlo en los sitios importantes.
  • Utiliza contraseñas complejas. Sobre todo en los servicios importantes. Asegúrate de que tengan más de 12 caracteres y que incluyan números, letras mayúsculas y minúsculas, y algún símbolo.
  • Tu cuenta de correo es la llave de muchas puertas. Protégela adecuadamente con una clave robusta y accede sólo desde ordenadores confiables, preferentemente el tuyo propio.
  • Activa la autenticación en dos pasos en todas tus cuentas. Esta opción está disponible en Google, Apple, Microsoft, Facebook, y muchos más. Te permite pasar de un escenario donde la llave es “algo que sabes” a un escenario mucho más seguro del tipo “algo que sabes + algo que tienes”.
  • Plantéate el uso de un llavero offline de contraseñas. Esto te permitirá manejar contraseñas complejas sin volverte loco, y de paso te olvidarás del típico problema de “¿qué usuario/email utilicé para registrarme en esta web?”. Tienes muchas opciones, aunque me centraré en algunas de Software Libre: KeePass para Windows, KeePassX como opción multiplataforma, y KeePassDroid para Android. Ya no tienes excusa.
  • Cambia periódicamente las contraseñas de tus cuentas principales. Tus cuentas importantes merecen un cambio de contraseña cada cierto tiempo. Si estás utilizando un llavero offline puedes incluso especificar la caducidad de la contraseña, y él mismo te avisará llegado el momento.
  • Utiliza una segunda cuenta de correo destinada exclusivamente como método de recuperación de tus cuentas principales. Prácticamente cualquier servicio importante permite introducir una segunda cuenta de correo para recuperación de clave en caso de olvido o robo. Utiliza una contraseña única y almacénala en lugar seguro fuera incluso de tu llavero offline. Un trozo de papel guardado en casa servirá. En general no necesitarás acceder a ella, pero debes ser capaz de recordar dónde pusiste la clave.

Con estos consejos espero que en la próxima filtración os veáis menos expuestos.

Curso Asterisk (VIII): Plantilla mínima de configuración

En un comentario del capítulo anterior he recibido una petición que me ha parecido suficientemente interesante como para dedicarle una pequeña entrada independiente.

En el comentario, el autor pide si sería posible publicar el contenido de los archivos sip.conf y extensions.conf reducidos a su mínima expresión, sin extensiones de ejemplo ni ningún tipo de relleno, salvo los parámetros de seguridad mencionados en el correspondiente capítulo.

A continuación, os pongo el contenido de dichos archivos. Lo que incluyen es lo mínimo imprescindible, justo el esqueleto sobre el que empezar a definir vuestras extensiones y vuestro dialplan.

Atención a los siguientes tres parámetros que tendréis que adaptar a vuestra instalación:

  • udpbindaddr: Cambiar el puerto de ejemplo 42187 por uno mayor que 1024 y que no esté en la lista de puertos conocidos.
  • externhost: Debes tener un servicio de DNS dinámico para que Asterisk pueda resolver tu IP pública. Hay múltiples opciones gratuitas que encontrarás en esta lista de proveedores. Uno de los más conocidos es No-IP. Indica en este campo el dominio que hayas creado, y asegúrate de instalar el programa cliente correspondiente que mantenga actualizada tu IP. Si te pierdes en este punto te recomiendo buscar una guía sobre DNS Dinámico.
  • localnet: Adapta el rango y la máscara de red en función de la configuración de tu red local.

El Dialplan básico quedaría resumido a lo siguiente:

Os animo a seguir enviando sugerencias sobre los contenidos que queráis ver publicados en este espacio. Intentaré darle salida a todas las propuestas que me resulten interesantes.

Índice del Curso Asterisk:

Curso Asterisk (VII): Seguridad

Desde el capítulo 5 estamos conectados a proveedores VoIP, lo que significa que un atacante malintencionado podría generarnos pérdidas económicas si no tuviéramos bien configurado nuestro Asterisk.

Configurarlo correctamente no parece complicado: das de alta tus extensiones y tus proveedores, y listo. Todo tiene clave, todo parece estar bien. ¿Seguro? Desgraciadamente, la implementación SIP de Asterisk es insegura en su configuración por defecto y necesitaremos saber lo que estamos haciendo para proteger nuestro sistema de usos no autorizados.

Pero que no cunda el pánico, porque si has seguido el curso al pie de la letra, ya has ido aplicando sin saberlo una gran parte de las medidas que detallaremos en el presente capítulo. Aun así presta atención, ya que es necesario conocer ciertos detalles para no meter la pata cuando crees por ti mismo tu configuración, y para poder llevar a cabo otras cosas que hasta ahora no hemos hecho.

 

1. Cambia el puerto por defecto

Estás en tu casa, tienes una IP dinámica, y te sientes seguro. ¿Crees que nadie escaneará tu Asterisk desde el exterior? Te equivocas.

Existe un importante negocio de venta de minutos de voz a través de servidores vulnerables, por lo que el puerto 5060/UDP es ampliamente escaneado en Internet. Si no quieres que tu servidor forme parte de esta red lo mejor es que no lo encuentren, y un primer paso es cambiar el puerto por defecto para pasar un poco más desapercibidos.

Modifica el puerto en la propiedad udpbindaddr de /etc/asterisk/sip.conf, eligiendo un valor por encima de 1024 que no esté en la lista de puertos conocidos. En este ejemplo usaremos el 42187, pero tú debes elegir otro:

A continuación reinicia Asterisk. Después, tendrás que reconfigurar tus clientes y la tabla NAT de tu router para reflejar el cambio de puerto.

Por supuesto, la seguridad basada en el ocultamiento de información no es una buena estrategia de seguridad, pero no nos vamos a quedar aquí. Nuestro objetivo es securizar correctamente Asterisk basándonos en otros mecanismos. Este primer punto simplemente persigue el objetivo de ser más discretos bajo el radar.

 

2. Cambia el User Agent

Nuestro Asterisk tiene la mala costumbre de dar demasiada información. Concretamente indica a cada visitante que se trata de un servidor Asterisk e informa de la versión exacta que estamos utilizando. No hay mayor problema en que indique lo que es, pero es una mala idea que devuelva la versión. Vamos a cambiarlo.

Debemos editar /etc/asterisk/sip.conf y añadir la propiedad useragent en la sección general:

Como siempre, hay que reiniciar Asterisk para que los cambios se apliquen.

 

3. El contexto por defecto siempre es de rechazo

Cuando un usuario no autenticado accede a nuestro Asterisk, se utiliza el contexto definido en la sección [general] para definir las acciones que puede realizar este usuario. Por supuesto no vamos a permitir usuarios anónimos en nuestro sistema, pero debemos asumir que esta situación podría darse ante la aparición de un bug de seguridad o por una mala configuración.

Para minimizar los riesgos y la capacidad de acciones de un atacante anónimo, siempre vamos a definir un contexto en la sección [general] que no permita hacer nada. Es decir, colgará toda llamada incondicionalmente.

De esta manera, un atacante anónimo que consiga pasar por alto la autenticación no podrá realizar llamadas.

 

4. No permitas invitados

Asterisk por defecto permite que usuarios sin autenticar hagan llamadas a través del sistema. ¿Cómo es eso? Mira:

Parámetro Valor por defecto Descripción
allowguest yes Permite que los usuarios anónimos (sin autenticar) realicen llamadas a través del contexto definido en [general]

Para evitarlo tendremos que añadir la siguiente línea a nuestra sección [general]:

Sin esta línea, y sobre todo si tampoco has hecho lo indicado en el paso anterior, cualquiera podrá realizar llamadas a través de tu sistema sin necesidad de disponer de usuario y clave válidos.

 

5. No filtres información de extensiones

Otro problema es la exposición a ataques de fuerza bruta. Encontrado un servidor Asterisk, lo primero es dar con una extensión válida para empezar a probar claves sobre ella. La mayoría de servidores Asterisk tendrán definidas extensiones internas numéricas de tres o cuatro dígitos en total, así que es cuestión de probar el rango de extensiones [100, 9999]. Esto se puede hacer en muy poco tiempo con herramientas específicas, por ejemplo con SIPVicious.

Por defecto, Asterisk devuelve una respuesta diferente en función de si el usuario ha intentado registrarse con una extensión válida, aunque la contraseña enviada sea incorrecta. Esto permite a un atacante encontrar rápidamente nuestras extensiones para, a continuación, comenzar ataques de fuerza bruta sobre ellas.

Debemos configurar nuestro Asterisk de tal forma que siempre ofrezca la misma respuesta independientemente de si la extensión es válida o no. Esto evita problemas de fugas de información (information leakage) a nuestros atacantes.

Parámetro Valor por defecto Descripción
alwaysauthreject no Devolver siempre la misma respuesta independientemente de si el usuario es válido o no.

Debemos añadir la siguiente línea a nuestra sección [general]:

 

6. La configuración NAT siempre en la sección general

Este es otro problema de filtrado de información de extensiones. Para entenderlo tenemos que saber cómo funciona SIP detrás de un NAT.

Cuando un cliente envía una petición a nuestro servidor, dentro del paquete SIP se especifica la IP y puerto a la que el servidor debe enviar la respuesta. El problema es que, si el cliente está detrás de un NAT, la IP y puerto indicados en la cabecera SIP se corresponden con su red interna privada, que no es alcanzable por el servidor. Cuando especificamos en la configuración de Asterisk “nat=force_rport”, estamos indicando al servidor que ignore la dirección de respuesta indicada en la cabecera SIP, y en su lugar utilice la indicada en el datagrama UDP, que está manipulada por el router NAT y apunta correctamente al servidor.

El problema de especificar “nat=force_rport” en cada extensión, como muchos ejemplos sugieren, es que cambia la respuesta del servidor en función de si la extensión existe o no. Un atacante podría ir probando extensiones componiendo un mensaje con un puerto en su cabecera SIP, y otro puerto diferente en su datagrama UDP. En función de en qué puerto reciba la respuesta sabrá si la extensión existe.

Para evitarlo, deberemos especificar la configuración NAT en la sección [general], para que así el servidor tenga un comportamiento uniforme.

Esto es algo que curiosamente no se suele mencionar, y la recomendación en la mayor parte de los ejemplos es especificarlo por extensión. A mi juicio, hacerlo por extensión supone un gran riesgo de seguridad.

 

7. Cuidado con los “insecure”

Nunca tengas un “insecure=very” o “insecure=invite” en la definición de una extensión interna de tu Asterisk. Si lo haces, estás permitiendo que cualquiera pueda hacer llamadas sin autenticarse con contraseña. Es decir, estarías permitiendo realizar llamadas sólo con adivinar una extensión válida. Esto es algo que también se ve en algunos ejemplos disponibles en Internet, así que cuidado con el copy&paste.

El parámetro “insecure=invite” (o “insecure=very”) se utiliza sólo en las conexiones con proveedores, ya que permite que ellos se comuniquen con nosotros sin tener que autenticarse, principalmente para entregarnos llamadas. Esto no supone un riesgo, ya que en este caso, el contexto definido para el proveedor lo que hará será hacer sonar una de nuestras extensiones internas, pero no realizar gasto a través de otro proveedor.

 

8. Limita el número de llamadas simultáneas

Si tu sistema se ve comprometido y un atacante tiene la oportunidad de realizar llamadas a través de tu Asterisk, no interesa que pueda canalizar demasiadas llamadas en paralelo.

Aunque normalmente los proveedores que utilicemos ya tienen una limitación de llamadas por su propia seguridad, es conveniente que nosotros también especifiquemos nuestros propios límites. Esto es tan simple como especificar el siguiente parámetro en cada extensión que hayamos definido:

Podéis especificar un límite razonable para minimizar los daños en caso de que nos veamos comprometidos, sin que ello nos limite nuestro propio uso razonable.

 

9. Revisa el registro de llamadas (CDR)

Esta es una tarea manual, pero es conveniente realizarla de vez en cuando. Asterisk guarda registro de todas las llamadas entrantes y salientes, y conviene echarle un vistazo de vez en cuando en busca de actividad sospechosa.

Los logs de llamadas están en la ruta: /var/log/asterisk/cdr-csv/Master.csv

Si lo prefieres, en el logrotate puedes hacer que se envíe una copia a tu email. Consulta la documentación de logrotate para saber cómo hacerlo.

 

10. Utiliza Fail2Ban

Lo que viene aquí es aplicable a Asterisk 10 o superior.  Las versiones anteriores no disponen de un log específico para seguridad, y Fail2Ban no será capaz de detectar todos los ataques posibles contra nuestra centralita.

Fail2Ban es una herramienta utilizada para detener accesos por fuerza bruta mediante IpTables. Su funcionamiento se basa en el análisis de logs en busca de patrones. Cuando detecta cierto número de intentos en un intervalo de tiempo, bloquea la IP del atacante añadiendo una regla de rechazo en IpTables. Es una herramienta fundamental para proteger cualquier servidor expuesto a Internet.

Primero debemos activar el log de seguridad en la configuración de Asterisk, y cambiar el formato de fecha del log para que Fail2Ban lo pueda interpretar correctamente. Debemos editar el archivo /etc/asterisk/logger.conf para hacer dos cambios:

Tras las modificaciones, recarga la configuración del logger:

Para instalar Fail2Ban en Debian y derivados debemos hacer:

Una vez instalado debemos añadir un filtro específico para el log de seguridad de Asterisk. Crea un nuevo archivo en /etc/fail2ban/filter.d/asterisk.conf con el siguiente contenido:

A continuación, debemos añadir las reglas para Asterisk en la configuración de Fail2Ban. Concretamente vamos a hacer que si un usuario comete 5 fallos en 24 horas, se le baneará de todo el servidor durante otras 24 horas. Esto limita a los atacantes a hacer un máximo de 5 intentos al día.

Añade este contenido al final de /etc/fail2ban/jail.conf

Reinicia el servicio de Fail2Ban para aplicar los cambios y ya estaremos protegidos:

Para conocer el estado de Fail2Ban con nuestra regla de Asterisk y ver cuántos atacantes ha filtrado, haremos lo siguiente:

Además de proteger nuestro Asterisk, Fail2Ban incluye por defecto reglas para diversos servicios, entre ellos SSH. Nuestro servidor estará ahora mucho mejor protegido frente a ataques de fuerza bruta.

 

Bonus Track: Malas Prácticas

  • No declarar “allowguest=no” en [general]
  • No declarar “alwaysauthreject=yes” en [general]
  • Permitir hacer llamadas desde el contexto definido en [general]
  • Definir la configuración NAT por cada peer, y no en [general]
  • Indicar “insecure=very” o “insecure=invite” en extensiones propias

Por cada uno de estos errores que cometas, ¡golpe de remo!

golpe_remo

Índice del Curso Asterisk:

OpenSSL Heartbleed, descripción gráfica

A veces es difícil explicar una vulnerabilidad a alguien que no tiene muchos conocimientos sobre seguridad. Cuando esto ocurre, una imagen suele funcionar mejor que una explicación técnica.

Esta imagen la he encontrado hoy y me ha encantado:

heartbleed_explanationRecordad que las versiones afectadas son:

  • OpenSSL 1.0.1 – 1.0.1f
  • OpenSSL 1.0.2-beta

Y que las siguientes versiones NO están afectadas:

  • OpenSSL 0.9.8 (all branches)
  • OpenSSL 1.0.0 (all branches)
  • OpenSSL 1.0.1g

Para actualizar en Ubuntu/Debian:

Si vuestro servidor utiliza OpenVPN-AS, que sepáis que utiliza sus propias librerías que tendréis que actualizar de forma independiente. Más información aquí:

OpenVPN Docs: Heartbleed vulnerability on Access Server 1.8.4 –> 2.0.5

Otros enlaces de interés:

Página oficial OpenSSL Heartbleed

Heartbleed Test

 

Curso Asterisk (VI): Lidiando con el NAT

El enemigo público número uno del protocolo SIP son las tablas NAT. El NAT es la principal causa de problemas a la hora de montar nuestro servidor Asterisk. Desafortunadamente para nosotros, debido a la falta de IPs públicas de IPv4, lo normal en nuestros hogares es que estemos detrás de un NAT. Por lo tanto, si queremos montar nuestro Asterisk dentro de casa, tendremos que pelearnos con él.

Si haciendo pruebas se obtienen alguno de estos resultados, casi seguro que estemos experimentando problemas derivados de estar dentro de una red privada con NAT:

  • Audio sólo en un sentido
  • Ausencia total de audio en ambos sentidos
  • No puedes recibir llamadas
  • Las llamadas se cortan transcurridos 10-30 segundos desde el establecimiento

 Los escenarios posibles son los siguientes:

  • El servidor está detrás de un NAT
  • Sólo un extremo está detrás de un NAT
  • Ambos extremos están detrás de un NAT
  • Ambos extremos y el servidor están detrás de un NAT

El escenario más complicado es el último, donde uno de los extremos de la conversación está detrás de un NAT, el otro extremo está detrás de otro NAT diferente, y el servidor está detrás de un tercer NAT.

Las soluciones que se encuentran por Internet en ocasiones resultan confusas, incorrectas o incompletas. Personalmente me ha costado mucho tiempo y esfuerzo dar con la solución definitiva. Afortunadamente para vosotros, una vez que tienes el conocimiento no es tan complicado aplicarlo. Lo vamos a ver en dos apartados: solucionar los problemas de los extremos, y solucionar los problemas del servidor.

Extremos detrás de un NAT

Deberemos añadir las siguientes dos líneas en la sección [general] de la configuración SIP de nuestro Asterisk:

Y punto. No tiene más misterio.

Servidor detrás de un NAT

Tenemos que hacer dos cosas. Por un lado, debemos abrir en el router los puertos necesarios hacia la IP de nuestro servidor Asterisk.

Para ello, debemos consultar el contenido de “/etc/asterisk.rtp.conf” y fijarnos en los valores de los parámetros “rtpstart” y “rtpend”. Por ejemplo:

Según el ejemplo, debemos abrir en nuestro router el rango de puertos 10000-20000/UDP, además del 5060/UDP correspondiente al protocolo SIP. Consulta el manual de tu router para saber cómo abrir puertos hacia la IP de tu servidor Asterisk.

Por otro lado, necesitaremos un servicio de DNS dinámico del tipo No-IP o FreeDNS. Si no sabes cómo hacerlo, en Internet hay numerosas guías que lo explican muy bien.

Vamos a suponer que tenemos un dominio “ejemplo.no-ip.org” correctamente configurado, y que el rango privado de IPs de nuestra red es del tipo “192.168.0.x”.  Deberemos añadir las siguientes líneas en la sección [general] de la configuración SIP de nuestro Asterisk:

Gracias a esta configuración, nuestro servidor Asterisk sabe cuándo las peticiones surgen desde dentro de la propia red privada del servidor, y cuándo provienen del exterior. En este último caso, en lugar de encapsular la IP privada del servidor en los paquetes SIP, utiliza la IP pública a la que apunta el dominio especificado. De esta manera, el extremo obtiene la IP de contacto correcta y puede responder correctamente al servidor.

Ejemplo completo

Supongamos lo siguiente:

  • Queremos poder contactar con extremos que estén detrás de un NAT
  • Nuestro servidor Asterisk está detrás de un NAT
  • El rango de IPs privadas de nuestro servidor Asterisk es de la forma 192.168.0.x
  • Tenemos un dominio DNS dinámico “ejemplo.no-ip.org” correctamente configurado con la IP pública de nuestro Asterisk

Para cumplir con estos objetivos, deberíamos añadir las siguientes líneas a la sección “general” de nuestra configuración SIP:

Consideraciones adicionales

  • Si los clientes disponen de ellas, conviene activar las opciones STUN e ICE.

 

Índice del Curso Asterisk: