2020/10/04

DVR: completando el reconocimiento y explorando ataques ajenos

Repasemos y reformulemos tras lo aprendido en la primera ronda de reconocimiento:

Tenemos una computadora de propósito específico (DVR) que no deja de ser atractiva para otros propósitos debido a que tiene:

  • CPU con FPU y SIMD (NEON)
  • SATA
  • USB
  • VGA
  • Ethernet
  • varios puertos GPIO
  • algo que parece ser RS-232 pero puede ser RS-485, según veremos luego
  • RTC con batería
  • aceleración criptográfica
  • todo un subsistema de procesamiento de audio y video 
  • y un lindo gabinete, aunque le falta la tapa

En comparación con una Raspberry Pi, dependiendo del modelo puede tener más o menos poder computacional y si dejamos de lado el subsistema de video, la supera por tener SATA y RTC, convirtiéndola lo primero en apta para hacer un Network Storage.

 

Lo de hoy


En esta entrega, de la Cyber Kill Chain estaremos yendo y viniendo por:

  • Reconnaissance
  • Weaponization
  • Delivery
  • con esperanza de Exploitation

 

UART 

 

En una segunda inspeccion vi unos pines etiqueteados con GTR, apuesto a que este GTR no es, sino:
 
G: Ground
T: Transmit
R: Receive
 

Boot
Boot


Mirá el resultado del decoding, la linea verde y sus letritas.

Me costó darme cuenta que la velocidad de la UART en boot no tiene nada que ver con la que se configura luego.

Fuí probando con diversos dispositivos conectados.


U-Boot 2010.06-svn (Oct 21 2019 - 14:58:50)

Check Flash Memory Controller v100 ... Found
SPI Nor(cs 0) ID: 0xc2 0x20 0x18
Block:64KB Chip:16MB Name:"MX25L128XX"
SPI Nor total size: 16MB
In:    serial
Out:   serial
Err:   serial
USB:   scanning bus for devices... 2 USB Device(s) found
0 Storage Device(s) found
PHY 0x01: OUI = 0x90C3, Model = 0x05, Rev = 0x04 .
ETH0: PHY(phyaddr=1, mii) not link!
higmac init fail!
Press CTRL-C to abort autoboot in 2 seconds

 
Con  el cable de red conectado:


U-Boot 2010.06-svn (Oct 21 2019 - 14:58:50)

Check Flash Memory Controller v100 ... Found
SPI Nor(cs 0) ID: 0xc2 0x20 0x18
Block:64KB Chip:16MB Name:"MX25L128XX"
SPI Nor total size: 16MB
In:    serial
Out:   serial
Err:   serial
USB:   scanning bus for devices... 2 USB Device(s) found
0 Storage Device(s) found
PHY 0x01: OUI = 0x90C3, Model = 0x05, Rev = 0x04 .
port_mode:0x3d
ETH0: PHY(phyaddr=1, mii) link UP: DUPLEX=HALF : SPEED=10M
MAC:   00-0C-1C-xx-xx-xx
Press CTRL-C to abort autoboot in 2 seconds


 
Si oprimo CTRL-C me da un shell sin comandos, con TAB me muestra pero están deshabilitados.


hilinux #
  reset go bootd boot bootm tsload ddr decjpg ext2load
  ext2ls fatinfo fatls fatload getinfo ? help loady loadb
  ...


Si lo dejo correr:
 

Unknown command 'auto' - try 'help'
16384 KiB hi_fmc at 0:0 is now current device

pic load:0x8a000000
pic save:0x8a300000
0ff:0x8a000000
can't find corresponding entry
 data LOAD ERROR<0> !
OpenDev  vo:0 intf_type:36 out_sync:17
OpenDev  vo:1 intf_type:1 out_sync:0

## Booting kernel from Legacy Image at 82000000 ...
   Image Name:   linux
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2062808 Bytes = 2 MiB
   Load Address: 80008000
   Entry Point:  80008000
   Loading Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.



Ese caracter loco me sugiere que cambió de baudrate...
 
 
Glitch
Glitch
 
 ...no, es nada.
 
 
Para seguir interactuando con el linux ya corriendo o alguna aplicación, fuí probando los modos de RS-232:
  • General: nada
  • InteractCmd: nada
  • Ranging: nada
  • Transparent: nada

 

USB

 

Se me ha ocurrido que quizás si hay USB drive, diga algo:


USB:   scanning bus for devices... 3 USB Device(s) found
usb_stor_get_info->1431,blksz:512
1 Storage Device(s) found
Interface:  USB
  Device 0: Vendor: SMI      Rev: 1100 Prod: USB DISK       
            Type: Removable Hard Disk
            Capacity: 1901.0 MB = 1.8 GB (3893248 x 512)
