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, 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.txtPero 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ámarab.
Usar Qemu para emular la plataforma y correr allí los binariosc.
Usar el último plugin ARM para IDA PRO y desensamblar los binariosIs 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 (0
wned), 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 ...