Xrumer: les liaisons fatales

Xrumer me casse les pieds

Xrumer est un sacré logiciel qui m’ennuie beaucoup. Il me met une pagaille pas possible dans un forum associatif que je gère, m’obligeant à  valider manuellement les inscriptions, ce qui me donne du travail supplémentaire; du travail de fourmi que j’exècre au plus haut point.

Suite à  mes déboires, je me suis donc penché un peu plus sur ce sinistre logiciel, par la force des choses. C’était il y a quelques mois, au cours duquel j’échangeais régulièrement avec l’un de mes correspondants Estoniens qui m’avait tuyauté sur le botnet Storm.

Mon correspondant, appelons le Piotr, connaissait bien la bête car il l’utilisait fréquemment. Il me l’avait longuement recommandé, mais je ne l’ai jamais acheté, préférant développer à  la main mes machines infernales. Et puis les problèmes avec mon forum m’avaient aussi un peu échaudé.

Un jour où nous échangions, il me dit qu’il a quelques soucis avec le monstre et que, « Nibdon » comme ils disent en Estonien, le site web qui le distribue (www.botmasternet.com) n’est plus accessible et qu’il se retrouve dans la galère, surtout au prix où il a payé sa licence (plus de $500). Un peu amusé par la situation, je me dis que Piotr fait surement parti des spammeurs qui ont inondé mon forum mais, bon prince ou déformation professionnelle, je décide de jeter un œil au problème.

La Russian connection

Le site était hébergé à  l’adresse 95.169.190.220, et ne répondait plus. J’en profite pour lancer quelques tests avec certain de mes outils et je tombe sur les données administratives du réseau. Cette adresse fait partie du réseau 95.169.190.0/23 qui appartient à  un certain Ivan Gladenko de la société Keyweb.de.

Ces messieurs font partie des fournisseurs qui ne sont pas très regardants sur leurs conditions générales d’utilisation. Au programme des clients: spams, faux codecs, arnaque financière (HYIP) et d’autres choses que je préfère taire. De plus en plus intéressé par eux, je vais même jusqu’à  découvrir qu’ils hébergent deux serveurs de contrôle du botnet Zeus !

Bon finalement, c’est tout de même dans la logique des choses que Xrumer soit hébergé plutôt chez ce type de société plutôt qu’au Vatican. Suite à  ce sympathique moment, Piotr me dira que le site a tout simplement été migré chez un autre prestataire et qu’il fonctionne bien désormais.

Un autre prestataire ? Mais qui donc cette fois-ci ? Allons-nous passer de Al Capone à  mère Thérésa ? Jetons un œil si vous le voulez bien.

Le retour de la Russian connection

Tout d’abord, j’apprends qu’il faut faire soit même la résolution DNS, c’est à  dire coder un fichier hosts sur sa machine; pas bien pratique tout cela, mais passons. Voici donc la nouvelle adresse du site de Xrumer: 188.72.244.95.

Cette adresse appartient à  la plage 188.72.244.64 – 188.72.244.127, dirigé par un certain Alexey Terentyev de nkvdteam.ru.

Le Ripe nous apprend que ce bloc d’adresses est en fait routé par la société Netdirekt, récemment rachetée par Leasweb, un gros fournisseur néerlandais. La société Netdirekt a également un très lourd passif en matière de petits ennuis, pour rester courtois.

Tout en bas de la page, vous prêterez une attention toute particulière à  l’un de leur turbulent client Rustelekom qui ressemble étrangement à  la tentaculaire mais néanmoins défunte Russian Business Network.

En clair les concepteurs de Xrumer utilisent les infrastructures « underground » habituelles qui leur permettent de ne pas être trop inquiétés dans leurs petites affaires, mais pas seulement.

L’envers du décor

Il y a environ un mois, je discutais via IRC avec Piotr alors qu’il était en « plein travail » avec Xrumer, et c’est là  que j’ai été pris d’un petit soupçon que j’ai eu envie de vérifier. Je lui ai donc demandé si je pouvais me connecter sur son serveur dédié que je puisse admirer « la bête dans ses œuvres » (Création de 500 liens à  la minute).

Il a accepté mais à  condition que « Nibdon », je ne casse rien parce que c’est quand même de son gagne-pain que nous parlons.
Je me suis donc connecté et à  l’aide de Windump, j’ai discrètement lancé une capture réseau du trafic généré par Xrumer.

