Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
pwn-hisilicon-dvr — Exploit proof-of-concept e divulgazione di vulnerabilità per dispositivi DVR/NVR HiSilicon hi3520d. Dimostra RCE tramite interfaccia web, credenziali backdoor e analisi del buffer overflow. | Kitploit
Strumenti/GitHubGitHub/tothi/pwn-hisilicon-dvr
Sicurezza Sistemi EmbeddedPassword CrackingSicurezza IoTMappatura della ReteAnalisi delle VulnerabilitàExploitReverse EngineeringSfruttamento di Applicazioni WebRaccolta InformazioniFuzzingAnalisi di Binari
38390203 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
GitHubtothi/pwn-hisilicon-dvr

pwn-hisilicon-dvr

Exploit proof-of-concept e divulgazione di vulnerabilità per dispositivi DVR/NVR HiSilicon hi3520d. Dimostra RCE tramite interfaccia web, credenziali backdoor e analisi del buffer overflow.

Vedi Repository

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

[abstract] Questo rapporto rivela serie vulnerabilità (con codice proof of concept (PoC)) dei dispositivi DVR/NVR costruiti con il HiSilicon hi3520d e simili system on a chip (SoC). Lo sfruttamento delle vulnerabilità porta a esecuzione remota di codice (RCE) non autorizzata usando solo l'interfaccia web, causando la completa compromissione del dispositivo sfruttato. A causa della mancanza di firmware aggiornati, l'uso di questi dispositivi non è raccomandato. Il venditore è stato contattato prima di dicembre 2016, ma non c'è ancora stata risposta. La data di rilascio della divulgazione è febbraio 2017.

== prefazione

Un paio di anni fa ho comprato un economico DVR cinese su eBay. Il logo di avvio del dispositivo dice: "SECULINK - Security Monitoring". Da appassionato di sicurezza informatica, ho deciso di dare un'occhiata più da vicino al dispositivo per vedere quanto "sicuro" fosse quel servizio di monitoraggio di sicurezza. Cercando su Google ho trovato materiale interessante, ma scavando più a fondo ho trovato problemi (0-day) molto più interessanti e molto più seri riguardanti il dispositivo.

Diamo un'occhiata all'intera sessione di hacking dall'inizio. (I nuovi risultati, ottenuti personalmente, saranno indicati come nuovi, così come quelli vecchi e già noti.)

== esplorare il DVR

Prima dovremmo imparare a usare l'interfaccia utente ufficiale, poi scavare più a fondo, magari cercare di ottenere il firmware. Le probabilità di trovare vulnerabilità aumentano con il firmware.

=== il DVR a prima vista

Il dispositivo DVR usato per i test è marchiato "Seculink".

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

Interfacce fisiche disponibili:

  • 2x porte USB (ufficialmente per il mouse per controllare la console GUI),
  • porta HDMI (e VGA) per collegare un monitor esterno (per la GUI e le viste delle telecamere),
  • 4 connettori BNC per telecamere CCTV analogiche,
  • porta SATA interna per collegare un archivio per registrare il flusso video,
  • porta Ethernet per l'accesso alla rete.

Interfacce utente ufficiali:

  • accesso diretto tramite HDMI (o VGA) come output e mouse / tastiera USB come input per la visualizzazione / controllo / configurazione completa,
  • accesso di rete tramite HTTP per la visualizzazione / controllo delle telecamere.

L'interfaccia di configurazione accessibile direttamente è protetta da autenticazione utente (nome utente, password). Il superutente predefinito è 'admin', la password predefinita è vuota.

Dopo aver impostato una password robusta, l'utente può sentirsi al sicuro che la visualizzazione delle sue telecamere non sia accessibile ad altri. Spesso le persone inoltrano la porta web (tcp/80) del DVR verso il lato WAN dalla loro LAN sicura per accedere ai flussi del DVR dall'esterno (possiamo verificarlo, ad esempio, con una ricerca Shodan adeguata ;) ).

