Abridores de Garagem e Abridores de Carros

No post anterior desta série, mostrei como muitos modelos de controles remotos de abridores de garagem são vulneráveis a "ataques de replay", mas que o fato de usarem ondas de rádio, imperceptíveis pelos sentidos humanos, faz com que muita gente não se dê conta disso. Um dos meus leitores, lendo o artigo anterior, foi capaz de prever o que eu pretendo fazer hoje: mostrar como eles também são vulneráveis a um tipo de ataque chamado "busca exaustiva".

Na figura ao lado, vemos o mesmo transmissor desmontado que eu mostrei no post anterior, mas após eu ter substituído os nove fios por nove interruptores (o nono interruptor é de um modelo diferente dos DIP switches branquinhos na caixinha azul, mas funciona do mesmo jeito). Isso torna bem prático testar diferentes combinações de "toc-tocs" simplesmente alterado o estado dos interruptores.

Se houvesse apenas um único interruptor, haveria apenas dois códigos possíveis: "ligado" e "desligado". Se fossem dois interruptores, eu teria quatro estados: dois para o primeiro, vezes dois para o segundo. Se eu tivesse três interruptores, eu teria oito combinações possíveis: dois para o primeiro interruptor vezes quatro para os dois interruptores restantes, como calculamos no exemplo anterior. Seguindo essa lógica até os nove interruptores, vemos que há apenas 512 possíveis combinações. Esse é o primeiro passo para verificar a viabilidade de um ataque de busca exaustiva: calcular a quantidade total de possibilidades.

O segundo passo é verificar com que velocidade poderemos testar cada combinação. Vamos supor, por enquanto, que a gente vai testar as combinações mudando os interruptores manualmente. Eu já usei esse brinquedo na prática e posso dizer que, na minha experiência, dá pra testar, em média, uma combinação por segundo, mexendo em um interruptor de configuração por vez. (É um fato curioso da matemática que há vários meios de testar todas as combinações possíveis, sem omitir nem repetir nenhuma, alterando apenas um interruptor de cada vez).

A animação ao lado mostra os primeiros cinco minutos desse processo de tentativa-e-erro em ação – o que a figura não mostra é que eu soldei, por debaixo da placa, o botão de transmitir. Dessa forma, o transmissor fica ligado continuamente e eu posso me concentrar só em trocar as combinações.

Assim, o tempo total que vamos levar para testar todas as possibilidades é: 512 combinações vezes 1 segundo por combinação, o que totaliza 512 segundos. Isso é pouco mais que oito minutos e meio. Vamos arredondar pra cima e estimar em dez minutos.

Então, se eu dispuser de paciência e motivação de passar dez minutos na tarefa enfadonha de testar as 512 combinações possíveis de "ligado" e "desligado" para os nove interruptores que regulam o código do controle remoto, eu conseguirei abrir não só a sua garagem, mas a de qualquer pessoa que use esse tipo de controle remoto.

Aliás, vale lembrar que, na prática, é comum conseguirmos achar a combinação correta ainda mais rápido que isso – dez minutos é o tempo que leva se eu der o azar da sua combinação ser exatamente a última que eu testar.

Em outras palavras, o ataque me parece não apenas viável, mas, de fato, muito fácil: é de baixíssimo custo (um controle remoto novo custa uns R$ 30,00 nas lojas de eletrônica por aqui, mais, digamos R$ 10,00 para nove interruptores, cada um custando pouco mais que R$ 1,00), leva pouquíssimo tempo pra preparar (dez minutos defronte do ferro de solda para soldar os interruptores aos fios) e tempo semelhante pra executar (no máximo dez minutos). Aqui, claro, estou omitindo o tempo gasto em escolher as vítimas – que, pelo fato das demais etapas serem tão rápidas, escolher as vítimas talvez seja o que leve mais tempo e esforço.

Se eu levasse um ataque desses a cabo e invadisse seu imóvel "protegido" pelo portão, eu estaria me expondo a outros riscos: eu poderia dar de cara com você ou com alguém que chamaria a polícia, etc. Por outro lado, abrindo o portão sem forçá-lo de forma aparente, talvez ninguém desconfiasse, sobretudo se eu soubesse de antemão que você estaria ausente. Lógico, você poderia ter outros métodos independentes de proteção ou vigilância: cadeados nas portas, cães ferozes, câmeras de vídeo com gravadores.

Estou despejando essa tonelada de exemplos para dizer algo que talvez soe óbvio: as vulnerabilidades e os ataques precisam ser considerados em relação ao seu contexto. Nada existe de forma estanque no mundo. Essas são algumas das razões pelas quais, a despeito dessa vulnerabilidade, não acontecem mais invasões de propriedade através desse método: entrar é só metade do problema do invasor; sair sem ser percebido é a outra.

Mesmo com esses atenuantes, é difícil negar que, depois que entendemos como o abridor de garagem funciona, ele passa a nos parecer... frágil, vulnerável,... simplório..., decepcionante, até.

Isso tudo nos remete à questão que eu discuti no primeiro post desta série – o que, exatamente, nós esperamos do abridor de garagens e o que, exatamente, queremos que não aconteça. Quando eu coloco essa pergunta para os fabricantes desses controles remotos, eles prontamente me respondem: "a função deles é abrir sua garagem sem você ter de sair do carro; a função deles não é evitar intrusos. Não foram projetados pra isso."

É interessante comparar esse caso dos abridores de garagem com outro caso familiar: as chaves dos carros. De algumas décadas pra cá, muitos carros passaram a vir de fábrica com um controle remoto embutido na chave que permite abri-los à distância. A "primeira geração" desses controles usava exatamente o mesmo sistema dos abridores de garagem. Não demorou para os ladrões de carro perceberem isso e roubarem carros com muito mais facilidade usando exatamente as técnicas que descrevi aqui. Algum de vocês se lembra de ter estado, por volta de uns 10 anos atrás, digamos, no estacionamento de um shopping center e ver vários carros apitando em rápida sequência? Se sim, talvez você tenha testemunhado um ataque desses.