La première chose que j’ai trouvé étrange est la grande fréquence de requêtes ICMP envoyées par le serveur. Le protocole ICMP est un protocole de service utilisé par exemple par les commandes ping et traceroute. (tracert sous Windows). On l’utilise normalement pour signaler un problème ou pour véhiculer des messages de contrôle. Dans notre cas, j’ai pu compter jusqu’à  10 requêtes ICMP par minute, ce qui est absolument anormal lors d’une utilisation conventionnelle d’un service réseau. J’ai demandé à  Piotr si l’on pouvait arrêter temporairement Xrumer, et lorsqu’il l’a fait, les requêtes ICMP ont disparu. C’est donc bien ce logiciel qui est à  l’origine de ce type de trafic réseau. A noter que toutes ces requêtes étaient toujours envoyées dans la même direction: une machine hébergée par groatcoats.com (Site web indisponible).

La deuxième chose que j’ai constaté est la taille du paquet ICMP. Alors que celle-ci est généralement de l’ordre de quelques octets, là  le paquet faisait plusieurs kilos-octets, de quoi transporter un certain nombre d’informations. Cela m’a rappelé une expérience que j’avais faite il y a quelques années pour contourner un IDS. L’idée était que comme la plupart du trafic conventionnel (Web, mail, etc.) était étroitement surveillé, il fallait faire preuve de beaucoup de subtilité pour arriver à  faire entrer ou sortir de l’information située au delà  du système de protection d’une entreprise. J’ai trouvé la solution en camouflant des données dans une requête d’apparence complétement anodine: le ping qui fonctionne au moyen de deux paquets ICMP ¨: ECHO_REQUEST et ECHO_REPLY. Outre l’entête traditionnelle (source, destination, type, checksum), ce paquet comporte un « payload » (cargaison) pas franchement normalisée. C’est donc dans cette cargaison que j’ai pu insérer mes informations au nez et à  la barbe de l’IDS grâce à  un petit programme écrit en C.

Pour en revenir avec cette caractéristique de Xrumer, je n’ai pas su décoder le contenu du paquet. Le mystère reste total, mais il y a pour ma part 3 à  4 kilos en trop dans ce type de requête lorsque l’on fait fonctionner Xrumer.

Et la dernière chose qui m’a également semblé bizarre dans mon analyse, c’est le nombre absolument incroyable de connexions TCP sortantes. Faites un test, lancez un blast sous Xrumer, ouvrez une ligne de commande (cmd) et tapez la commande suivante:

netstat -an

La première colonne indique le protocole (tcp ou udp), la seconde est l’adresse IP émettrice, la troisième l’adresse de destination munie de son type d’application (le port dans le cadre de tcp) et la dernière représente l’état de la connexion (à‰tablie, finie, etc.). Vous isolez le trafic Web en repérant les adresses de destination se terminant par :80. Si vous avez plus de 10 connexions simultanées, cela revient à  dire que vous êtes sans doute en train de lancer un DDOS contre une victime !

C’est là  une de mes interrogations: est-ce que Xrumer ne profite pas de ses blasts pour lancer peut-être des attaques simultanées contre des sites Web ? Après tout cela passerait complétement inaperçu: si la machine est chargée, et croyez-moi lors d’un DDOS, elle l’est, après tout cela reste une situation qui semble normale, surtout lorsque l’on crée 500 liens à  la minute.

En conclusion mon analyse ne prouve rien certes, mais la chose qui est certaine c’est que personnellement, je refuserai toujours d’installer ce type de logiciel sur ma propre machine.

Le Botnet Storm

Suite à  l’attaque par mail dont j’ai été la victime, je me suis penché un peu plus en profondeur sur l’inquiétant phénomène Botnet qui est sans nulle doute la pire menace jamais créée sur Internet.

Même si le chiffre me semble ridiculement bas, il existe une bonne dizaine de Botnets clairement identifiés par des « chasseurs » : le Kraken, composé de plus de 400000 machines capable de générer 9 milliards de spams par jour, le Srizbi autrefois responsable de 60% du spam sur Internet, etc.

Parmi tout cela, l’un de ces Botnet a retenu toute mon attention pour le très haut niveau de technicité employé dans son utilisation: il s’agit du Botnet Storm.

Le Storm, encore appelé Storm Worm, de part son étroite relation avec un cheval de Troie du même nom, a été identifié pour la première fois en Janvier 2007. Les médias prétendent que ce Botnet serait composé de 1 à  50 millions de machines, mais les experts estiment que « seulement » 160000 machines forment ce Botnet.

Bien entendu, il est très difficile de déterminer l’origine du Storm: certains pensent qu’il serait contrôlé directement depuis le sol Américain alors que d’autres estiment, qu’à  l’instar de plusieurs de ces « confrères », il serait Russe et même l’œuvre du sinistre Russian Business Network, une occulte organisation cyber-criminelle.

