En este artículo mostraré la planificación y recolección de información relacionada con reprogramar un dispositivo hallado en la calle:
Se trata de un sistema de vigilancia al que se le pueden conectar hasta ocho cámaras, usar de intercomunicador, grabar. Hasta donde ví entiendo que puede detectar movimientos y un montón de cosas más. Se lo puede acceder mediante una bontonera, mouse y monitor VGA o via red.
Objetivos
- Tomar el pleno control del dispositivo. Esto significa:
- Tener una terminal ssh o serial.
- Tener root
- Poder usar libremente los GPIO actualmente asociados a los botones del frente.
- Mejor si el sistema completo sigue funcionando.
- Aplicar lo que sé y aprender más, tanto por descubrirlo en el momento como buscarlo en distintas fuentes.
Deseos
Deseo instalarle un firmware modificado por mí, pero debido a:
- Mis limitaciones
- Falta de tiempo
- Quizás no sea posible
debo armar una planificación realista. En mi mundo mágico sólo existe el Plan B, en el real, este es el orden:
Plan A: hallar una terminal existente en el firmware actual
Está limitado por la inexistencia de tal terminal y mi habilidad para hallarla
Plan B: modificar el firmware
Está limitado por la implimentación de firma de firmware y mi habilidad para modificarlo.
Plan C: hallar una vulnerabilidad
Me voy a aburrir y frustrar y no voy a llegar tan lejos.
Metodología
Como metodología intentaré usar Cyber Kill Chain. En criollo, le voy a poner etiquetas y orden a lo que hubiese hecho normalmente sin ton ni son. Este acercamiento disciplinado de paso me sirve para organizar y documentar.
- Reconnaissance
- Weaponization
- Delivery
- Exploitation
- Installation
- Command and control
- Actions on objectives
Primera iteración
Reconnaissance
Pasivo
Visualmente no parece haber nada roto, salvo que falta el disco, detalle menor.
Tiene un lindo conector VGA y cables SATA cortos de datos, si termino rompiéndolo, serán prolijamente canibalizados. La batería no la puedo medir sin desarmar o sacarla, luego veremos.
La tensión de alimentación dice ser 12v, pero no dice la polaridad. Midiendo continuidad entre alguna tierra y el conector determiné lo normal, pin positivo.
OSINT
El SOC es Hi 3520, tiene un pdf de casi mil páginas en chino. Digo chino de verdad, no que no entienda por que sea complicado. Por suerte también hay un brochure en inglés del cual se puede extraer que:
CPU: ARM1176 @600Mhz
MMU: puede correr un sistema operativo complejo
Security Engine: Implementing various encryption and decryption algorithms such as AES, DES, and 3DES through the hardware. Esto es malo, es más probable que los firmwares vengan firmados.
Por suerte "Hi3520 secure boot" ni "Hi3520 signed firmware" trajeron nada.
SDK: Providing the SDK based on Linux 2.6.24
Esto nos da un indicio del qué kernel puede haber.
Una etiqueta interna, tvb9808bs-f2, me trajo más información, pero ningún frente coincide por completo.
Existe un tvg9808b-f2 en http://www.v-camip.com/product_show.asp?id=585, pero no cierran alguna características.
Hay un chip de memoria:
que es RAM. Mientras buscaba la ROM/EEPROM, como no la encontraba terminé de desarmar y encontré del otro lado otros chips:
PI101GR Transceptor Ethernet |
24c02 eeprom |
25l12833f Serial NOR flash.png |
y una etiqueta muy interesante:
TVI9808GS1 |
Sumando:
TVI9808GS1_v1.03 con fecha 2019.06.24
Memoria H5TQ2G63GFR-xxL que dice ser DDR3
El brochure dice que usa memoria DDR2
La placa no es tan vieja como supuse, no coincide el tipo de memoria con la brochure. Entonces volví a buscar el SOC y con DRQCV300 tras varios saltos llegué a un brochure mucho mejor:
SOC |
Datos actualizados
Dev board |
Activo presencial
Usando un monitor de descarte, la prendí:
arranque |
La pila parece estar cargada pues tiene la fecha y hora bastante bien.
Le fuí agregando dispositivos, todo anda. Con respecto a la cámara, no me preguntes como identifiqué los cables pues esa cámara no sé de dónde la obtuve, sólo recuerdo que descifré el pin out para conectarla a una vieja macintosh que tenía capturadora de video y prolijamente guardé las notas que tomé en ese momento.
Cámara ok |
Interactuando con la GUI, obtuve los siguientes datos:
- System: 1.02.023c0228.79415076.t000.6
- Extra info: 1.40.101223
- Build date: 2019-11-28 17:50:22
- En network->TCP Port: 34567
- En system->RS232 me da a entender que hay un puerto serial, veremos...
- Ofrece un upgrade, supongo que es como cambiar el firmware, veremos...
Red
Luego le pedí reconocimiento de servicios y sistema operativo:
80/tcp open http uc-httpd/1.0.0
554/tcp open rtsp
9527/tcp open tcpwrapped
9530/tcp open unknown
34567/tcp open dhanalakshmi?
3 services unrecognized despite returning data.
No reconoció nada, es nmap 7.60, la actual 7.80, veremos...
Probé con wget:
HTTP/1.1 200 OK
Capturé con wireshark la actividad en red del arranque, nada.
La mac address, c8:22:02 es desconocida, mmhhh.
Mientras hacía estas pruebas ocurrió algo interesante, en un momento pasó a mostrar sólo la cámara activa y finalmente se reinició. Esto puede ser:
- El escaneo le hizo mal
- Es el motivo por el cual lo tiraron: tiene una falla de hardware
Red vía navegador
Exige un navegador que entienda activeX y te dice de bajar:
http://www.topslink.net/WebClient_EN_SetUp.exe
que tiene un hash que virustotal considera bastante inocuo e instalás almenos un ocx.
Si vas a http://www.topslink.net/ te ofrece login y más instalación:
http://www.topslink.net/CloudClientV2_EN_SetUp.exe
virustotal sigue casi ok.
Vía red |
USB
Si le conecto un usb fat32, ofrece hacer upgrade con cualquier archivo que encuentre en la raiz sin ningún criterio
RS-232
El menú ofrece configurar el puerto RS-232, que no se manifiesta en el gabinete, pero quizás sea el conector interno libre.
Debo identificar los pines. Supongamos que la datasheet de Hi3520 es parecida a Hi3520DV300, si tiene uart quizás esté cerca... nop, es otro encapsulado
Le conecté osciloscopio y hay dos señales digitales, patrón repetitivo espejado, pero no sé que són, quedará para más adelante.
UART |
OSINT otra vez
He buscado sin éxito combinando "firmware" "update" y "upgrade" con estas etiquetas:
- H.264 network dvr
- tv08ahd
- TVB9808BS-F1
- 264.001.0045
- TVI9808GS1_V1.03
Habiendo descansado y reflexionado, ha llegado el momento de revisar la estrategia y adaptar las tácticas. La situación actual es:
He confirmado que el sistema funciona y si consiguiera cámaras (y más difícil, instalara el cablerío necesario) podría usarlo para lo cual fue concebido.
El cliente de red apesta y es todo un desafío muy interesante hacer el análisis de los protocolos utilizados para hacer una implementación open source. De por sí es todo un proyecto y si en mi camino de reinstalar el firmware meto la pata, lo anulo.
Sería bueno saber si hay algún modo de desbrickar, quizás arrancando apretando
un botón al arranque.
Se ha tornado vital obtener un firmware, mejor si es el actual. Debo hallar un firmware asociado a un modelo del cual haya una foto de la
placa y parezca tener lo mismo o una descripción de funciones que
coincida o sea menor.
Y debo atenerme al Plan A, analizar varios firmwares y detectar:
- el nivel de compatibilidad
- la existencia de algún acceso
En la próxima entrega, duro con el firmware.