Muitas pessoas procuram melhorar a segurança de suas casas ou escritórios instalando câmeras "inteligentes". Com uma conexão direta à Internet, a transmissão dessas câmeras está disponível a qualquer momento e com apenas alguns cliques. No entanto, essa ferramenta tão útil pode se tornar rapidamente uma dor de cabeça se a câmera sofrer algum tipo de falha de segurança que deixe a porta aberta para a entrada de atores não autorizados. Como demonstrado por pesquisadores da ESET, este é o caso da câmera na nuvem D-Link DCS-2132L, que permite a um atacante não apenas interceptar e visualizar os registros de vídeo, mas também manipular o firmware dos dispositivos.

O problema mais sério com a câmera D-Link DCS-2132L é que a transmissão do vídeo ocorre sem criptografia, e é executada sem criptografia entre as duas conexões - entre a câmera e a nuvem e entre a nuvem e o aplicativo para monitorar a câmera do cliente, oferecendo um cenário propício para realizar um ataque do Man in the Middle (MitM) e permitir que um intruso espie o que as câmeras transmitem.

Figura 1 - A imagem ilustra a vulnerabilidade na transmissão de dados e possível vetor de ataque "Man in the Middle".

O aplicativo de monitoramento e a câmera se comunicam por meio de um servidor proxy na porta 2048, usando um túnel TCP baseado em um protocolo de roteamento personalizado da D-Link. Infelizmente, apenas parte do tráfego que passa por esses túneis é criptografado, deixando parte das informações mais sensíveis - como a solicitação de IP da câmera e endereços MAC, informações de versão, transmissões de áudio e vídeo, bem como outras informações da câmera - sem criptografia.

A vulnerabilidade responsável por isso e alguns outros problemas descritos anteriormente neste artigo podem ser explicadas por uma condição no arquivo request.c (parte do código-fonte do servidor web de código aberto boa personalizado no D-Link) que gerencia as solicitações HTTP para a câmera. Todas as solicitações HTTP de 127.0.0.1 são elevadas no nível do administrador, garantindo que um atacante possa ter acesso completo ao dispositivo.

Figura 2 - Condição no código-fonte do servidor da boa web. Todas as solicitações recebidas são elevadas no nível do administrador.

Interceptando transmissões de áudio e vídeo

Um ataque do tipo "Man in the Middle", no qual um criminoso intercepta o tráfego de rede entre o aplicativo de monitoramento e a nuvem ou entre a nuvem e a câmera, pode usar os dados transmitidos da conexão TCP na porta do servidor (nuvem) 2048 para ver as solicitações HTTP dos pacotes de áudio e vídeo. Isso pode ser reconstruído e reproduzido pelo atacante, a qualquer momento, para obter a transmissão de áudio ou vídeo atual da câmera. Em nossos experimentos, obtivemos o vídeo transmitido em dois formatos brutos (RAW), mais especificamente M-JPEG e H.264.

Para reconstruir a transmissão de vídeo, é necessário seguir alguns passos (que podem ser facilmente automatizados através de um simples programa ou script):

  1. Identifique o tráfego que representa a transmissão de vídeo. Esse tráfego consiste em vários blocos de dados, nos quais cada bloco possui um cabeçalho específico e um comprimento definido.
  2. Separe as partes de dados dos cabeçalhos.
  3. Finalmente, as partes do vídeo são mescladas em um arquivo.

Reproduzir os arquivos de vídeo obtidos pode ser um pouco complicado, já que eles estão em um formato de transmissão bruto, em vez de um formato de arquivo contêiner. No entanto, alguns players de mídia suportam esses formatos brutos se forem executados com a linha de comando apropriada (por exemplo, o MPlayer pode manipular arquivos M-JPEG e o VLC pode manipular arquivos H.264).

Plug-in com defeito

Outro problema sério que foi encontrado na câmera estava escondido no plugin para o navegador web "service mydlink". Esse complemento é um dos formatos que o aplicativo de monitoramento tem disponível para o usuário.

O plugin para o navegador web controla a criação do túnel TCP e a reprodução do vídeo em tempo real nos navegadores do cliente, mas também é responsável pelo encaminhamento de solicitações de transmissão de áudio e vídeo através de um túnel, que escuta em um porta gerada dinamicamente no host local.

