2020/09/27

Cronica de un ataque a un DVR hallado en la calle siguiendo la Cyber Kill Chain

En este artículo mostraré la planificación y recolección de información relacionada con reprogramar un dispositivo hallado en la calle:

 

Grabadora de video de vigilancia

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.



Interior

 

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.


Conectores

 

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:

 

Diagrama blocues Hi5320

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.



Frente

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:



Memoria H5TQ2G63GFR-xxL



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
PI101GR Transceptor Ethernet
 
 
 
 
24c02 eeprom
24c02 eeprom
 
 

25l12833f Serial NOR flash.png
25l12833f Serial NOR flash.png


y una etiqueta muy interesante:


Etiqueta TVI9808GS1
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
SOC


Datos actualizados 


CPU: Cortex A7 @ 800Mhz
 
Security Engine: AES, DES and #DES algorithms implemented by hardware, sin cambios

SDK: Linux 3.10-based SDK

Llegó la hora de volver a buscar el soc, esta vez como Hi3520dv300 y encontré algo muy atractivo, un dev board, de la traducción automática que muestra se destila que cuando pasemos a examinar el tráfico de red puede ser que hallemos cosas muy interesantes, como intentos de boot por red.
 
 

Dev board
Dev board

 
Además, dice venir con un SDK, si pudiera echarle mano... casi que pierde la gracia, no?


Activo presencial


Usando un monitor de descarte, la prendí:

 
arranque
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
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


Primero hice exploración total de puertos:

$nmap 192.168.1.127 -p 1-65535
 

Luego le pedí reconocimiento de servicios y sistema operativo:

$ nmap 192.168.1.127 -p 80,554,9527,9530,34567 -sV --version-all
PORT      STATE SERVICE       VERSION
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.
 
 
$ sudo nmap 192.168.1.129 -O

No reconoció nada, es nmap 7.60, la actual 7.80, veremos...

Probé con wget:


wget  --server-response 192.168.1.129:554

  HTTP/1.1 200 OK
  Content-Type: application/x-rtsp-tunnelled
  Server: Topsvision Server v2.1
  Connection: close
  Cache-Control: private
  Length: unspecified [application/x-rtsp-tunnelled]


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.

Esos plugines no andan en edge, si andan en no sé que explorer de windows xp:


Vía red
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
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.


14 comentarios:

  1. Carlos te amo. Que hayas levantado un DVR de la calle y lo hayas hecho andar con cámara y todo me lo acaba de confirmar.

    ResponderEliminar
  2. no sé si viste este documento... https://www.exploit-db.com/docs/english/44003-hisilicon-dvr-hack.pdf?rss

    ResponderEliminar
    Respuestas
    1. veo el índice de contenidos... y dejo de leer! quiero descubrirlo solo. Igual me lo dejo anotado para cuando falle, gracias Unknown

      Eliminar
  3. Esto es en respuesta a un comentario que quedó en otra parte (https://seguridad-agile.blogspot.com/p/open-space.html)

    "si ninguno levanta señal de internet", primero intentaría precisar si no funciona ethernet, si funciona pero no la levanta, si funciona pero no toma información del router o si el destino no responde.

    saludos

    ResponderEliminar
  4. Pa, ver lo que haces, el entusiasmo, la dedicacion, el metodo y los fundamentos es como ver mi propia version PRO o mejorada, necesito un compañero de trabajo asi. Adoptame. Saludos!

    ResponderEliminar
  5. Nadie nace mejorado, compartí lo que hacés siempre contemplando como lo va a ver la otra persona. Para no repetir acá, la esencia la tengo en https://seguridad-agile.blogspot.com/2019/08/preguntar-bien-para-aprender.html, aunque para serte honesto, la parte técnica de esa entrada ahora que la releo no la entiendo... jaja, debería dedicarle unas horas para ponerme en sintonía

    ResponderEliminar
  6. Hola Carlos, tratando de darle solucion a mi problema me tope contigo, un trabajo muy interesante el que has hecho, cuanta dedicacion, tengo un dvr muy similar al que te encontraste, el problema que tiene el mio es que a mi entender, no se activa el servicio de nube por problemas de firmware, en la configuracion dice que esta activo el servicio pero en la pantalla principar, arriba a la derecha, la nube sigue desactivada, ademas por app tampoco encuentra el dvr para poder vincularlo y visualizar las camaras en la app "Danale", si me puedes ayudar a conseguir un firmware para este equipo y ver si resuelve el problema te estare muy agradecido, saludos cordiales

    ResponderEliminar
    Respuestas
    1. Hay un proyecto muy activo con su grupo de telegram https://openipc.org/ pero no parece haber, por ahora no le estoy prestando antención a esto

      Eliminar
    2. mismo problema con un dvr marca power

      Eliminar
  7. tendra el dump de la memoria eeprom para compartir , intente sin exito hacer un upgrade y quedo solo en barras color , saludos

    ResponderEliminar
  8. Hola, nose si llegara este mensaje pero tengo la misma placa y quería hacer un factory reset puenteando pero no me sale un j1 o j2 para saber, ojalá una ayuda

    ResponderEliminar
  9. Encontré un dump para esa placa , lo busco y lo subo , no funciona por p2p pero si habiendo los puertos necesarios

    ResponderEliminar
    Respuestas
    1. Gracias amigo, es que la antigua dueña nose acuerda de la contraseña por eso quería hacerle un factory reset

      Eliminar