;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Invasão ao GPS e ataque sem fio: como hackers roubam carros conectados

Homem usa computador para entrar em carro; hacker; ciber; roubo; invasão; conectado; veículo; automóvel - Getty Images/iStockphoto
Homem usa computador para entrar em carro; hacker; ciber; roubo; invasão; conectado; veículo; automóvel Imagem: Getty Images/iStockphoto

Ruam de Oliveira

Colaboração para Tilt, de São Paulo

27/06/2023 04h00

Criminosos não estão só usando caixinhas de som da JBL e antigos aparelhos da Nokia para destrancar carros conectados e dar a partida em veículos mesmo sem possuir a chave física.

Já há quadrilhas especializadas em criar artimanhas tecnológicas para roubar automóveis inteligentes, hackers que monitoram sistemas de GPS usados por dezenas de milhares de carros e até ataques sem fio, que não precisam sequer chegar perto do veículo.

Especialistas ouvidos por Tilt contam que, apesar de ainda pouco disseminados, esses golpes irão se tornar mais comuns, à medida que a tecnologia embarcada aumentar.

Quadrilha

Em outubro do ano ado, a Europol (Agência da União Europeia para a Cooperação Policial) prendeu 31 criminosos que criavam e vendiam software para ladrões hackearem carros de maneira remota. Os alvos eram veículos que não usavam chave.

Eles criaram uma ferramenta apresentada para fazer diagnóstico automotivo, mas que modificava o software original dos carros para liberar portas e dar a partida sem necessidade das chaves.

Hackeando o GPS

Usados por empresas para rastrear frotas por meio do GPS, o ProTrack e iTrack, já foram invadidos por um hacker chamado L&M em 2019. Ele contou à Vice que ou mais de 20 mil contas em apenas um dos apps, em países como África do Sul, Marrocos e Filipinas.

Para provar que falava a verdade, L&M mostrou dados obtidos como nome, modelo e números de identificação do carro, números de telefone, e-mail e até mesmo endereços físicos. Algumas das vítimas confirmaram as informações entregues pelo hacker.

Ele descobriu que a senha padrão de muitos usuários era 123456, a mesma que recebem ao se inscrever. O hacker disse ainda que conseguia desligar os motores dos carros, mas não fez isso porque o alvo "eram as empresas, não os clientes".

Invadindo Teslas

No caos do hacker David Colombo, de apenas 19 anos, a intenção não era roubar, mas alertar. Ele revelou como conseguiu invadir o sistema de 25 carros da Tesla em diversos países do mundo. Seu objetivo era informar a fabricante sobre o risco que corriam seus clientes.

Ele explorou uma brecha no sistema que o permitiu verificar a localização dos automóveis, ver se o motorista estava no carro ou mexer nos faróis.

"Sim, eu poderia destrancar as portas e começar a dirigir o Tesla afetado", afirmou, acrescentando que "não poderia intervir se alguém estivesse dirigindo (além de iniciar a música no volume máximo ou piscar as luzes) e também não poderia dirigir esses Teslas remotamente".

Como os hackers fazem?

Os hackers citados até aqui criaram suas próprias ferramentas ou exploraram falhas dos sistemas invadidos. Mas já há ferramentas vendidas na internet que fazem isso. Uma das mais conhecidas é o Flipper Zero, aparelho que chegou a ser barrado pela Anatel (Agência Nacional das Telecomunicações).

Em linhas gerais, o dispositivo é capaz de clonar sinais de comunicação sem fio como Bluetooth e NFC. No caso de carros, é capaz de abrir portas que usam chaves digitais ao reproduzir a mesma frequência usada por elas para destravar os carros.

Wanderson Castilho, perito em crimes digitais e CEO da Enetsec, conta que já conseguiu abrir um Tesla usando o aparelho. "Esses dispositivos carregam um código que permite explorar vulnerabilidades nos carros", afirma.

Ele explica que nem todos os carros podem ter o sinal simulado pelo Flipper Zero. Apenas aqueles que possuem vulnerabilidades. Por isso, pesquisadores de diversas montadoras já se mexem para investigar e mitigar essas falhas.

Ataques sem fio

Se o Flipper Zero exigem que criminosos precisem se aproximar do veículo, pesquisadores já conseguiram atacaram carros à distância. É o caso de Charlie Miller e Chris Valasek que, em 2015, invadiram a central de entretenimento de um Jeep e mexeram no , aram, aumentaram o volume do rádio e ligaram o limpador de parabrisa.

Conhecendo o IP (espécie de RG de aparelhos conectados) do carro, os pesquisadores aram o sistema Uconnect, que gerencia as funções de entretenimento do carro, e implantaram um novo código no lugar do firmware, software que gerencia funções básicas de um dispositivo.

A falha foi explorada por meio do Wi-Fi. Mas, neste caso, o ataque não é possível de ser feito com todos os carros. No entanto, com o aumento de modelos que oferecem essa e outras funcionalidades, as brechas tendem a se ampliar também.

"Garanto que, em um futuro próximo, carros que andam sozinho estarão em grande perigo e poderão ser controlados, roubados, destruídos e utilizados para algum mal sem nenhum contato físico"
Calil Khalil, especialista em cibersegurança

Wanderson pontua que "pensar fora da caixa" é o que faz criminosos, às vezes, tentarem ataques que não foram previstos pelas montadoras. O uso de um celular antigo, como o Nokia, é um deles.

Em todo caso, o perito ressalta que as responsabilidades de segurança sempre serão das empresas que fabricam esses veículos. "Quando eu compro um carro, a segurança está além da minha possibilidade. Ela é pré-definida. No meu entendimento, o responsável por qualquer tipo de dano que possa acontecer é o fabricante, é o dono daquela tecnologia que não teve um investimento suficiente para conseguir bloquear esses hackers", diz.