Não demorou para os fabricantes de carros perceberem a burrada e consertarem o problema. Hoje em dia, os carros empregam um sistema chamado "Rolling Codes", que é basicamente a mesma coisa que o pessoal de informática chama "One-Time Passwords" ou "senhas descartáveis".

Se você lida com bancos, talvez você conheça um aparelhinho de senhas descartáveis, tal como o da figura ao lado: uma vez por minuto ou cada vez que você aperta um botão, o aparelho mostra uma nova senha. Essa senha é calculada em função de uma senha-mestra que só o seu aparelhinho e o site do banco conhecem. Assim, o site do banco tem como saber se você digitou a senha certa ou não.

O controle remoto que abre seu carro hoje opera pelo mesmo princípio: cada vez que você aperta o botão, ele transmite via rádio um padrão de "toc-tocs" diferente do anterior. Assim, se você sintonizar um rádio na frequência dele e gravar os "toc-tocs", pouco adiantará, porque da próxima vez, vai ser outro. Isso efetivamente inviabiliza o ataque de replay.

Além disso, ao invés de 9 toc-tocs como os abridores de garagem, os abridores de carros usam pelo menos 40 "toc-tocs" (tudo isso nos décimos de segundo entre você apertar o botão e o carro apitar). Assim, mesmo se você fizer uma máquina para testar centenas de combinações por segundo, o tempo necessário para se testar todas as possibilidades fica muito grande, da ordem de alguns anos, tornando o tempo provável de sucesso longo demais para ser prático.

Essa é uma característica curiosa do ataque de busca exaustiva: em princípio, ele é sempre possível e sempre tem sucesso se tivermos tempo de esperar. Afinal, ele testa todas as possibilidades, sem esquecer nenhuma – é por isso que ele se chama busca exaustiva. Um ataque de busca exaustiva só fica sem sucesso se ele tiver sido interrompido antes de completado – ou seja, se não tiver sido realmente exaustivo.

Por isso, um item básico quando se projeta sistemas como esses é que a quantidade de combinações seja tão grande que, mesmo um adversário capaz de testar muitas tentativas por segundo, não seja possível completar o ataque em tempo razoável. Essa é uma das razões pelas quais os gurus de segurança insistem em que suas senhas sejam longas, complicadas e difíceis de adivinhar. E, claramente, esse quesito não foi observado no abridor de garagem.

Uma "conclusão" meio esquisita a que podemos chegar dessa história toda é que, sob um certo ponto de vista, podemos dizer que nossos carros são mais protegidos do que nossas casas – o sistema que abre garagens é mais vulnerável do que o sistema que abre nossos carros. Note que disse "sob um certo ponto de vista". Tenho plena consciência que, nessa discussão toda, omiti coisas como, as chaves e fechaduras físicas que protegem nossos carros e nossas casas. Mas, aqui se aplica aquele famoso clichê: "um sistema é apenas tão seguro quanto o seu elo mais fraco".

Outra reflexão interessante, que quero jogar pro leitor, é observar que só de uns poucos anos pra cá os bancos via Internet têm migrado para senhas descartáveis – muitos ainda usam apenas nome e senha. A conclusão estranha a que podemos chegar é que durante muito tempo, protegíamos nosso dinheiro no banco com algo tão fraco quanto o abridor de garagem e muito mais fraco do que vínhamos protegendo nossos próprios carros.

Partes anteriores

Próxima parte

Comentários
Aceita-se formatação à la TWiki. HTML e scripts são filtrados. Máximo 15KiB.

 
Enviando... por favor aguarde...
Comentário enviado com suceso -- obrigado.
Ele aparecerá quando os moderadores o aprovarem.
Houve uma falha no envio do formulário!
Deixei uma nota para os admins verificarem o problema.
Perdoe-nos o transtorno. Por favor tente novamente mais tarde.
Marco Carnut | 2010-08-09 08:26:18 | permalink | topo

Victor – FHSS não se aplica aqui. Salvo raríssimas exceções, a maioria desses transmissores são simplíssimos, usando narrowband mesmo, com modulações OOK, ASK ou FSK – as mais simples que existem.

Não é muito complicado fazer um transmissor com frequência ajustável, mas é menos complicado ainda comprar vários transmissores de diferentes fabricantes e montá-los com dip switches acima ou ligá-los a um microcontrolador. Talvez nem seia o "absoltuamente mais barato", mas os transmissores custam tão barato que, mesmo comprando, digamos, dez deles, ainda assim não seria um custo tão alto. E isso supondo que você precise mesmo comprar – se você for funcionário da loja de eletrônica... :)

Além disso, em frequencias diferentes suficientemente separadas, a busca exaustiva pode até ser feita em paralelo, o que mantém o tempo do ataque na ordem dos minutos.

Victor Hora | 2010-08-09 00:51:29 | permalink | topo

Hummm, posso estar enganado... Mas acredito que daria pra fazer um transmissor enviar as 512 (ou mais) possíveis combinações em frequências diferentes, em questão de segundos ou minutos, já que o espectro de frequência desses equipamentos é relativamente pequeno (300-400Mhz). De repente utilizar a técnica de frequency hopping, tal como o FHSS (http://en.wikipedia.org/wiki/Frequency-hopping_spread_spectrum)

:)

Tímido Visitante Anônimo | 2010-08-08 15:44:51 | permalink | topo

Não funciona em qualquer portão. Teria que saber qual a marca. Cada marca de transmissor usa uma frequencia diferente.