Hacking Visonic Powerlink2

Powerlink2 es un módulo para interconectar las alarmas de Visonic PowerMax a la red. Tenéis más info aquí: http://www.visonic-iberica.es/novedades.asp?seccion=&subseccion=&Id=76

Lo compré hace tiempo a Internet Ibiza. Unos máquinas, por cierto.

Hace poco que tengo uno, así que vamos a ir viendo si entre todos conseguimos hacernos con él.

Al configurarlo por DHCP siempre pone la IP .200 de la red que encuentre por DHCP y el resto de valores los rellena el sólo, y en principio sólo te da acceso vía Web (HTTP y HTTPS), con el usuario Admin y la contraeña Admin123 por defecto.

Lo primero vemos qué puertos abiertos tiene realmente:

nmap -p 1-65535 192.168.1.200

PORT     STATE SERVICE
22/tcp   open  ssh
23/tcp   open  telnet
80/tcp   open  http
443/tcp  open  https
2530/tcp open  unknown
2531/tcp open  ito-e-gui
2812/tcp open  atmtcp
6310/tcp open  unknown
7520/tcp open  unknown
8082/tcp open  blackice-alerts
8083/tcp open  us-srv
MAC Address: 00:12:6C:10:XX:XX (Visonic)

SSHd Puerto 22

Es un servidor SSHd Dropbear v0.52, que en principio no tiene ningún exploit remoto conocido para acceder al sistema.

Viendo otras fuentes de información como esta, esta o esta otra, al parecer, versiones antiguas (Powerlink1) tenían una contraseña por defecto relacionada con la versión de firmware del Powerlink y un usuario root2 con la contraseña visonic por defecto.

En mi caso la versión de firmware del Powerlink2 instalada es la 6.1.14 y la de Hardware la .123

Telnetd Puerto 23

Servidor telnet que el único dato que nos da es un prompt que dice BBA Login: pero que tampoco nos acepta ninguna contraseña por defecto, ni la genérica de acceso web ni las que aparecen en versiones anteriores de Powerlink

Accesos Web – Puerto 80/443

Es un servidor Apache con PHP:

Server: Apache/1.3.31 (Unix) PHP/4.3.9 mod_ssl/2.8.20 OpenSSL/0.9.7e
X-Powered-By: PHP/4.3.9
Set-Cookie: PowerLink=b4964df020eec507cf4e6de81f79251b; path=/

Además pone una Cookie PowerLink de 32 bytes.

Por otra parte, existe una web http://home.visonic.com que hace una especie de DNS dinámico y que añadiéndole detrás el ID o número de serie de un Powerlink registrado nos lleva al frontend web por HTTPS del módulo powerlink en cuestión, por ejemplo http://home.visonic.com/ID que es el identificador por defecto nos lleva al frontend de “alguien” que tiene un visonic. Uniendo esto al usuario/contraseña por defecto, nos da acceso a alguna que otra alarma perdida por el mundo. Ya no os cuento si os apetece hacer un script para verificar TODOS los números de serie de Powerlink que sólo tienen 6 cifras en hexadecimal, lo que viene a ser 16777216 combinaciones posibles, y probar los datos de acceso por defecto.

Seguimos con el resto de puertos:

Puerto 2530

Es el puerto que sirve el frontend por WAP, por tanto supondremos que hace lo mismo que el frontend HTTP.

Puerto 2531

Es el puerto que sirve el frontend Mobile para Smartphones

Puerto 2812

Aquí encontramos instalado el monit que sirve para gestionar y monitorizar procesos y programas, por lo que también sería una buena entrada. Vemos que la versión instalada es la 5.1.1 y aunque la actual es la 5.3 no vemos en el changelog ningún bug remoto interesante. Tampoco funciona ninguno de los usuarios por defecto.

Puerto 6310

No consigo averiguar para qué vale, te deja conectar, pero no devuelve ningún dato y tarda bastante en cerrar la conexión.

Puerto 7520

Este puerto sirve también el frontend vía SSL, parece que nos permite hacer lo mismo que por el puerto 80 o 443.

Puerto 8082 y 8083

Tienen un servidor ABYSS Web Server for XML-RPC For C/C++ version 1.21.0 que tiene un montón de bugs XSS, pero que no se por donde meterle mano. Voy a ver si me entero un poco de qué va este servidor.

NOTA: Si se os ocurre algo para ver por dónde meterle mano y acceder al sistema directamente enviarme un comentario.

Editado 26/09/2011

Rebuscando por ahí he encontrado un scanner de métodos de XML-RPC: http://code.google.com/p/intrinsec-xmlrpc-scanner/

Y aquí tenemos los métodos que soporta el servidor XML-RPC:

root@bt:/pentest/xmlrpc# ./Intrinsec-XMLRPC-Scanner.py -U http://192.168.1.200:8082 -v
Intrinsec – XML RPC Scanner – 0.4 – www.intrinsec.com
—————————————————–

[**] Server capabilities :
{‘introspect’: {‘specUrl’: ‘
http://xmlrpc-c.sourceforge.net/xmlrpc-c/introspection.html’, ‘specVersion’: 1}}

[**] 22 methods are enabled on ‘http://192.168.1.200:8082′ :

* system.listMethods ( [[‘array’]] )
* system.methodExist ( [[‘string’, ‘boolean’]] )
* system.methodHelp ( [[‘string’, ‘string’]] )
* system.methodSignature ( [[‘array’, ‘string’]] )
* system.multicall ( [[‘array’, ‘array’]] )
* system.shutdown ( [[‘int’, ‘string’]] )
* system.capabilities ( [[‘struct’]] )
* system.getCapabilities ( [[‘struct’]] )
* nmm.SetStatic ( undef )
* nmm.GetIp ( undef )
* nmm.SetIp ( undef )
* nmm.GetSubnet ( undef )
* nmm.SetSubnet ( undef )
* nmm.GetGateway ( undef )
* nmm.SetGateway ( undef )
* nmm.GetDns ( undef )
* nmm.SetDns ( undef )
* nmm.GetIsDynamicIpMode ( undef )
* nmm.SetIsDynamicIpMode ( undef )
* nmm.GetLinkStatus ( undef )
* nmm.GetDhcpStatus ( undef )
* nmm.GetArpStatus ( undef )
[**] Checking for XML RPC Log file (contains methods call log with parameters)
Testing
http://192.168.1.200:8082//xmlrpc.log
[**] No XML RPC log found.

[–] Tests finished.

Así que ya falta un poco menos. A ver si me animo y dejo un bruteforce sobre el servidor SSH o Telnet a ver si saca algo tranquilamente.