Comme tous les autres Botnet, le but principal du Storm est de générer du spam de nature différente: fichiers PDF ou Excel contenant des images, enregistrement vocal de MP3, texte brut, et email d’hameçonnage (Phishing). Au mois de mars 2008, 20% des spams sur Internet proviendrait du Storm.
Il est également à  noter qu’une partie des machines est exclusivement dédiée à  l’extension du Botnet, en envoyant par mail des chevaux de Troie chargés d’infecter les machines sur Internet.

Outre le spam, le Botnet est également capable de lancer des attaques DDOS contre d’autres groupes et organisations mais aussi en direction de ceux qui le traquent.

Si le Storm est particulier, c’est que son anatomie est différente des autres Botnet. Au fil du temps, ces auteurs semblent s’être durement focalisés sur la survie de leur création, passant d’une organisation relativement simple et classique à  quelque chose de beaucoup plus sophistiquée.

Dans un Botnet rudimentaire, vous trouvez toujours un serveur principal appelé Command and Control (C&C) qui se charge de contacter et de contrôler ces milliers de machines contaminées sur tout le réseau. Pour casser ce type de Botnet, il suffit donc de trouver le C&C et de le désactiver: les machines Zombies sont alors privées de toute commande à  distance et rendues partiellement inoffensives.

Le Storm a une approche foncièrement différente et s’organise en différentes couches. Tout en haut de la pyramide, vous avez un C&C tournant sous Apache, et vraisemblablement placé en Russie, selon les dires des experts. Au niveau inférieur, vous trouvez un proxy Nginx chargé de dissimuler la présence du C&C.
Au troisième niveau, vous trouvez une collection de Nginx qui masque le proxy principal du niveau supérieur. Au quatrième niveau se trouvent les nœuds publiques qui agissent comme des reverse proxies et qui renvoient les communications vers le C&C, agissant comme des serveurs DNS fast flux. La technique du fast flux consiste à  associer un même nom de domaine à  plusieurs IP différentes, et ce rapidement. Finalement, le dernier niveau se compose de milliers de machines serviles, réparties sur tout l’ensemble du réseau.

Le processus d’infection se fait généralement par mail mais peut aussi être déclenché via le réseau P2P. Lorsque la victime a cliqué sur le lien situé dans son mail, le programme va télécharger un fichier exécutable directement depuis un nœud du quatrième niveau. Une fois infectée, la machine compromise et le nœud s’échangent l’adresse IP du nouveau Zombie. L’information est alors envoyée au troisième niveau, puis au second pour finalement parvenir au C&C.

Au deuxième et troisième niveau, les proxies Nginx écoutent le trafic P2P des réseaux Overnet et eDonkey. Overnet est un réseau à  base de table de hachage distribuée (DHT) basé sur l’algorithme Kademlia. Il s’agit du même protocole utilisé par les anciennes versions de eDonkey. Depuis octobre 2007, le Storm a changé son protocole: non seulement il utilise Overnet pour communiquer, mais les dernières versions du programme utilisent désormais leur propre réseau P2P. Ce réseau est quasiment identique à  Overnet si ce n’est que l’information qui y circule y est encryptée.

Pour identifier les nœuds ainsi que le contenu sur le réseau Overnet, l’algorithme DHT utilise une clé linéaire (Généralement 128 bits) . Tous les algorithmes DHT ont leur propre façon de calculer la distance logique entre deux nœuds ou entre un nœud et du contenu distribué.

Kademlia calcule la distance entre les nœuds en effectuant un ou exclusif entre leur hachage publié.
Lorsqu’une machine souhaite trouver du contenu sur le réseau, elle calcule (ou reçoit) le hachage du contenu et recherche des machines adjacentes à  elle même. Ces dernières répondent également en annonçant leurs propres machines adjacentes. Le processus est répété jusqu’à  ce qu’une machine soit à  même de répondre à  la requête de la recherche du contenu.

C’est parce que le réseau Overnet fonctionne sur un modèle de distribution qu’il n’existe aucun annuaire des machines. La liste des machines actives ainsi que le contenu publié sont distribués en petits morceaux directement dans la mémoire de toutes les machines du réseau. C’est toujours l’absence d’annuaire centralisé ainsi que la nature dynamique de ce qui est stocké dans la DHT qui rend le Storm tellement résistant à  son démantèlement.

En conclusion, je dirai qu’à  la vue de tout ce que j’ai pu lire sur le sujet, ce botnet est un véritable chef d’œuvre de technologie au service du mal. Sa complexité et son architecture lui ont valu le privilège d’être le sujet de plusieurs études, voir même de thèses écrites par des chercheurs de haut niveau. Maintenant, loin de moi de vouloir faire l’apologie du cybercrime, on ne peut que rester perplexe devant un tel déchainement de recherches techniques, de réflexions et d’efforts, surtout pour de si noirs desseins.