Une Extension Malveillante Twitch Vole des Jetons OAuth à 30 000 Utilisateurs
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Une extension de navigateur malveillante appelée Twitch Enhanced Viewer | JeetBot cible les utilisateurs de Chrome et Firefox pour voler les jetons de session OAuth de Twitch. L’extension redirige les requêtes réseau via des serveurs proxy contrôlés par les attaquants et ajoute le jeton d’authentification de la victime en tant que paramètre de requête en texte clair. Cela permet à l’opérateur de détourner les comptes Twitch et potentiellement accéder aux chats, chuchotements et paramètres de compte.
Enquête
Les chercheurs de Socket ont identifié l’extension sur les principales places de marché des navigateurs et examiné son code source JavaScript. L’analyse a montré qu’un script de contenu capture l’en-tête Authorization tandis qu’un travailleur en arrière-plan le transmet à une infrastructure proxy contrôlée par les attaquants. Les chercheurs ont également découvert une liste d’exclusion codée en dur de chaînes de streamers russes exclues de l’exfiltration de jetons, suggérant un schéma de ciblage spécifique ou une préférence opérationnelle.
Atténuation
Les utilisateurs doivent immédiatement supprimer l’ Twitch Enhanced Viewer | JeetBot extension et terminer toutes les sessions Twitch actives pour invalider les jetons potentiellement volés. Les équipes de sécurité doivent bloquer l’infrastructure malveillante identifiée et surveiller les points d’extrémité pour détecter les extensions de navigateur non autorisées. Les développeurs ne doivent pas non plus diriger le trafic authentifié via des proxies tiers sans d’abord supprimer les identifiants.
Réponse
Si l’extension malveillante est détectée, les administrateurs doivent identifier tous les points d’extrémité contenant ses ID d’extension et isoler les sessions utilisateur affectées. Les jetons OAuth associés aux comptes Twitch compromis doivent être révoqués immédiatement. Les organisations doivent également appliquer des politiques strictes sur les extensions de navigateur pour empêcher l’installation d’add-ons tiers non approuvés ou à haut risque.
Flux d’attaque
Nous mettons encore à jour cette partie.
Détections
Commande et contrôle suspect par une requête DNS de domaine de premier niveau (TLD) inhabituel (via dns)
Infiltration/Exfiltration de données possible / C2 via des services/ outils tiers (via proxy)
Infiltration/Exfiltration de données possible / C2 via des services/ outils tiers (via dns)
IOC (HashSha256) pour détecter : Extension de navigateur Twitch malveillante expose les jetons OAuth de 30 000 utilisateurs à un service de bot russe
IOC (SourceIP) pour détecter : Extension de navigateur Twitch malveillante expose les jetons OAuth de 30 000 utilisateurs à un service de bot russe
IOC (DestinationIP) pour détecter : Extension de navigateur Twitch malveillante expose les jetons OAuth de 30 000 utilisateurs à un service de bot russe
Extension de navigateur Twitch malveillante expose les jetons OAuth [Serveur web]
Exécution de simulation
-
Narration et commandes d’attaque: L’attaquant a réussi à installer une extension de navigateur malveillante sur la machine de la victime. L’objectif principal de l’extension est de détourner les sessions Twitch pour accéder à des fonctionnalités premium ou à des données utilisateur. Pour ce faire, l’extension scrute le jeton OAuth de l’utilisateur à partir du stockage local du navigateur. Pour exfiltrer ce jeton ou le valider via un proxy, l’extension construit une requête GET vers
usher.ttvnw.net. Il ajoute le jeton volé à l’aide du paramètre&auth=. La simulation déclenchera un journal d’événements simulé avec l’EventID(5678) et l’URL malveillante pour garantir que la condition de la règle de détection(selection_url AND selection_browser_events) soit remplie.(selection_url AND selection_browser_events) is met. -
Script de test de régression:
import requests import json import datetime # Paramètres de simulation url_cible = "https://usher.ttvnw.net/api/get_playlist?user_id=12345&auth=STOLEN_OAUTH_TOKEN_XYZ_789" mock_event_id = 5678 print(f"[*] Démarrage de la simulation : Exfiltration d'extension Twitch malveillante") print(f"[*] URL Cible : {url_cible}") print(f"[*] Mock Event ID : {mock_event_id}") # Dans un scénario réel, le journal du proxy est généré par le trafic réseau. # Pour simuler l'entrée de journal apparaissant dans le SIEM pour ce test : log_simulation = { "timestamp": datetime.datetime.utcnow().isoformat(), "url": url_cible, "EventID": mock_event_id, "catégorie": "proxy", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36", "action": "autorisée" } print(f"[+] Génération de l'entrée de journal simulée pour l'ingestion SIEM...") print(json.dumps(log_simulation, indent=4)) # Effectuez la requête réelle pour garantir que la télémétrie au niveau réseau est générée try: response = requests.get(url_cible) print(f"[+] Requête envoyée. Code statut : {response.status_code}") except Exception as e: print(f"[-] Échec de la requête (ceci est attendu si l'URL est invalide) : {e}") print("[*] Simulation Terminée.") -
Commandes de nettoyage:
# Aucune modification persistante n'a été apportée au système lors de cette simulation. # Si l'historique du navigateur a été modifié manuellement, videz le cache/historique du navigateur. echo "[*] Nettoyage terminé. Aucun artefact laissé sur l'hôte."