segunda-feira, 27 de junho de 2016

Hacking IoT: Roteador Kross KP8696X (Parte 03)

Pessoal,

Nesta postagem eu vou apresentar a parte final da análise do roteador KP8696X.

Resumo da parte 02:
  1. Serviço de TFTP habilitado por padrão: Possível realizar o download do arquivo de configuração do roteador sem qualquer autenticação (o arquivo contém informações sensíveis como as credenciais do servidor web e rede wifi)
  2. Falta de autenticação em diversas páginas do servidor web: Algumas páginas de configuração do servidor web do roteador podem ser acessadas diretamente sem a necessidade de autenticar o cliente.
Link para a segunda parte: Kross KP8696X (Parte 02)

Analisando o Hardware

A próximo etapa da análise consistiu em verificar o hardware do roteador. A figura 01 apresenta o roteador aberto (sem a tampa superior) e podemos ver a presença de uma porta serial UART.

Figura 01: Porta serial (UART)

O esquema de pinos identificado foi (da esquerda para direita):
  • Pino 1: Terra
  • Pino 2: Fonte (VCC)
  • Pino 3: RX
  • Pino 4: TX

O processo de boot do roteador pode ser verificado através do acesso via porta serial. Para acessar o menu de boot, precisamos apertar ESC no inicio da ativação do dispositivo. O menu apresenta alguns comandos que foram importantes para o estudo. A partir do comando ‘info’, podemos identificar alguns endereços de memória e o tamanho da memória flash (figura 02).

Figura 02: Menu de boot

Podemos utilizar o comando ‘d’ para realizar dump de memória (figura 03) !

Figura 03: Menu de boot (Dump de bytes)

O próximo passo foi realizar um dump da memória (Application Address: 0x9FC10000) com o comando ‘d’ e utilizar um script em python para converter os caracteres em hexa para um arquivo em binário (‘dump.bin’).

Figura 04: Realizando o dump de memória

Podemos agora realizar algumas pesquisas no arquivo binário ‘dump.bin’. Algumas strings interessantes foram encontradas (Figuras 05, 06 e 07). Estas strings representam páginas utilizadas pelo servidor web do roteador que recebem comandos como parâmetros de entrada. Estas páginas podem ser utilizadas para execução de comandos remotos no roteador.

Figura 05: Strings encontradas no dump de memória

Figura 06: Strings encontradas no dump de memória (2)

Figura 07: Strings encontradas no dump de memória (3)

Conclusão

Nesta postagem eu apresentei a terceira parte de uma análise realizada no roteador KP8696X da Kross. Principais pontos identificados nesta análise:
  1. Acesso via porta serial (UART): Conexão serial via UART encontra-se habilitada no equipamento por padrão. A partir desta conexão, é possível ter acesso ao processo de boot do roteador e realizar um dump de memória do equipamento.
  2. Command Injection no servidor web: Comandos de shell podem ser executados diretamente no servidor web em algumas páginas encontradas do dump de memória do roteador.
O fabricante foi informado em novembro de 2015 sobre todas as vulnerabilidades identificadas neste estudo. O novo firmware (v1.00.07) foi lançado pelo fabricante em Janeiro de 2016.

Keep Hacking :)

quarta-feira, 1 de junho de 2016

Hacking IoT: Roteador Kross KP8696X (Parte 02)

Pessoal,

Nesta postagem eu vou continuar a análise do roteador KP8696X da Kross.

Resumo da parte 01:
  1. Serviço de Telnet habilitado por padrão (23/TCP)
  2. Conta secreta de administrador (Backdoor) presente no dispositivo.
  3. Senha de backdoor = 4 últimos números do endereço MAC + string "airocon"
Link para a primeira parte: Kross KP8696X (Parte 01)

Explorando o serviço de TFTP

O comando "show processes" no serviço de Telnet apresenta todos os processos sendo executados no dispositivo (a figura 01 demonstra a existência de um serviço de TFTP sendo executado no roteador por padrão).

Figura 01: Lista de processos sendo executados
A figura 02 apresenta os arquivos de configuração sendo utilizados pelo roteador.

Figura 02: Arquivos de configurações
Podemos utilizar o serviço de TFTP para realizar o download destes arquivos (figura 03). O serviço de TFTP não exige autenticação do usuário (portanto os arquivos de configurações podem ser obtidos remotamente por qualquer usuário da rede local).

Figura 03: Obtendo arquivo de configuração
A figura 04 apresenta o conteúdo do arquivo de configuração “wscd.conf”. Este arquivo contém informações sensíveis como as senhas da rede sem fio (WPA/WPA2), a senha do servidor web e número de PIN (WPS).

Figura 04: Arquivo de configuração "wscd.conf"

Analisando o servidor web

O servidor Telnet apresenta um comando "show web” que permite listar os arquivos utilizados pelo servidor web. A figura 05 apresenta alguns dos arquivos presentes na aplicação web do roteador.

Figura 05: Paginas do servidor web
Um script em python foi criado para acessar diretamente todas páginas listadas pelo comando ‘show web’. A figura 06 mostra que algumas páginas de configurações do servidor web podem ser acessadas sem autenticação (Ex: um atacante pode acessar a página ‘wizard_setup.htm’ sem autenticação e alterar informações como o ESSID e a senha do roteador).

Figura 06: Páginas de configurações acessadas sem autenticação

Conclusão

Nesta postagem eu apresentei a segunda parte de uma análise realizada no roteador KP8696X da Kross. Principais pontos identificados nesta análise:

  1. Serviço de TFTP rodando por padrão: Arquivo de configuração do roteador (contendo informações sensíveis como credenciais) pode ser obtido sem autenticação por qualquer usuário na rede local. 
  2. Falta de autenticação no servidor web: Diversas páginas de configuração do roteador podem ser acessadas diretamente sem autenticação no servidor web.

A versão v1.00.06 do firmware apresenta o serviço de Telnet habilitado por padrão e uma conta de backdoor habilitada no dispositivo. O fabricante foi informado em novembro de 2015. O novo firmware (v1.00.07) foi lançado em Janeiro de 2016.

Keep Hacking :)