Blog Logo

Este Criminoso Vai Pensar Duas Vezes Antes de Tentar Outro Golpe 🗝️🔒

Não sei vocês, mas ultimamente parece que as mensagens de golpe me perseguem. Uma após a outra, tentando entrar na minha caixa de entrada para roubar meus dados bancários. Desta vez, chegou uma tão tosca que não pude resistir. Mas atenção, antes de mais nada, censurei a URL na imagem, não penso dar nem um pingo de publicidade a estes ladrões.

image.webp

Normalmente, costumo ignorar estas coisas. Bloqueio e sigo em frente. Mas aquela faísca de curiosidade (e um pouco de maldade, para que enganar) me fez pensar: O que aconteceria se eu investigasse um pouco mais? Então, com minha veia de Sherlock ligada, pus mãos à obra num ambiente seguro, claro.


A primeira surpresa: Não funciona no PC? Que truque!

Ao abrir a URL no computador… nada, zero, página fora do ar. “Vaya!”, pensei, “já me adiantaram e derrubaram o site”. Mas algo não batia. Tinha um pressentimento, então tentei entrar pelo celular.

image.webp

image.webp

Bingo! A página funcionava perfeitamente no celular.

Isto já estava ficando interessante. Acontece que estes gênios do mal tinham configurado o site para que, se detectasse que você entrava de um computador, devolvesse um belo erro 404. Mas no celular, o golpe seguia funcionando a todo vapor.

Engenhoso, né? Agora já não era só curiosidade, era um desafio. E não ia parar até descobrir como tinham feito isso.

image.webp

O plano mestre (ou assim eu pensava no início)

O primeiro passo estava claro: simular que meu PC era um celular. Mudei o user agent para me passar por um iPhone e… 404 outra vez. Ok, o jogo começava a ficar sério.

Tentei de tudo: Primeiro scripts simples com Playwright,

const { webkit } = require('playwright');

(async () => {
  const browser = await webkit.launch();
  const context = await browser.newContext({
    viewport: { width: 375, height: 812 },
    userAgent: "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148"
  });
  const page = await context.newPage();
  await page.goto('https://url.com/');
  console.log(await page.content());
  await browser.close();
})();

Mas nada…

Depois com proxies de celular com BrightData, dei uma chance porque tinha um teste gratuito

const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');

// Ativa o modo stealth para evitar detecções de bot
puppeteer.use(StealthPlugin());

(async () => {
  // Configura o proxy com as tuas credenciais
  const PROXY_SERVER = 'https://brd.superproxy.io:9222'; // Endereço do proxy
  const PROXY_USERNAME = '';
  const PROXY_PASSWORD = '';

  // Inicializa o navegador com o proxy configurado
  const browser = await puppeteer.launch({
    headless: false, // Para ver o navegador em ação. Muda para true para ocultá-lo.
    ignoreHTTPSErrors: true,
    args: [
      `--proxy-server=${PROXY_SERVER}`,
      '--no-sandbox',
      '--disable-setuid-sandbox',
      '--disable-dev-shm-usage',
      '--disable-accelerated-2d-canvas',
      '--disable-gpu',
      '--allow-insecure-localhost',    // Permite SSL inseguro em localhost
      '--ignore-certificate-errors',   // Ignora erros de certificados
      '--ignore-certificate-errors-spki-list'  // Ignora HSTS e SPKI
    ]    
  });

  const page = await browser.newPage();

  // Autenticação no proxy
  await page.authenticate({
    username: PROXY_USERNAME,
    password: PROXY_PASSWORD
  });

  // Configura o User-Agent para simular um iPhone
  await page.setUserAgent("Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148");
  await page.setViewport({ width: 375, height: 812 });

  // Navega para a URL desejada
  await page.goto('https://web maliciosa', { waitUntil: 'networkidle0' });

  // Espera uns segundos para que carregue o conteúdo dinâmico
  await new Promise(resolve => setTimeout(resolve, 5000));

  // Obtém o HTML do conteúdo da página
  const content = await page.content();
  console.log(content);

  // Guarda o conteúdo num arquivo HTML para analisá-lo
  const fs = require('fs');
  fs.writeFileSync('abanca-page.html', content);

  // Fecha o navegador
  await browser.close();
})();

