
Uno strumento per recuperare le credenziali di accesso dalle telecamere IP Netwave sfruttando una vulnerabilità di dump della memoria (CVE-2018-17240)
Uno strumento per recuperare le credenziali di accesso dalle telecamere IP Netwave sfruttando una vulnerabilità di memory dump (CVE-2018-17240). Questo progetto è stato ispirato da expcamera e offre miglioramenti in termini di prestazioni ed efficienza. Questo strumento funziona su tutte le piattaforme poiché non utilizza alcuno strumento CLI di Linux tramite comandi shell come fa expcamera.
Sui sistemi Linux, /proc/kcore è un file virtuale che espone la memoria di sistema come immagine core ELF. Queste telecamere eseguono uClinux su un core ARM7 senza MMU, quindi esiste un unico spazio di indirizzamento piatto: il dump contiene la memoria dell'applicazione della telecamera insieme a quella del kernel, incluso il blob di configurazione che essa mantiene in una variabile globale.
È raggiungibile perché il server web presenta una lettura arbitraria di file non autenticata: il gestore delle richieste rimuove esattamente una barra iniziale e chiama fopen() senza alcun filtro di traversal, servendo il risultato come root. //proc/kcore si risolve quindi in /proc/kcore, motivo per cui il percorso della richiesta presenta una doppia barra iniziale.
Il blob di configurazione ha un layout fisso, quindi le credenziali possono essere lette direttamente da esso:
| Offset | Campo |
|---|---|
0x00 | uint32 magic, sempre 0x440C9ABD |
0x04 | uint32 checksum |
0x08 | uint32 length |
0x0C | char device_id[13] 12 caratteri esadecimali maiuscoli più un NUL |
0x36 | struct { char name[13]; char pwd[13]; uint8 pri; } users[8] |
Lo strumento esegue lo streaming di /proc/kcore e cerca il magic in ogni chunk. Una volta trovato, restituisce l'account con i privilegi più elevati dalla tabella degli utenti.
Questo strumento supporta due modi diversi per specificare gli host da controllare per la vulnerabilità. Gli host devono essere nel formato ip:port.
| Argomento | Descrizione |
|---|---|
--host | Un host da controllare, può essere specificato più volte |
--file | Un file contenente un elenco di host da controllare |
Questo strumento supporta il recupero degli host da Censys, Shodan e ZoomEye per controllare la vulnerabilità.
| Motore di ricerca IoT | Argomento | Variabili d'ambiente richieste |
|---|---|---|
| Censys | --censys | CENSYS_PERSONAL_ACCESS_TOKEN |
| Shodan | --shodan | SHODAN_API_KEY |
| ZoomEye | --zoomeye | ZOOMEYE_API_KEY |
Censys utilizza la Platform API. Crea un personal access token su platform.censys.io; imposta anche CENSYS_ORGANIZATION_ID per addebitare la ricerca a un'organizzazione invece che al tuo wallet gratuito. Nota che l'endpoint di ricerca della Platform richiede un piano a pagamento, poiché gli account gratuiti sono limitati agli endpoint di lookup.
$ pip install -r requirements.txt
Usage: main.py [-h] (--host HOST | -f FILE | --censys | --shodan | --zoomeye) [-n NUMBER] [-c CONCURRENT] [-t TIMEOUT] [-o OUTPUT]
A tool for retrieving login credentials from Netwave IP cameras using a memory dump vulnerability (CVE-2018-17240)
Options:
-h, --help show this help message and exit
--host HOST A host to check, can be specified multiple times
-f, --file FILE A file containing the hosts to check
--censys Retrieve hosts from the Censys Platform API using the personal access token specified with the CENSYS_PERSONAL_ACCESS_TOKEN environment variable
--shodan Retrieve hosts from the Shodan API using the API key specified with the SHODAN_API_KEY environment variable
--zoomeye Retrieve hosts from the ZoomEye API using the API key specified with the ZOOMEYE_API_KEY environment variable
-n, --number NUMBER The number of hosts to retrieve from the IoT search engine, by default 100
-c, --concurrent CONCURRENT
The number of hosts to check concurrently, by default 25
-t, --timeout TIMEOUT
The timeout in seconds for retrieving the credentials from the memory dump of each host, by default 300
-o, --output OUTPUT The file to write the credentials to, by default credentials.txt
Questo strumento è solo a scopo educativo. I contributori di questo progetto non saranno ritenuti responsabili per eventuali danni o problemi legali che possano derivare dall'uso di questo strumento. Usalo a tuo rischio.