
Una herramienta para recuperar credenciales de inicio de sesión de cámaras IP Netwave utilizando una vulnerabilidad de volcado de memoria (CVE-2018-17240)
Una herramienta para recuperar credenciales de inicio de sesión de cámaras IP Netwave aprovechando una vulnerabilidad de volcado de memoria (CVE-2018-17240). Este proyecto se inspiró en expcamera y ofrece mejoras de rendimiento y eficiencia. Esta herramienta funciona en todas las plataformas, ya que no utiliza ninguna herramienta de línea de comandos de Linux mediante comandos de shell como hace expcamera.
En sistemas Linux, /proc/kcore es un archivo virtual que expone la memoria del sistema como una imagen core ELF. Estas cámaras ejecutan uClinux sobre un núcleo ARM7 sin MMU, por lo que existe un único espacio de direcciones plano: el volcado contiene la memoria de la aplicación de la cámara junto con la del kernel, incluido el blob de configuración que mantiene en una variable global.
Es accesible porque el servidor web tiene una lectura arbitraria de archivos sin autenticación: el manejador de peticiones elimina exactamente una barra inicial y llama a fopen() sin ningún filtrado de traversal, sirviendo el resultado como root. Por lo tanto, //proc/kcore se resuelve a /proc/kcore, razón por la cual la ruta de la petición lleva una doble barra inicial.
El blob de configuración tiene un diseño fijo, por lo que las credenciales se pueden leer directamente de él:
| Offset | Campo |
|---|---|
0x00 | uint32 magic, siempre 0x440C9ABD |
0x04 | uint32 checksum |
0x08 | uint32 length |
0x0C | char device_id[13] 12 caracteres hexadecimales en mayúsculas más un NUL |
0x36 | struct { char name[13]; char pwd[13]; uint8 pri; } users[8] |
La herramienta transmite /proc/kcore y busca el magic en cada fragmento. Una vez encontrado, devuelve la cuenta con mayores privilegios de la tabla de usuarios.
Esta herramienta admite dos formas diferentes de especificar los hosts que se van a comprobar en busca de la vulnerabilidad. Los hosts deben estar en formato ip:port.
| Argumento | Descripción |
|---|---|
--host | Un host a comprobar, se puede especificar varias veces |
--file | Un archivo que contiene una lista de hosts a comprobar |
Esta herramienta admite la recuperación de hosts desde Censys, Shodan y ZoomEye para comprobar la vulnerabilidad.
| Motor de búsqueda IoT | Argumento | Variables de entorno requeridas |
|---|---|---|
| Censys | --censys | CENSYS_PERSONAL_ACCESS_TOKEN |
| Shodan | --shodan | SHODAN_API_KEY |
| ZoomEye | --zoomeye | ZOOMEYE_API_KEY |
Censys utiliza la Platform API. Crea un token de acceso personal en platform.censys.io; configura también CENSYS_ORGANIZATION_ID para facturar la búsqueda a una organización en lugar de a tu monedero gratuito. Ten en cuenta que el endpoint de búsqueda de la Platform requiere un plan de pago, ya que las cuentas gratuitas están limitadas a los endpoints de 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
Esta herramienta es solo para fines educativos. Los contribuyentes de este proyecto no se hacen responsables de ningún daño o problema legal que pueda surgir del uso de esta herramienta. Úsala bajo tu propio riesgo.