Contexte de l'attaque

Le vendredi 2 octobre 2023, 333 nœuds de sortie du réseau Tor ont été compromis simultanément. Sur les ~3000 nœuds de sortie existants, cela représente environ 10 % du trafic sortant. Les attaquants, déjà présents depuis août, ont déployé le payload Ebury 1.8.3, un cheval‑de‑troie OpenSSH capable de voler des identifiants et d’injecter du code sur les serveurs Linux.

Mécanisme d'interception SSH

Le scénario visait deux objectifs : collecter le trafic mail non chiffré et réaliser un MITM sur les connexions SSH. En bloquant certains ports, les nœuds infectés ne traitaient que le trafic mail, tandis que les requêtes SSH vers le port 22 étaient redirigées vers 12 serveurs d’interception. Lorsqu’un client recevait l’avertissement « REMOTE HOST IDENTIFICATION HAS CHANGED », il pouvait néanmoins poursuivre la connexion. L’attaquant volait alors le mot de passe, observait chaque commande et installait Ebury sur la cible.

echo "U=$(id -u) S=$(command -v sudo >/dev/null 2>&1 && (sudo -n true 2>/dev/null && echo nopass || echo maybe) || echo none)"
sudo bash -c 'echo  | base64 -d | perl'

Détection et neutralisation

Le chercheur a utilisé exitmap pour interroger chaque nœud de sortie. Le script pinait un nœud, ouvrait une connexion SSH entre deux serveurs de test et comparait l’empreinte ED25519 reçue. Une douzaine de nœuds renvoyaient une empreinte factice, tandis que plus de 300 redirigeaient vers les serveurs d’interception, ce qui suffisait à les qualifier d’infectés. Un honeypot basé sur ssh​esame a confirmé l’usage de la bibliothèque Python paramiko et d’un script Perl décodé en base64.

Analyse des impacts

Le 4 octobre, l’équipe « Network Health » du projet Tor a marqué les 333 nœuds comme BadExit, les excluant du routage. Le même jour, les métriques de metrics.torproject.org montrent une chute nette du nombre d’exits, qui ne s’est pas encore rétablie. Le 5 octobre, les opérateurs ont arrêté les relais restants ; les attaquants ont tenté de les relancer en tant que nœuds intermédiaires, mais le marquage BadExit a limité leur rôle. Cette réponse rapide a limité la période d’exposition à moins de 48 heures.