lunes, 9 de agosto de 2010

Hacking a IP Camera (ACTI ACM-4000)


Esta entrada la hago para recordarle a algunos estudiantes que las vulnerabilidades estan en cualquier parte y eso significa en cualquier dispositivo, en cualquier software, en cualquier momento, en cualquier persona, etc. Durante un análisis de vulnerabilidades es imprescindible no dejar pasar nada, les queda de lección ;)

Fig 1. Posando para la foto

También escribo esta entrada porque al parecer al fabricante nunca le importó este bug (reportado hace mas de 1 año) o fué que no encontré alguna referencia al mismo en la Internet?, de cualquier modo puede ser instructivo para todas las personas que trabajan en estas áreas ;)

NO prometo bajar el upgrade del firmware disponible en el sitio y volver a probar

La historia comienza en un pentest lejano con un barrido IP (como comienzan muchas historias, supongo ;), allí encontré unas camaras ip conectadas a la red que brindan (?) toda la seguridad de acceso físico, solo fueron como 20 o 30 cámaras ubicadas en un sector de 200 metros cuadrados.

Fig 2. Interfaz de acceso Web

Una vez entramos con un navegador a la IP de la camara, nos encontramos con un sistema de autenticación que usa al parecer CGIs, en este momento y con el permiso respectivo podemos planear hacer algunas pruebas para verificar la seguridad de este formulario de validación.

Lo primero es intentar las claves que vienen por omisión de fabrica y Bingo!, las cámaras son vulnerables a un ataque de passwords by defaults, pero que gracia tiene esto?, por si alguien quiere hacer pruebas, en el manual oficial encontramos que estas cámaras tienen los siguientes datos por omisión:

IP: 192.168.0.1
User: admin
Pass: 123456

Como fue tan fácil, decidimos explorar un poco la interfaz y nos damos cuenta que no hay permisos adecuados en el servidor web embebido que esta usando la cámara y esto nos permite listar el contenido de todo el directorio.

Fig 3. Listado de archivos y directorios del DocumentRoot

Por la forma en que se listan los archivos, los permisos, el color de fondo, etc, llegamos a la conclusión de que se trata de un sistema linux embebido dentro de la cámara que tiene un servidor web (thttpd) con soporte para CGIs.

Lo que hago a continuación es explorar un poco cada uno de los archivos y encuentro uno que me parece interesante.

Fig 4. Script test, el script vulnerable.

El script test al parecer invoca el programa iperf que nos permite hacer pruebas de conectividad entre diferentes maquinas y puertos, esto quizas sea usado por la cámara para conectarse al servidor maestro donde se almacenan los videos.

Fig 5. Probamos el funcionamiento normal

Como se puede ver en la imagen, el comando se ejecuta como si estuviera en un shell lo que me lleva a pensar si seria posible inyectar comandos en esa línea ...

Fig 6. Ejecución de comandos arbitraria dentro de la camara IP

Como ustedes ya deben de saber en una consola de linux es posible ejecutar varios comandos al tiempo dependiendo del éxito o no de los comandos anteriores, por ejemplo:

$ ls -la ; pwd ---> Esto ejecutará dos comandos

$ls -la || pwd ---> También

$ls -la && pwd ---> También

La diferencia esta en que unos se comportan como OR, AND o sin condiciones.
Lo más común es usar el símbolo ; que nos permite ejecutar un comando tras otro sin importar el resultado del comando anterior.

Fig 7. Listamos con permisos
Unas pruebas más ...

Fig 8. Linux Camera 2.4.19, usará aleatoriedad en el stack?

Fig 9. Las claves de estos htpasswd son las mismas, admin, 123456

Explorando un poco mas nos damos cuenta donde estamos ubicados dentro del sistema y verificamos si podemos alcanzar el /etc

Fig 10. /var/www/cgi-bin/

Fig 11. Listando el /etc

Podemos ver una estructura común de archivos en /etc, me decidí por buscar un archivo que pudiera contener información interesante.

Fig 12. Archivo de configuración de la cámara

Y de hecho así fue, en este archivo es posible encontrar la información del rango de red, las ip del servidor de almacenamiento, los algoritmos de compresión usados, etc. También el usuario y clave actual para ingresar a la cámara ip, esto significa que no importa cual clave este usando el administrador, siempre será posible entrar al panel administrativo, ver las cámaras, moverlas, etc.

Fig 13. Usuario y clave almacenados en el archivo de configuración

Fig 14. Access Granted!

Descargar los binarios o los scripts CGIs que tenia la cámara resultaba imposible, pues el servidor web siempre los ejecutaba antes de permitir descargarlos (el modo normal de funcionamiento), lo primero que a uno se le ocurre es cambiarle la extensión al archivo para intentar descargarlo:

(camara)$cp script.cgi script.txt
(cute-astrid)# wget http://IP/script.txt

Pero incluso con una extensión TXT el servidor no permitía la descarga de los ficheros, ¿por que?, quizás estaba verificando el header del archivo y por esto no lo permitía, en este punto y solo por probar lo que hice fue agregar un par de letras a la cabecera del binario y el servidor web lo interpretó como un fichero de texto y permitió la descarga, luego simplemente retire esas dos letras y pude recuperar el binario.

