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

OurMine: quem são os hackers por trás do 'cibervandalismo' contra a Globo

Notificação enviada para os s da Globoplay avisando de que o serviço de streaming da Globo foi hackeado - Reprodução/Twitter
Notificação enviada para os s da Globoplay avisando de que o serviço de streaming da Globo foi hackeado Imagem: Reprodução/Twitter

Helton Simões Gomes

De Tilt, em São Paulo

17/05/2020 11h59

Sem tempo, irmão

  • s do Globoplay receberam uma notificação estranha em seus celulares
  • Ela avisava que o serviço de streaming da Globo havia sido hackeado
  • Os autores da ação não se esconderam; são o misterioso grupo OurMine
  • A Globo não foi a primeira das vítimas dos hackers de Dubai, nos Emirados Árabes
  • A lista de alvos inclui Facebook, Netflix, HBO e até Zuckerberg e Sundar Pichai (Google)

Alguns s do Globoplay foram surpreendidos na noite deste sábado (16) por notificações de celular enviadas pelo próprio aplicativo do serviço de streaming da Globo informando que a empresa havia sido hackeada. A mensagem avisava ainda que os autores da invasão eram os hackers de um grupo chamado OurMine.

Isso fez muitos internautas temerem pelos conteúdos exibidos pela Globoplay. "Seu hacker, não apaga 'Senhora do Destino'. Preciso rever quando tiver filhos", pedia um jovem no Twitter (veja abaixo mais reações). Roubar documentos ou mesmo apagar dados, porém, não é o estilo dos hackers do OurMine, que possuem uma longa lista de vítimas, que inclui os CEOs de empresas de tecnologia como Mark Zuckerberg (Facebook), Jack Dorsey (Twitter) e Sundar Pichai (Alphabet, dona do Google).

O OurMine é um coletivo de cinco hackers baseados em Dubai, nos Emirados Árabes. Os integrantes do grupo, na verdade, se classificam como especialistas em segurança que buscam apontar falhas em como empresas e personalidades lidam com sua vida digital. O objetivo é vender consultoria para consertar essas brechas.

Esse tipo de abordagem não é incomum no mundo da cibersegurança. Os hackers especializados em invasões digitais para demonstrar falhas de segurança em sistemas são apelidados de "white hat", uma contraposição aos "black hat", que conduzem atividades maliciosas. A cor do chapéu como indicativo de quem é o mocinho ou o bandido é uma alusão aos filmes de faroeste.

O OurMine se diferencia de outros grupos pela publicidade que dá a seus feitos. Eles usam as contas nas redes sociais das próprias vítimas para avisá-las da invasão. A quantidade de empresas ou personalidades que já foram atacados pelos hackers é grande:

  • Netflix
  • Facebook
  • NFL
  • HBO
  • John Hanke, CEO da Nantic, criadora de Pokémon Go
  • Marisa Mayer, ex-CEO do Yahoo
  • Jimmy Wales, cofundador da Wikipédia
  • Sundar Pichai, CEO da Alphabet (dona do Google)
  • Mark Zuckerberg, CEO do Facebook

A mensagem publicada é quase sempre a mesma. "Oi, aqui é o OurMine. Nós estamos apenas testando sua segurança. Por favor, contate-nos para melhorar sua segurança", escrevem os hackers.

De vez em quando, adicionam uma pitada de ironia. "Olá, somos o OurMine. Bem, até o Facebook pode ser hackeado, mas pelo menos a segurança deles é melhor que a do Twitter. Para melhorar a segurança de suas contas, contate-nos", escreveram em fevereiro de 2020 ao invadir a conta do Facebook no Twitter.

Geralmente, os alvos são os perfis nas redes sociais mantidos por famosos ou empresas grandes. No caso do Globoplay, o sistema comprometido foi a plataforma para envio de notificações, segundo afirmou a Globo no Twitter.

O sistema de envio de push notifications do Globoplay, gerenciado por uma empresa parceira, foi alvo de uma ação de cibervandalismo na noite deste sábado, 16/5. Os invasores enviaram duas mensagens que direcionavam o usuário para o site da organização
Globo, em nota na conta da Globoplay no Twitter

Segundo a empresa, "nenhuma informação dos usuários, s ou não, foi comprometida", já que o "o sistema de push não se conecta com os bancos de dados dos nossos usuários nem a qualquer outro sistema".

Para os amantes da novela, a companhia avisou ainda que os sistemas da Globo ou do Globoplay não foram invadidos.

Em entrevista à CNN em 2017, o grupo disse que a invasão depende da segurança das contas. Algumas levam dias para serem comprometidas, enquanto outras não resistem a um esforço maior que 60 segundos.

Afirmou ainda que só invade os perfis para fazer as pessoas melhorarem seus sistemas de segurança. Nunca mudam senhas ou emails de o para impedir o restabelecimento da conta, diz. Segundo o grupo, 85% de seus alvos retornam os contatos pedindo para ter suas contas protegidas.

O grupo já chegou a virar notícia até por ataques que não fez. Em dezembro de 2016, a conta da Sony Music no Twitter foi hackeada para espalhar uma fake news:

Britney Spears foi morta em um acidente. Contaremos mais em breve #RIPBritney

Algumas celebridades chegaram a mandar condolências. "Descanse em paz, Britney Spears", escreveu Bob Dylan em seu perfil no Twitter. O ataque logo foi atribuído ao OurMine.

À CNN o grupo disse que a mensagem falsa que fez muito fã da cantora pop chorar à toa não foi feito deles. Eles só se envolveram no caso para invadir a conta da Sony e apagar o post.

Veja a reação de internautas à invasão que atingiu o Globoplay: