
Uma ferramenta para recuperar credenciais de login de câmeras IP Netwave usando uma vulnerabilidade de dump de memória (CVE-2018-17240)
Uma ferramenta para recuperar credenciais de login de câmeras IP Netwave usando uma vulnerabilidade de despejo de memória (CVE-2018-17240). Este projeto foi inspirado no expcamera e oferece melhorias de desempenho e eficiência. Esta ferramenta funciona em todas as plataformas, pois não utiliza nenhuma ferramenta de linha de comando do Linux por meio de comandos shell como o expcamera faz.
Em sistemas Linux, /proc/kcore é um arquivo virtual que expõe a memória do sistema como uma imagem core ELF. Essas câmeras executam uClinux em um núcleo ARM7 sem MMU, portanto há um único espaço de endereçamento plano - o despejo contém a memória do aplicativo da câmera juntamente com a do kernel, incluindo o blob de configuração que ele mantém em uma variável global.
Ele é acessível porque o servidor web possui uma leitura arbitrária de arquivos não autenticada: o manipulador de requisições remove exatamente uma barra inicial e chama fopen() sem filtragem de travessia, servindo o resultado como root. Portanto, //proc/kcore resolve para /proc/kcore, e é por isso que o caminho da requisição carrega uma barra dupla inicial.
O blob de configuração tem um layout fixo, então as credenciais podem ser lidas diretamente dele:
| Offset | Campo |
|---|---|
0x00 | uint32 magic, sempre 0x440C9ABD |
0x04 | uint32 checksum |
0x08 | uint32 length |
0x0C | char device_id[13] 12 caracteres hexadecimais maiúsculos mais um NUL |
0x36 | struct { char name[13]; char pwd[13]; uint8 pri; } users[8] |
A ferramenta transmite /proc/kcore e procura o magic em cada bloco. Uma vez encontrado, ela retorna a conta de maior privilégio da tabela de usuários.
Esta ferramenta suporta duas maneiras diferentes de especificar hosts para verificar a vulnerabilidade. Os hosts devem estar no formato ip:port.
| Argumento | Descrição |
|---|---|
--host | Um host a verificar, pode ser especificado múltiplas vezes |
--file | Um arquivo contendo uma lista de hosts a verificar |
Esta ferramenta suporta a recuperação de hosts do Censys, Shodan e ZoomEye para verificar a vulnerabilidade.
| Mecanismo de Busca de IoT | Argumento | Variáveis de Ambiente Necessárias |
|---|---|---|
| Censys | --censys | CENSYS_PERSONAL_ACCESS_TOKEN |
| Shodan | --shodan | SHODAN_API_KEY |
| ZoomEye | --zoomeye | ZOOMEYE_API_KEY |
O Censys usa a Platform API. Crie um token de acesso pessoal em platform.censys.io; defina também CENSYS_ORGANIZATION_ID para cobrar a busca em uma organização em vez da sua carteira gratuita. Observe que o endpoint de busca da Platform requer um plano pago, pois contas gratuitas são limitadas aos 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 ferramenta é apenas para fins educacionais. Os contribuidores deste projeto não serão responsabilizados por quaisquer danos ou questões legais que possam surgir do uso desta ferramenta. Use por sua conta e risco.