No cON Name: FreePBX for fun and profit!

No cON Name, para el que no lo sepa, es una asociación sin ánimo de lucro cuyo principal objetivo, entre otros, es fomentar los mecanismos de la seguridad informática. Las conferencias comenzaron en un pub de Mallorca en el año 1999, dónde se juntaron 15 personas del “underground” español. No obstante, fue en el año 2002 cuando se inscribió como asociación sin ánimo de lucro.

Han pasado 13 años desde esa primera edición, y el pasado 2 y 3 de noviembre, en el CosmoCaixa de Barcelona, se realizó su novena edición. Personalmente, era la segunda No cON a la que asistía y tenía grandes expectativas por ver qué habían preparado. Se realizaron charlas que tocaron multitud de temas: malware, data harvesting, ciberseguridad, ipv6, nfc, android… Temas, que como se puede ver, son de manifiesta actualidad. Tan familiar era el ambiente, que los ponentes Pedro Laguna y Juan Garrido, en su charla “Data exfiltration, the ninja way” decidieron incluso realizar una charla en pijama.

Una de las charlas que más me gustó, quizás porque me recordó a algunas de las pruebas que se pueden encontrar en el curso “Penetration Testing with Backtrack”, fue la “FreePBX for fun and profit!”, por Jose Luis Verdeguer (@pepeluxx).

FreePBX es una distribución GNU/Linux que tiene como objetivo facilitar la instalación del software de centralita telefónica Asterisk.

En la charla, partiendo del acceso al panel de FreePBX, el ponente mostró como se puede tomar el control del sistema. Para ello, se basó completamente en fallos de diseño del sistema y en errores de configuración. Algo muy destacable, porque no se convirtió en una charla del estilo “buscamos un exploit, lo compilamos, lo ejecutamos, y ya somos el administrador de la máquina”, sino que únicamente mirando en las “tripas” de la distribución se pudieron realizar acciones realmente interesantes.

Partiendo del acceso al panel de FreePBX, Verdeguer consiguió escribir una shell en el sistema mediante la modificación del dialplan, aunque para ello tuvo que codificarla en hexadecimal. Como codificar y escribir la shell puede ser un proceso tedioso, lo automatizó mediante un script en Perl que realizaba todo el proceso.

Aprovechando la shell “reversa” que acababa de crear, accedió al sistema como el usuario asterisk, que utilizó posteriormente para acceder a MySQL puesto que por defecto no tiene asignada ninguna contraseña. No obstante, aun en el caso de que el administrador de la máquina se la hubiese asignado, el atacante la puede encontrar en el fichero de configuración “/etc/freepbx.conf”, por lo que de poco sirve en realidad asignársela. Algo similar ocurre con la configuración del Apache, donde el usuario asterisk también puede realizar “defacements”, al ser propietario de todo el panel web.

A continuación, @pepeluxx se propuso troyanizar el propio asterisk, para lo que modificó la configuración del mismo (que para variar, también es propiedad del usuario asterisk) para cargar los módulos desde un directorio donde tuviera permiso de escritura. Una vez modificado y compilado el código fuente del módulo (disponible en Internet ya que Asterisk es software libre), se pudo comprobar cómo en el proceso de compilación se inserta un hash en el propio módulo, con objeto de evitar que asterisk ejecute módulos que provengan de distintas compilaciones. No obstante, debido a que quizá sea un control que no ha sido pensado en la seguridad sino en garantizar el funcionamiento correcto del sistema, mediante el comando strings es posible el valor del hash, por lo que haciendo uso de un editor hexadecimal resulta sencillo sobreescribir dicha cadena por una válida.

En un entorno real, todas las modificaciones descritas se podrían realizar por parte del atacante para por ejemplo ganar dinero mediante la venta de llamadas, que aunque para él serían gratuitas, no lo serían tanto para el propietario del sistema. Para acabar la charla, se hizo un breve repaso a otras distribuciones que facilitan la instalación de asterisk, conteniendo todas ellas vulnerabilidades similares a las explicadas anteriormente.

Desde estas líneas me gustaría agredecer a la asociación No cON Name su dedicación y calidad del evento, esperando poder asistir a una nueva edición el año que viene.

Comments

  1. Muchas gracias por la crítica.

    Saludos