Les botnets sont un logiciel fascinant, oui, ils le sont vraiment!
Bien qu’ils soient profondément enfoncés dans la pile « sombre » d’outils répandus utilisés pour perpétrer des cybercrimes, ils brillent vraiment en tant que structures bien conçues. Ils sont obligés d’évoluer constamment en raison de la « course aux armements » actuelle et continue entre les experts en sécurité et les cybercriminels.
Pensez-y une seconde. Un système de réseaux de zombies doit être très résilient, hautement disponible, hautement distribué et permettre la coordination d’un grand nombre de nœuds pour les campagnes criminelles (par exemple, les vagues de pourriels, etc.), le tout avec des réseaux d’ordinateurs infiltrés qui couvrent le monde entier. C’est beaucoup de hauts, en effet.
Passons en revue certains des défis et des aspects « élevés » de l’évolution des réseaux de zombies pour donner une perspective sur les énormes efforts actuellement déployés par les experts en sécurité pour les étudier et les compromettre.
Les réseaux de zombies sont, par nature, très résilients et évasifs. Cela implique que leur structure est conçue pour empêcher tout point de défaillance unique, d’où la topologie/organisation hiérarchique généralement observée dans de tels réseaux. En plus d’utiliser un nombre croissant de nœuds de secours et de multiplier la couche d’indirections pour aider à cacher les nœuds de terminaison principaux (qui hébergent du contenu d’hameçonnage, par exemple), les botnets font beaucoup d’efforts pour essayer de maintenir un lien de communication constant entre les agents bots (les machines infectées) et les nœuds de commandement et de contrôle (C et C). qui sont les cerveaux de ces réseaux.
Une enquête récente [1] qui a aidé à démanteler le botnet Mega-d/Ozdok a révélé des exemples concrets de certaines des nouvelles techniques utilisées pour garantir un canal de communication toujours ouvert entre l’agent bot et ses nœuds centraux C&C. Ce canal est utilisé pour recevoir des commandes et des mises à jour, renvoyer les informations recueillies, etc., et représente la quantité d’efforts déployés pour fournir ses caractéristiques de haute disponibilité.
Un rapport récent sur le botnet Torpig [2] traite également de ses techniques de communication, appelées IP-flux et Domain-flux.
IP-flux vise à s’assurer qu’un nom de domaine complet ne se résout pas en une seule IP mais en un grand nombre d’adresses IP, utilisées de manière tourniquetière avec une courte valeur de Time-To-Live (pour une résolution DNS rapide). Comme indiqué dans The Honeynet Project [3] : « Un navigateur se connectant au même site Web toutes les 3 minutes se connecterait en fait à un ordinateur infecté différent à chaque fois. » Le même article détaille également les stratégies de détection et de contournement des réseaux qui utilisent la méthode du flux IP. Le flux IP facilite non seulement la disponibilité, mais il peut également être un moyen très puissant d’ajouter dynamiquement des capacités d’équilibrage de charge à votre réseau de nœuds distribués, par exemple. Grâce à une inspection minutieuse des performances de nœuds spécifiques (grâce aux capacités de rétroaction des agents bot), certains nœuds peuvent être ajoutés et supprimés du pool d’adresses IP disponibles en fonction de leurs performances ou de tout type de mesure significative. En utilisant cette technique, toute tâche ou algorithme distribué qui peut mettre à jour un pool dynamique de nœuds à la volée est grandement facilité.
Afin d’éviter qu’un seul nom de domaine ne devienne une source unique de défaillance et d’améliorer la résilience des réseaux de zombies contre les efforts de démantèlement, la technique IP-flux a muté en l’approche « Domain-flux ». L’idée est fondamentalement la même, mais au lieu de plusieurs adresses IP, plusieurs noms de domaine sont impliqués. Chaque agent de bot utilise un algorithme déterministe pour créer une liste de noms de domaine à la volée. L’agent tente ensuite de résoudre successivement chaque domaine afin qu’il puisse atteindre les serveurs C&C et/ou même se propager en utilisant la technique drive-by-download. Lorsque vous voyez des noms de domaine comme io7grec9merhpzga.org ou cfe3cd.wvahajol.cn (mentionnés dans le rapport FireEye Malware Intelligence Lab [1]), c’est ce que cela pourrait être!
Il y a cependant un point faible. Comme le mécanisme de génération utilisé pour créer la liste des noms de domaine est assez déterministe, nous pouvons deviner quels seront les futurs noms à l’avance! En utilisant ces informations, nous pouvons essayer d’enregistrer certains d’entre eux avant qu’ils ne soient réellement appelés par l’agent du bot (la liste de tous les noms de domaine possibles ne peut pas être complètement enregistrée par un maître de botnet, principalement pour des raisons économiques, donc il y aura des trous). Une fois que vous avez défini certains noms, les prochaines étapes sont 1) d’attendre le contact, 2) de vous comporter comme si vous étiez un C&C, et 3) « Voilà! », vous avez ensuite infiltré le botnet (ou du moins une partie de celui-ci).
Une mise à jour intéressante récente [4] est que la méthode utilisée pour générer de tels noms de domaine est passée d’un algorithme déterministe basé sur le temps à un algorithme plus aléatoire basé sur Twitter! L’algorithme de génération est maintenant essentiellement divisé en deux étapes : la majeure partie du nom de domaine est d’abord créée selon le même modèle décrit ci-dessus (c’est-à-dire de manière assez déterministe), puis quelques caractères aléatoires y sont ajoutés. Ces caractères sont basés sur les tendances en constante évolution de Twitter. Twitter peut facilement être interrogé pour la liste des sujets à la mode actuels; par conséquent, nous avons facilement accès à un flux pseudo-aléatoire de caractères parmi lesquels quelques-uns peuvent être choisis pour compléter nos noms. Cela empêche essentiellement le type d’efforts décrits ci-dessus, car la partie « deviner les futurs noms de domaine » devient alors beaucoup plus compliquée.
Alors, quelle devrait être notre prochaine étape face à un flot de techniques de logiciels malveillants de plus en plus sophistiquées? À mesure que les choses se complexifient, que peuvent faire des efforts locaux et spécialisés non coordonnés pour y mettre fin?
Lectures et références :
[1] « Smashing the Mega-d/Ozdok botnet in 24 hours », FireEye Malware Intelligence Lab, 2009
[2] « Taking over the Torpig botnet », The Computer Security Group at UCSB, 2009
[3] « Know Your Enemy : Fast-Flux Service Networks », honeynet.org, 2007
[4] « Your Botnet is My Botnet : Analysis of a Botnet Takeover », 2009