Partition 1: Filesystem: FAT32 "RIGOL      "
    36033   output.pdf
    63096   ds1z_quickprint1.png
    33421   ds1z_quickprint2.png
            .trash-1000/
            system volume information/

3 file(s), 2 dir(s)

do not need usb update



Buen intento,  ahora necesito saber que busca.  El mensaje "do not need usab update" mi sugiere que hará update, no boot.
 
En varias fuentes he visto archivos tipo auconfig.txt, ya veremos

 

Ataques conocidos

 

Habiendo fallado por este lado e inspirado por un comentario a la primera parte apuntando a:

https://www.exploit-db.com/docs/english/44003-hisilicon-dvr-hack.pdf

y sumado a algunás búsquedas, volví a mirar los puertos, esta vez conectando con netcat, recordemos que eran 9527, 9530 y 34567:


while [ true ] ; do
   echo retry
   nc IP PORT
done

 
Nada. Telnet contra los mismos, nada.

Apliqué el ataque mencionado e implementado en https://github.com/Snawoot/hisilicon-dvr-telnet, nada, no está más el port knocking. El de https://github.com/tothi/pwn-hisilicon-dvr, no tengo paciencia para resolver el pwn.py del que depende.

Es evidente que el firmware que contiene está asegurado, como que el fabricante ha leido lo mismo que yo y lo ha corregido, estos son algunos de los links adicionales:

  • https://www.osm-s.com/en/2017/11/30/ip-camera-security-horror/
  • https://habr.com/en/post/486856/
  • https://ipvm.com/reports/backdoor-9530
Sin embargo, fijate que más arriba decía:

Unknown command 'auto' - try 'help'

Esto me dice que lo arreglaron a hachazos, ¿para qué intentás ejecutar un comando que sabés que no va a estar?

 

Punto de control

 

Como habrás visto, he pasado por 
  • Weaponization
    • Elección y prepararación de cada exploit
  • Delivery
    • Interacciones con el dispositivo
  • Exploitation 
    • Sin éxito

 

RS-485

 

De paso, habiendo resuelto está RS-232, reviendo la señal que previa y erróneamente había asociado con RS-232 y viendo que en PTZ device configuration dice RS-485 y sabiendo que éste último usa par diferencial, apuesto a que ese conector mal identificado es en realidad RS-485, me faltaría saber por que tiene cuatro cables, qué está transmitiendo y si puedo manifestar algo por ahí.
 
 
Evidencia de par diferencial
Evidencia de par diferencial

 
 
 
Es muy tentador pues nunca usé RS-485 y la EDU-CIAA-NXP lo tiene y también he hallado unos chips relacionados en otro dispositivo rescatado de la calle, pero me aleja mucho de mis propósitos.

 

Próximos pasos

 

Todo esto me deja en una encrucijada:
 
  • Lo uso como está
    • No aprendo nada
    • No lo voy a usar por que no tengo cámaras
      • No tengo ganas ni tiempo de instalarlas
      • No tengo motivos para mirarlas luego salvo ver a los perros que defecan en la vereda y si no lo he hecho aún no ha sido por no tener este dispositivo
  • Le plancho un firmware vulnerable
    • Puedo fallar y pierdo todo
    • Pierdo lo que hay ahora que parece ok
  • Obtengo físicamente el firmware
    • Más que puede, probablemente falle y pierda todo
    • Pero aprendo todo


 
Le voy a dar un tiempo más a ver si encuentro algo hecho, en caso contrario, muy a mi pesar, le voy a arrancar el chip con el firmware y terminaré lo que empecé con el router al que le cayó el rayo.

4 comentarios:

  1. Hola! Como estas, genial todo lo que hiciste con esta dvr, hace unos dias me estoy volviendo loco para conseguir el Firmware del mismo modelo. Lo pudiste conseguir? Saludos y gracias!

    ResponderEliminar
  2. No, estuve todo este tiempo hasta que me cansé (tengo 3.5 mensajes por leer) en un grupo de telegram de openIPC pero nada, si lo tienen, hasta donde los seguí, hapía que pagar para acceder al repo. Si tuviera tiempo tomaría el enfoque de lograr que arranque el sistema de un externo para usarlo como una computadora genérica y luego exploraría recuperar de a uno cada dispositivo y luego quizás con eso rehacer y flashear el firmware, claramente dejaría de ser un sistema DVR. Es un proyecto que no puedo empezar hasta mediados del 2023 si es que en ese momento no tengo algo más prioritario para hacer.

    ResponderEliminar
  3. Respuestas
    1. Hola Carlos, no sé si seguirás teniendo el DVR o si estarás interesado, tengo bastante información para compartir. Voy a hacer un resumen.
      El punto a atacar es el firmware del DVR que está en la.mempros flash SPI.
      Se puede copiar con programador o obtener via puerto COM con un software ruso llamado XM Device Explorer.

      Eliminar