E também não funcionou…

Até entrei no BrowserStack para simular uma conexão de um iPhone na nuvem (maldito free tier que não me deixou usar o iPhone!). Nada funcionava. Estes caras tinham feito um trabalho fino.

Já estava quase desistindo quando pensei: E se eu analisar as requisições do meu próprio celular? Bingo. Aí estava a chave.


Capturando o rastro com um proxy (nível espião ativado)

A ideia era simples: utilizar um proxy para interceptar as requisições do meu celular e ver que raios estava acontecendo ali.

Instalei o mitmproxy e configurei no meu iPhone.

Para instalá-lo usei

brew install mitmproxy

e iniciei a sua versão web

mitmweb

Poderia ter feito um script para capturar o site que eu queria, mas não era necessário, com a versão web sobrava.

Para configurar no iphone foi simples, primeiro conectei-me ao proxy desde as configurações do wifi (é importante estar na mesma rede) e depois instalei o próprio certificado ssl do mitmproxy

image.webp

image.webp

Depois de alguns ajustes e de instalar o certificado SSL do mitmproxy no celular, consegui ver todas as requisições que o site fazia.

image.webp

Era como ver um mapa do tesouro! Cada chamada, cada cookie, cada verificação que faziam para confirmar que eu era um usuário “legítimo”. Até descobri vendo os headers que estavam usando Cloudflare para validar o dispositivo móvel com um sistema de CSRF bastante curioso.

O truque? Baseavam-se num challenge para verificar se você era humano e, pelo que vi, também para comprovar se era um celular de verdade.

Aqui deixo um vídeo de como ia capturando as requisições enquanto do celular enviava dados falsos aos atacantes


O contra-ataque: Trolando os golpistas

Com toda a informação na mão, pus mãos à obra para lhes dar uma lição. Utilizei os cookies que tinha capturado e repliquei-os num script para lhes enviar registros falsos, mas válidos, criando assim uma base de dados inútil cheia de dados inventados.

Enviei-lhes:

  • IDs válidos (mas que não existiam)
  • Senhas aleatórias
  • Números de telefone falsos
  • E o melhor de tudo, preenchi um campo onde pediam “quantidade de rendimentos” com números totalmente aleatórios, para que se confundissem calculando o “espólio”.

Resultado? Uma base de dados cheia de registros lixo que, com sorte, lhes terá incomodado bastante.

image.webp

E para que vejam que me comporto bem deixo o código caso tenham curiosidade de ver como eu e meu amigo chatgpt fizemos

GitHub - edunavajas/breaking-malicious-website


Moral da história (e aviso importante)

Conto tudo isto por pura diversão, mas atenção, não recomendo que façam isto em casa. Entrar em sites maliciosos e mexer pode ser muito perigoso, tanto para a vossa segurança como para a vossa legalidade.

Se encontrarem um golpe online, o melhor é denunciar. Aqui deixo um par de links úteis onde eu já denunciei este site:


Reflexão final: Os cibercriminosos também inovam (e nós devemos estar um passo à frente)

A verdade é que foi uma experiência curiosa. Lembrou-me que os golpistas não ficam para trás e estão evoluindo constantemente os seus métodos. Quem diria que bloqueariam o acesso desde PC mas deixariam aberto o celular? Engenhoso, sim, mas não o suficiente.

Isto me deixou claro que, para nos protegermos, temos que nos manter informados e estar sempre um passo à frente.

Espero que a minha aventura vos tenha servido como aviso e, por que não, para dar umas risadas. Já sabem, cuidado aí fora!


PS: Sim, o ChatGPT me ajudou com alguma ideia, mas a diversão foi toda minha. 😜


O que você achou?

Deixe sua opinião, pergunta ou sugestão. Os comentários são sincronizados com GitHub Discussions .

Voltar ao blog