Fig 15. Descargando el binario nando

root@mail:~# file nando
nando: ELF 32-bit LSB executable, ARM, version 1, dynamically linked (uses shared libs), stripped
root@mail:~#

Si queremos auditar mas a fondo estos binarios, recordemos que son binarios compilados para Linux/ARM, así que tenemos varias opciones:

a. Trabajar sobre una plataforma ARM y jugar con los binarios de la cámara
b. Usar Qemu para emular la plataforma y correr allí los binarios
c. Usar el último plugin ARM para IDA PRO y desensamblar los binarios

Is your choice ;)

Pero bueno ustedes se preguntarán, que de malo puede tener que alguien ajeno a mi empresa pueda monitorear las cámaras de seguridad?, si aún sigues preguntandote eso y no encuentras respuestas, te dejo una lista de cosas que alguien con suficiente creatividad y tiempo podría hacer.

Lista de cosas que alguien puede hacer una vez tenga control de una cámara IP

1. Apagar la cámara (por lo tanto los ladrones pueden aprovechar para entrar)

2. Cargarle un firmware incorrecto a la cámara, lo que ocasionaría un daño de fábrica y $$ en mantenimiento, reparación y puesta en marcha.

3. Espiar, espiar y espiar, con esto se rompe la confidencialidad porque estaría viendo cosas que quizás no debía ver, como el modus operandi de la compañía.

4. Usar el Zoom 10X de la cámara para enfocar teclados y pantallas de computador, con el objetivo de registrar los movimientos de un usuario, un shoulder surfing remoto?

5. Usar los comandos disponibles en la cámara para repetir el mismo frame durante un tiempo especifico (como en las películas!!), de esta forma el jefe de seguridad (física y lógica) estará viendo la misma escena durante mucho tiempo.

6. Borrar los archivos importantes de la cámara, como por ejemplo el binario de arranque o sus archivos de configuración. Todas las cámaras de la entidad a garantía?, algo raro no?, Cual es el tiempo de respuesta para volver a instalar 30 cámaras ip?

7. Compilar aplicaciones para la plataforma, en este caso ARM y ejecutarlas dentro de la cámara, a quien se le ocurriria pensar que la cámara IP le esta haciendo un nmap o un DoS? o que la cámara IP esta realizando un Arp Spoofing y esta recolectando datos de los usuarios?

8. Si la cámara IP se puede girar (80, 120, 360 grados), puede hacer que la cámara apunte para un lugar donde no se vea nada (una esquina de 90 grados, una matera) o se vea mucho (un baño privado :P ).

9. Si el servidor central que recibe la información de la cámara confia en esta y la cámara a su vez confía en mi (0wned), significa que el servidor central que tiene los vídeos, los backups y la información CONFIDENCIAL confía también en mi? ;)

10. ¿Qué se te ocurre que alguien podría hacer con el control de las cámaras IP de tu empresa?

Fin de la lista

Y a propósito, ya le hiciste una auditoría de seguridad a las cámaras de vídeo?, recuérdalo siempre ...

7 comentarios:

jorge jimenez dijo...

muy buen articulo en realidad es un tema no muy escuchado

Anónimo dijo...

muhahahaha, es la maldad pura!. Mighty-D

Anónimo dijo...

AND I STILL SAY HACKING IS THE ESSENCE OF OTHER ...

THIS IS PAST, I ASSURE YOU THAT WITH THIS THOUGHT AND TECHNIQUES fail to be so pathetic ANY DAY OR AT LEAST SOME LEAMMERS WOULD NOT BE TECHNOLOGIES CONFIDENTIAL PREPARED IN DEVELOPED COUNTRIES ...


TRADUCTION

Y YO SIGO DICIENDO QUE LA ESENCIA DEL HACKING ES OTRA...

ESTO ES PASADO, LES ASEGURO QUE CON ESTE PENSAMIENTO Y TECNICAS TAN PATETICAS NO LOGRARAN SER ALGUN DIA POR LO MENOS NI UNOS LEAMMERS, NO ESTARIAN PREPARADOS PARA TECNOLOGIAS CONFIDENCIALES EN PAISES DESARROLLADOS...

Anónimo dijo...

x1nux: yo tengo una camara webtrhu de samsung y tambien logre listar y ejecutar archivos dentro del servidor linux embebido; y ademas logre instalarle un ssh pequenho para la la administracion !! jejeje

y si muchos fabricantes tienen esos problemas ..

por hay encontre uno que usaba sshpass en un codigo de php, en otro server enveviddo, para hacer rsyncs jajajaja y pues pailas perdio !

Anónimo dijo...

Lo mas gracioso es "Por la forma en que se listan los archivos, los permisos, el color de fondo, etc, llegamos a la conclusión de que se trata de un sistema linux embebido" o a lo mejor llegaste a la conclusion pidiendo un archivo que no exista y en el error te dice el servidor web y la version, peazo lamer

nonroot (c) 1983/2013 dijo...

Viernes 18 de 2011: http://www.exploit-db.com/exploits/16993/

bixo dijo...

necesito acceder a las camaras ip de casa

no soy el admin de las camaras
y no tiene la configuracion por defecto

necesito desifrar la clave de acceso al router o ip de las camaras

Entradas populares