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.1User: adminPass: 123456Como
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, 123456Explorando un poco mas nos damos cuenta donde estamos ubicados dentro del sistema y verificamos si podemos alcanzar el
/etcFig 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.txtPero incluso con una extensión TXT el servidor no permitía la descarga de los ficheros, ¿por que?, quizás estaba verificando el
headerdel 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
nandoroot@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
).
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 ...
!Big Brother is watching You!
------------------------------------------------------------------------------------
Tomado de: http://nonroot.blogspot.com/2010/08/hacking-ip-camera-acti-acm-4000.html