Extensão maliciosa do Twitch rouba tokens OAuth de 30.000 usuários
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Uma extensão maliciosa de navegador chamada Twitch Enhanced Viewer | JeetBot alvo os usuários de Chrome e Firefox para roubar tokens de sessão OAuth do Twitch. A extensão direciona pedidos de rede através de servidores proxy controlados por atacantes e anexa o token de autenticação da vítima como um parâmetro de consulta em texto claro. Isso permite que o operador sequestrar contas do Twitch e potencialmente acesse bate-papos, sussurros e configurações de conta.
Investigação
Pesquisadores da Socket identificaram a extensão em maiores mercados de navegadores e examinaram seu código fonte em JavaScript. A análise mostrou que um script de conteúdo captura o Cabeçalho de Autorização enquanto um trabalhador de fundo o encaminha para uma infraestrutura de proxy controlada por atacantes. Pesquisadores também descobriram uma lista de exclusão codificada de canais de streamers russos, sugerindo um padrão específico de alvo ou preferência operacional.
Mitigação
Os usuários devem imediatamente remover a Twitch Enhanced Viewer | JeetBot extensão e encerrar todas as sessões ativas do Twitch para invalidar tokens potencialmente roubados. As equipes de segurança devem bloquear a infraestrutura maliciosa identificada e monitorar endpoints para extensões de navegador não autorizadas. Os desenvolvedores também devem evitar o roteamento de tráfego autenticado por meio de proxies de terceiros sem antes remover credenciais.
Resposta
Se a extensão maliciosa for detectada, os administradores devem identificar todos os endpoints contendo seus IDs de extensão e isolar as sessões de usuário afetadas. Tokens OAuth associados a contas do Twitch comprometidas devem ser revogados imediatamente. As organizações também devem impor políticas rigorosas de extensões de navegador para prevenir a instalação de complementos de terceiros não aprovados ou de alto risco.
Fluxo de Ataque
Ainda estamos atualizando esta parte.
Detecções
Comando e Controle Suspeito por Solicitação DNS de Domínio de Primeiro Nível (TLD) Incomum (via dns)
Possível Infiltração / Exfiltração de Dados / C2 via Serviços / Ferramentas de Terceiros (via proxy)
Possível Infiltração / Exfiltração de Dados / C2 via Serviços / Ferramentas de Terceiros (via dns)
IOCs (HashSha256) para detectar: Extensão Maliciosa de Navegador do Twitch expõe Tokens OAuth de 30.000 Usuários para Serviço de Bot Russo
IOCs (SourceIP) para detectar: Extensão Maliciosa de Navegador do Twitch expõe Tokens OAuth de 30.000 Usuários para Serviço de Bot Russo
IOCs (DestinationIP) para detectar: Extensão Maliciosa de Navegador do Twitch expõe Tokens OAuth de 30.000 Usuários para Serviço de Bot Russo
Extensão Maliciosa de Navegador do Twitch Expondo Tokens OAuth [Servidor Web]
Execução de Simulação
-
Narrativa & Comandos do Ataque: O adversário conseguiu instalar uma extensão maliciosa de navegador na máquina da vítima. O objetivo principal da extensão é sequestrar sessões do Twitch para obter acesso a recursos premium ou dados do usuário. Para isso, a extensão extrai o token OAuth do usuário do armazenamento local do navegador. Para exfiltrar esse token ou validá-lo através de um proxy, a extensão constrói uma solicitação GET para
usher.ttvnw.net. Ela anexa o token roubado usando o&auth=parâmetro. A simulação acionará um log de evento simulado com oEventID(5678) e o URL malicioso para garantir que a condição da regra de detecção(selection_url AND selection_browser_events) seja atendida.(selection_url AND selection_browser_events) is met. -
Script de Teste de Regressão:
import requests import json import datetime # Parâmetros de Simulação url_alvo = "https://usher.ttvnw.net/api/get_playlist?user_id=12345&auth=STOLEN_OAUTH_TOKEN_XYZ_789" id_evento_simulado = 5678 print(f"[*] Iniciando Simulação: Exfiltração de Extensão Maliciosa do Twitch") print(f"[*] URL Alvo: {url_alvo}") print(f"[*] ID do Evento Simulado: {id_evento_simulado}") # Em um cenário real, o log de proxy é gerado pelo tráfego de rede. # Para simular a entrada de log aparecendo no SIEM para este teste: log_simulado = { "timestamp": datetime.datetime.utcnow().isoformat(), "url": url_alvo, "EventID": id_evento_simulado, "category": "proxy", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36", "action": "allowed" } print(f"[+] Gerando entrada de log simulada para ingestão de SIEM...") print(json.dumps(log_simulado, indent=4)) # Realize a solicitação real para garantir que a telemetria de nível de rede seja gerada try: response = requests.get(url_alvo) print(f"[+] Solicitação enviada. Código de Status: {response.status_code}") except Exception as e: print(f"[-] Solicitação falhou (esperado se o URL for inválido): {e}") print("[*] Simulação Completa.") -
Comandos de Limpeza:
# Nenhuma mudança persistente feita no sistema durante esta simulação. # Se o histórico do navegador foi modificado manualmente, limpe o cache / histórico do navegador. echo "[*] Limpeza completa. Nenhum artefato deixado no host."