Estensione malevola di Twitch ruba token OAuth da 30.000 utenti
Detection stack
- AIDR
- Alert
- ETL
- Query
Sommario
Un’estensione dannosa del browser chiamata Twitch Enhanced Viewer | JeetBot prende di mira gli utenti di Chrome e Firefox per rubare i token di sessione OAuth di Twitch. L’estensione instrada le richieste di rete attraverso server proxy controllati dagli attaccanti e aggiunge il token di autenticazione della vittima come parametro di query in chiaro. Questo consente all’operatore di dirottare gli account Twitch e potenzialmente accedere a chat, sussurri e impostazioni dell’account.
Indagine
I ricercatori di Socket hanno identificato l’estensione nei principali marketplace di browser ed esaminato il suo codice sorgente JavaScript. L’analisi ha mostrato che uno script di contenuto cattura l’intestazione Autorizzazione mentre un lavoratore in background lo inoltra all’infrastruttura proxy controllata dall’attaccante. I ricercatori hanno anche scoperto una allowlist codificata a mano di canali di streamer russi esclusi dall’esfiltrazione dei token, suggerendo un pattern di targeting specifico o una preferenza operativa.
Mitigazione
Gli utenti devono immediatamente rimuovere l’ Twitch Enhanced Viewer | JeetBot estensione e terminare tutte le sessioni attive di Twitch per invalidare i token potenzialmente rubati. I team di sicurezza dovrebbero bloccare l’infrastruttura dannosa identificata e monitorare gli endpoint per estensioni del browser non autorizzate. Gli sviluppatori dovrebbero anche evitare di instradare il traffico autenticato attraverso proxy di terze parti senza prima rimuovere le credenziali.
Risposta
Se l’estensione dannosa viene rilevata, gli amministratori dovrebbero identificare tutti gli endpoint contenenti i suoi ID di estensione e isolare le sessioni utente colpite. I token OAuth associati agli account Twitch compromessi dovrebbero essere revocati immediatamente. Le organizzazioni dovrebbero anche applicare politiche rigorose sulle estensioni del browser per prevenire l’installazione di componenti aggiuntivi di terze parti non approvati o ad alto rischio.
Flusso di Attacco
Stiamo ancora aggiornando questa parte.
Rilevamenti
Comando e controllo sospetto tramite richiesta DNS di Top Level Domain (TLD) insolita (tramite dns)
Possibile infiltrazione/esfiltrazione di dati / C2 tramite servizi/strumenti di terze parti (tramite proxy)
Possibile infiltrazione/esfiltrazione di dati / C2 tramite servizi/strumenti di terze parti (tramite dns)
IOC (HashSha256) per rilevare: Estensione del Browser Twitch Dannosa Espone i Token OAuth di 30.000 Utenti al Servizio Bot Russo
IOC (SourceIP) per rilevare: Estensione del Browser Twitch Dannosa Espone i Token OAuth di 30.000 Utenti al Servizio Bot Russo
IOC (DestinationIP) per rilevare: Estensione del Browser Twitch Dannosa Espone i Token OAuth di 30.000 Utenti al Servizio Bot Russo
Estensione del Browser Twitch Dannosa Espone i Token OAuth [Webserver]
Esecuzione della Simulazione
-
Narrativa dell’Attacco & Comandi: L’avversario ha installato con successo un’estensione dannosa del browser sulla macchina della vittima. L’obiettivo principale dell’estensione è dirottare le sessioni di Twitch per ottenere l’accesso a funzioni premium o ai dati dell’utente. Per fare questo, l’estensione estrae il token OAuth dell’utente dalla memoria locale del browser. Per esfiltrare questo token o convalidarlo tramite proxy, l’estensione costruisce una richiesta GET a
usher.ttvnw.net. Appende il token rubato utilizzando il parametro&auth=. La simulazione attiverà un registro di eventi finto con l’ID eventoEventID(5678) e l’URL dannoso per garantire che la condizione della regola di rilevamento(selection_url AND selection_browser_events) sia soddisfatta.(selection_url AND selection_browser_events) is met. -
Script di Test di Regressione:
import requests import json import datetime # Parametri di Simulazione url_destinazione = "https://usher.ttvnw.net/api/get_playlist?user_id=12345&auth=STOLEN_OAUTH_TOKEN_XYZ_789" mock_event_id = 5678 print(f"[*] Inizio Simulazione: Esfiltrazione Estensione Twitch Dannosa") print(f"[*] URL di destinazione: {url_destinazione}") print(f"[*] Mock ID evento: {mock_event_id}") # In uno scenario reale, il log del proxy è generato dal traffico di rete. # Per simulare l'entrata del log che appare nel SIEM per questo test: simulation_log = { "timestamp": datetime.datetime.utcnow().isoformat(), "url": url_destinazione, "EventID": mock_event_id, "category": "proxy", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36", "action": "allowed" } print(f"[+] Generazione dell'entrata del log simulata per l'ingestione SIEM...") print(json.dumps(simulation_log, indent=4)) # Esegui la richiesta effettiva per garantire che sia generata la telemetria a livello di rete try: response = requests.get(url_destinazione) print(f"[+] Richiesta inviata. Codice di Stato: {response.status_code}") except Exception as e: print(f"[-] Richiesta fallita (questo è previsto se l'URL non è valido): {e}") print("[*] Simulazione Completata.") -
Comandi di Pulizia:
# Nessuna modifica persistente fatta al sistema durante questa simulazione. # Se la cronologia del browser è stata modificata manualmente, cancella cache/storia del browser. echo "[*] Pulizia completata. Nessun artefatto lasciato sull'host."