=== ottenere il firmware

Ci possono essere molti modi per ottenere il firmware:

  • ottenerlo dal dispositivo con un metodo soft (usando l'interfaccia ufficiale, o sfruttando qualche vulnerabilità),
  • ottenerlo dal dispositivo con un metodo hard (JTAG, console seriale, ecc.),
  • trovarlo e scaricarlo da internet (se disponibile).

Anche se quest'ultimo metodo (il download) funziona ed è il più semplice, proviamo il primo, perché fornisce anche altre informazioni sul dispositivo.

=== scansione dei servizi

Facciamo una scansione completa delle porte sul DVR. Nota: la scansione SYN (predefinita se eseguita come root) è molto lenta a causa dei pacchetti scartati, ma la scansione completa TCP connect termina in un paio di minuti.


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


Riassumendo e test manuali:

  • 23/tcp è un'interfaccia di login telnet protetta da un nome utente
  • password (non le credenziali dell'applicazione)
  • 80/tcp è l'interfaccia web protetta dalle credenziali dell'applicazione
  • 554/tcp è un servizio rtsp; può essere aperto con un comune url rtsp:

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

Nota: anche l'apertura del flusso rtsp richiede le credenziali.

  • 9527/tcp sembra essere una porta di servizio (segreta?) con alcune caratteristiche molto interessanti,
  • 34567/tcp e 34599/tcp sembrano essere porte dati collegate all'applicazione DVR.

Qui dovremmo precisare che il dispositivo è probabilmente un sistema simile a Linux.

Connettendosi alla porta 9527/tcp (con netcat raw) si vede la console dell'applicazione con messaggi di log e un prompt di login. Il login con una qualsiasi delle credenziali applicative definite funziona. Digitando help dopo il prompt si ottiene una breve descrizione dei comandi della console. Il comando shell sembra il più interessante. Sì, fornisce una shell di root sul dispositivo. ;)

Nota: questo è ovviamente un serio problema di sicurezza, perché un qualsiasi utente applicativo (con privilegi bassi) non dovrebbe ottenere automaticamente una shell di root sul dispositivo.

=== shell di root

Esplorando il dispositivo nella shell di root (ad esempio con dmesg) diventa chiaro che il DVR esegue un kernel Linux (versione 3.0.8), ha una CPU ARMv7 e il modello di SoC è hi3520d.

Dall'elenco dei processi in esecuzione (ps) è chiaro che l'applicazione DVR è /var/Sofia, che è in ascolto anche su 34568/udp e 34569/udp oltre alle porte tcp rilevate da nmap (netstat -nlup).

Dall'elenco dei file system montati (comando mount), è chiaro che l'immagine del firmware è nei dispositivi /dev/mtdblockX (dove X=0,1,2,3,4,5).

Il firmware è piccolo e quindi limitato, quindi dobbiamo essere creativi se vogliamo copiare file da/al dispositivo. Fortunatamente NFS è supportato, quindi configurare un server NFS sulla nostra macchina desktop e montarlo dal DVR risolve il problema:


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

Ora ottenere il firmware è semplice:


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

Possiamo ottenere i file (non solo le immagini grezze):


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

=== interfaccia telnet

Per accedere al dispositivo tramite l'interfaccia telnet (porta 23/tcp), potremmo aver bisogno di alcune credenziali del sistema operativo. Guardando /etc/passwd troviamo l'hash della password per l'utente root:


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

Nota: non c'è nessun altro utente oltre a root, tutto viene eseguito con pieni privilegi. (Quindi se qualcuno riesce a introdursi nel dispositivo in qualche modo, non ci sono barriere: l'attaccante ottiene immediatamente pieni poteri.)

Supponendo una password alfanumerica (minuscola) di sei caratteri, hashcat decifra rapidamente il debole hash DES sopra riportato:


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

Scarica lo strumento