O túnel está disponível para todo o sistema operacional, portanto, qualquer aplicativo ou usuário no computador do cliente pode simplesmente acessar a interface web da câmera por meio de uma solicitação simples (somente durante a transmissão de vídeo em tempo real) para hxxp://127.0.0.1:RANDOM_PORT/.

Nenhuma autorização é necessária, uma vez que as solicitações HTTP para o servidor web da câmera são automaticamente aumentadas no nível do administrador quando acessadas por meio de um IP do localhost (o localhost do aplicativo de monitoramento é roteado para o localhost da câmera).

Esta vulnerabilidade também permite que qualquer atacante substitua o firmware legítimo por sua própria falsificação ou bakdooreada.

O vídeo a seguir consiste em uma demonstração da falha de segurança já solucionada no plug-in:

Substituição ilegal do firmware

No momento de escrever este artigo, os problemas com o plugin "mydlink services" foram satisfatoriamente reparados pelo fabricante.

No entanto, a substituição do firmware malicioso ainda é possível por meio de uma vulnerabilidade no protocolo de roteamento personalizado da D-Link descrito anteriormente neste artigo. Para fazer isso, um atacante precisa modificar o tráfego roteado substituindo a solicitação GET para transmissão de vídeo por uma solicitação POST específica que carregue e execute uma atualização de firmware ausente.

Neste ponto, é importante esclarecer que a realização de tal ataque não é trivial, já que teria que seguir todas as regras do protocolo de roteamento, dividindo o arquivo de firmware em blocos com títulos específicos e de um determinado comprimento máximo.

No entanto, a autenticidade do binário do firmware não é verificada durante o processo de atualização. Dessa forma, um firmware personalizado pode ser carregado no dispositivo com alguns recursos "ocultos" adicionais, como mineradores de criptomoedas, backdoors, programa de espionagem, botnets ou outros trojans. Além disso, a falta de verificações de autenticidade significa que um agente malicioso pode "bloquear" o dispositivo deliberadamente.

UPnP expondo a porta HTTP para a Internet

O D-Link DCS-2132L também teve alguns outros problemas menores, mas ainda preocupantes. Você pode configurar o próprio encaminhamento de porta em um roteador doméstico, usando o Universal Plug and Play (UPnP). Isso expõe a Internet à sua interface HTTP na porta 80, que pode ocorrer sem o consentimento do usuário e, mesmo sem que os campos "Ativar apresentação UPnP" ou "Ativar encaminhamento de porta UPnP" estejam marcados na configuração.

Não está claro por que a câmera usa uma configuração tão perigosa. Atualmente, você pode encontrar cerca de 1.600 câmeras D-Link DCS-2132L com porta 80 expostas através do Shodan, a maioria delas nos Estados Unidos, Rússia e Austrália.

Figura 3 - Resultado da pesquisa no Shodan para DCS-2132L na porta 80.

A maneira mais fácil de reduzir esse risco atual é desabilitar o UPnP no roteador do usuário.

Plugin corrigido, outros problemas persistem

Como parte de um processo de divulgação responsável, a ESET relatou os problemas detectados à D-Link em 22 de agosto de 2018, incluindo uma vulnerabilidade de comunicação sem criptografia na nuvem: mensagem de autenticação em nuvem insuficiente e comunicação LAN sem criptografia.

A D-Link respondeu imediatamente, informando à ESET que os relatórios de vulnerabilidade haviam sido enviados para suas equipes de pesquisa e desenvolvimento, prometendo acompanhamento das falhas relatadas.

Desde então, algumas das vulnerabilidades foram mitigadas, de acordo com nossos testes, o plugin "servide mydlink" agora está devidamente protegido, embora outros problemas persistam. Até o momento, a versão mais recente do firmware disponível para download era de novembro de 2016 e não resolvia as vulnerabilidades, o que permitiu a substituição maliciosa do firmware da câmera, bem como a interceptação de sequências de áudio e vídeo.

A câmera D-Link DCS-2132L ainda está disponível no mercado. Recomenda-se que os proprietários atuais do dispositivo verifiquem que a porta 80 não esteja publicamente exposta à Internet e que reconsiderem o uso do acesso remoto se a câmera estiver monitorando áreas altamente confidenciais de sua residência ou empresa.

Autores: Milan Fránik e Miloš Čermák, Pesquisadores de Malware da ESET.