Reverse Engineering di una IP Cam (Parte 1): Estrarre il Firmware e i suoi Segreti

Pubblicato da TheJoe il

Tempo di lettura stimato: 2 minuti

Tutto è iniziato con una misteriosa (e molto economica) telecamera IP di sorveglianza della Unotec. Senza documentazione e senza accesso all’interfaccia web, l’unica via per capire come funzionasse era “entrarci dentro”. In questa prima parte, vedremo come sono riuscito a scaricare la configurazione interna e a decodificare il file di backup per trovarne le credenziali nascoste.

Caccia alle API: Il comando Backup

Le telecamere basate su chipset HiSilicon spesso nascondono delle porte di servizio sotto forma di script CGI. Dopo alcuni tentativi mirati a indovinare i percorsi standard usati dai produttori, ho colpito il bersaglio grosso. Inserendo nel browser l’indirizzo:

http://192.168.5.123/cgi-bin/hi3510/backup.cgi

Il browser ha avviato il download di un file chiamato config_backup.bin. Ma non fatevi ingannare dall’estensione: nel mondo dell’IoT, spesso i file “.bin” sono solo archivi standard rinominati per scoraggiare i meno esperti.

Analisi del file: È davvero un binario?

Per capire con cosa avessi a che fare, ho interrogato il file tramite il comando file su Linux. Questo comando non si fida dell’estensione, ma legge i “Magic Bytes” nell’header del file.

$ file config_backup.bin
config_backup.bin: gzip compressed data, from Unix, original size 3276800

Ecco svelato l’arcano: il file è in realtà un archivio .tar.gz. Per aprirlo, è bastato rinominarlo o estrarlo direttamente:

mv config_backup.bin config_backup.tar.gz
tar -zxvf config_backup.tar.gz

Cosa c’è nella “Scatola Nera”?

Una volta scompattato, mi sono trovato davanti parte della struttura del file system della telecamera, la partizione /mnt/ dedicata alle configurazioni. La cartella /mnt/mtd/ipc/conf/ è risultata essere una miniera d’oro di file .ini:

  • config_user.ini: Conteneva le credenziali di accesso… difficilissime da indovinare (admin/admin).
  • config_md.ini: Le impostazioni del Motion Detection (risultato disattivato).
  • wifi.conf: I parametri di rete.
  • config_alarm.ini: I trigger per gli allarmi FTP ed Email.
Guarda qui:  Video deshake con Linux: stabilizzare un video mosso con Transcode pt. 2

Perché il re-upload fallisce?

Ho provato a modificare i file .ini (ad esempio attivando il movimento) e a ricreare l’archivio per caricarlo nuovamente sulla cam. Tuttavia, sospetto che il firmware esegua un controllo di integrità (checksum) all’avvio. Se il file è manomesso, la telecamera lo scarta e torna alle impostazioni di fabbrica.

Questa scoperta mi ha portato alla fase successiva: se non posso cambiare le regole “da dentro” flashando il file, userò i comandi CGI per istruirla “da fuori”. Ma di questo ne parleremo nella Parte 2.

Rimanete sintonizzati per scoprire come ho usato queste informazioni per intercettare il traffico della cam!


TheJoe

Mantengo questo blog a livello amatoriale dal 2009. Sono appassionato di grafica, tecnologia, software Open Source. Fra i miei articoli non sarà difficile trovarne circa la musica, ed alcuni di riflessioni personali, ma preferisco indirizzare la linea del blog principalmente verso la tecnologia. Per informazioni contattami.

0 commenti

Lascia un commento

Segnaposto per l'avatar

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.