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

'Chupa-cabra' e infiltrado: como hackers deram dano milionário ao INSS

Equipamentos apreendidos pela PF com quadrilha de hackers que usava "chupa-cabra" para aplicar golpe no INSS - Divulgação/PF
Equipamentos apreendidos pela PF com quadrilha de hackers que usava 'chupa-cabra' para aplicar golpe no INSS Imagem: Divulgação/PF

Cleberson Santos

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

12/07/2023 04h00Atualizada em 12/07/2023 16h02

"Chupa-cabra" para "sugar" dados de computadores. Empresa de fachada que extraviava recursos ilegais. Bandidos infiltrados em agências. Era assim que uma quadrilha de hackers atuava para cometer crimes cibernéticos contra o INSS (Instituto Nacional de Seguro Social), de acordo com a Polícia Federal.

Em parceria com o COINP (Coordenação de Inteligência Previdenciário), órgão associado ao Ministério da Previdência, a PF realizou a Operação Upgrade contra uma organização criminosa que, a partir do Piauí, lesava segurados de todo país. Eduardo Monteiro, delegado da Polícia Federal, contou a Tilt que há indícios de que a atuação gerou um "dano milionário".

Mais de 20 prisões

Chamada de Operação Upgrade, a ação recebeu esse nome por ser uma evolução de investigações que buscavam identificar responsáveis pela criação dos equipamentos "chupa-cabra" - Chupa Cabra 1 e 2 e Backup. Esta última cumpriu em abril mandados de prisão de cinco invasores, sendo dois em São Paulo e três em Teresina.

A operação mobilizou mais de cem policiais federais nos estados de São Paulo, Ceará e Rio de Janeiro, além do Distrito Federal. Foram cumpridos 24 mandados de busca e apreensão e 22 de prisão temporária, todos expedidos pela 1ª Vara Federal de Teresina (PI).

Entre os presos, estão:

  • hackers,
  • financiadores,
  • indivíduos responsáveis pelo aliciamento de pessoas com os às agências e outras atividades menores.

"Chupa-cabra"

O delegado da PF explica a Tilt que os "chupa cabra" são aparelhos com aparência de roteadores. Uma vez acoplados a um computador do INSS, eles eram capazes de enviar os dados trafegados na rede interna para os hackers.

Com os dados em mãos, os cibercriminosos faziam duas coisas. Primeiro, reativavam benefícios cessados. Depois, geravam pagamentos de retroativos e os destinavam a contas bancárias diferentes das cadastradas.

O grupo também obtinha o à rede ao conseguir vazar as senhas de servidores da previdência.

A PF identificou as ações da quadrilha em pelo menos duas agências da Previdência Social na capital piauiense. Era nessas repartições públicas que o grupo instalou o "chupa-cabra" para obter o indevido a dados de segurados.

A investigação identificou que a quadrilha chegou a criar uma empresa de fachada em São Paulo para servir de base para fraudes cibernéticas e outros crimes.

"A partir deste centro, eles procuravam pessoas em outros estados pelo Brasil para facilitar o o às agências. Além disso, tudo indica que o grupo trabalhava em parceria com outros grupos criminosos", relata o delegado.

Há indícios de que a quadrilha atuava em outros estados, como Maranhão e Goiás.

"Ainda é cedo para apontar a suspeita de invasão em outras agências [além das duas já identificadas]. As investigações irão aprofundar isso".

Danos milionárias

Segundo a Polícia Federal, ainda não é possível dimensionar o tamanho do prejuízo causado pelo grupo. O INSS, no entanto, identificou que "fraudes dessa natureza alcançariam cifras milionárias em danos ao erário".

O delegado da PF alerta para que segurados que foram titulares de benefícios já cessados, especialmente em períodos anteriores ao ano de 2010, procurem a Previdência Social para se informar a respeito de alguma espécie de reativação de valores retroativos.

"Alguns segurados que se encontram nessa situação identificaram essa irregularidade ao declarar seu imposto de renda, pois constava o recebimento desses valores retroativos", explica Monteiro.

Ocorre que efetivamente os valores pagos não eram destinados às contas dos verdadeiros titulares dos benefícios ou, quando eram, havia a criação de uma conta bancária sem conhecimento do titular do benefício em outro estado da federação. Então, os valores eram sacado sem seu conhecimento. Eduardo Monteiro, delegado da Polícia Federal

Os investigados na operação Upgrade poderão responder pelos crimes de organização criminosa, furto eletrônico, invasão de dispositivo informático e lavagem de bens e valores. A soma das penas máximas desses crimes alcançariam a marca de 30 anos de reclusão.