;(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

Técnica usada por hackers presos não é comum, dizem especialistas

Lucas Borges Teixeira

Colaboração para o UOL, em São Paulo

26/07/2019 12h38

A técnica de invasão apontada pela Polícia Federal (PF) como modus operandi dos suspeitos de hackear os celulares do ministro Sergio Moro e de outras autoridades não é tão comum, apontam especialistas em segurança digital ouvidos pelo UOL.

De acordo com a PF, os suspeitos usavam um programa para simular o número de telefone e ligavam para as vítimas para arem suas caixas postais e, assim, roubarem códigos de o a aplicativos. Para os especialistas, a opção é trabalhosa e demanda uma série de informações. Uma das apostas é a clonagem de número.

Esta técnica é chamada de Spoofing, termo em inglês que deu nome à operação deflagrada na terça-feira (24) e resultou na prisão de quatro suspeitos de invadirem os celulares de Moro e de outras autoridades. Apesar de ser antigo e se dar de várias formas, a maneira feita via caixa postal, como relatado pela PF, não é usual.

"Dá muito trabalho, né? Você tem de ficar ligando [para a vítima] até colocar na caixa postal. Mas e se ela tem senha, é fechada? Tem uma série de questões nisso aí", afirma Daniel Lofrano Nascimento, que já atuou como hacker e hoje é dono da consultoria de segurança digital DNPontoCom. "É possível? É, mas é bem mais complexo", diz.

"Essa técnica não é muito utilizada porque demanda outras informações", concorda Matheus Jacyntho, gerente de segurança da informação da consultoria Protiviti. "Como são pessoas públicas, tem a agenda deles na internet. Então sabe quando estão viajando, com o celular desligado. Mas é um trabalho bem grande", explica.

Pelo computador, spoofing é massificado

Segundo os especialistas, as formas mais massificadas de spoofing, como via computador, já são conhecidas. "É uma técnica utilizada há um bom tempo no Brasil e no mundo", afirma José Ricardo Bevilacqua, diretor da Control Risks, especialista em segurança digital, no Brasil.

Ele exemplifica um golpe comum: "você acha que está ando determinado site de internet banking, por exemplo, mas não está nele e sim em uma página que foi construída. Para o usuário, este aparenta ser o site do banco, mas, na verdade, é um site falso para roubar dados sigilosos".

No entanto, de acordo com os especialistas, quando se trata de ataques a pessoas específicas, seja no meio corporativo, seja uma autoridade, como no caso atual, é mais comum que as ações sejam direcionadas e mais trabalhadas.

Hacker aposta em clonagem

Experiente em invasão de computadores em uma época que smartphones nem existiam, Nascimento diz ver maior probabilidade em uma invasão por meio de clonagem de número do que pelo esquema da caixa postal. Ele avalia que o o pode ter ocorrido via SMS.

"[É possível que] eles clonaram através de um chip virgem. Eles invadem a operadora, sobem o número dele [vítima] no chip e este número fica ativo em dois aparelhos ao mesmo tempo", aponta o especialista. "Daí você tem as informações às quais o tal número é responsável".

Neste caso, os hackers não teriam usado a caixa postal, mas solicitado o código via SMS, que teria chegado no chip clonado. "É um dos procedimentos de recuperação do Telegram", especula Nascimento. "É por isso que eles não clonaram WhatsApp, Google Drive ou iCloud. Eles têm PIN, não dá para fazer só com o número".

Como aram as mensagens se estas foram apagadas?

Gustavo Henrique Elias Santos - Reprodução - Reprodução
Gustavo Henrique Elias Santos foi um dos presos na operação Spoofing
Imagem: Reprodução
Uma das principais dúvidas levantadas sobre o caso é a questão de como os hackers tiveram o às mensagens de Moro em junho de 2019 se elas, segundo a política do Telegram, já deveriam ter sido apagadas, já que o ex-juiz federal alega que não usava o aplicativo desde 2017 e o Telegram diz que sua política é apagar o conteúdo de um perfil que não tenha sido utilizado por seis meses.

Os especialistas levantaram duas possibilidades: uma de que Moro não apagou o celular no período que diz ter apagado e outra de que o pacote das mensagens veio por meio de outros aparelhos.

"Ele [Moro] não deve ter apagado quando disse que apagou, só pode ter parado de usar. Creio que eles hackearam um número antigo, que ele usava quando era juiz. Ele simplesmente trocou e deixou lá", especula Nascimento.

Jacyntho considera que as mensagens podem ter vindo de terceiros. "A gente sabe que não foi divulgado o conteúdo completo, então não dá para falar de quais aparelhos [as mensagens] vieram. Imagina quantos dados foram capturados? O que está sendo divulgado não quer dizer necessariamente que veio do ministro. O Telegram pode estar sendo verdadeiro, Moro também, e pode ter vindo de outro celular", analisa.

Nenhum deles, no entanto, questiona a política do aplicativo. "Nenhuma informação some para sempre, mas apps mais especializados, como é o Telegram, realmente tomam todas as medidas possíveis para tentar não deixar nenhum rastro", avalia Bevilacqua. "Não posso falar pela empresa, mas a ideia por trás disso tudo é eliminar qualquer rastro para que exista algum grau de confiança, é o que eles propõem".

Quatro pessoas hackeram mais de mil celulares em poucos meses?

Segundo Moro e a PF, centenas de pessoas - talvez mais de mil - foram vítimas do grupo nos últimos meses. Quatro pessoas foram presas e a PF não informa se há outras pessoas investigadas.

Para Nascimento, se o número de atingidos se confirmar, é possível. "Tecnicamente, depende da capacidade deles, mas a PF chama estes garotos de estelionatários, não crackers ou hackers. Eu não quero subestima-los, mas, se for isso, então tem mais gente", avalia. "Mais de mil é uma quantidade altíssima".

Jacyntho diz que o problema principal não é nem chegar às pessoas - o que, segundo ele, seria rápido -, mas coletar os dados. "É um trabalho bem grande, porém rápido. Com o computador, você acelera. Assumindo que deu tudo certo, em cinco ou dez minutos se tem a conta. Mas a questão é: são conversa de anos, segundo foi afirmado. Aí sim tem um trabalho bem maior. Não sei se aram todos os níveis, mas é muito conteúdo", reflete.

PF diz que celulares de Bolsonaro foram alvo de hackers

Band Notí­cias