cartographier un botnet via Google Maps

Fin Juin, j'ai été amené à piloter la réponse à une attaque en DDoS dont l'un de nos clients était la cible. Dans ce bulletin, je ne détaillerai pas l'attaque en elle-même : Je me focaliserai plutôt sur comment mettre un "nom" ou plus exactement un visage au botnet.

En effet, mis à part des adresses IP, des chiffres en Mbits/s ou paquets/s ou le type de paquets utilisés, la menace reste imprécise, floue... La grande mode étant à la géo-localisation à tout-va, je me suis dit : Et pourquoi pas mettre cela dans une carte GoogleMaps ? Je venais de trouver une occupation pour quelques soirées. :-)

GoogleMap_Geolocalisation-Botnet.png

la phase de collection des données

Il s'agit de collecter la liste des adresses IP à la source des attaques. A priori, cela peut sembler simple mais sous le feu de l'action, il arrive que ce ne soit pas la première des priorités.

Bien évidemment, rien ne sert de collecter des adresses IP si celles-ci sont spoofées/forgées. Pour l'attaque qui nous intéresse, il s'agissait d'un flood HTTP, donc les adresses IP sources identifiées étaient "de qualité".

sources de données

Les sources de données peuvent être multiples : Coté infrastructures clients, des logs d'un firewall ou d'un serveur web peuvent être utilisés. Il faut seulement que la charge induite par la création de ces logs ne vienne aggraver une situation déjà délicate. Des fois, c'est tout simplement impossible car les équipements sont totalement surchargés et ne savent plus rien faire du tout...

Du coté opérateur, la collection d'informations sur l'attaque est peut-être plus aisée du fait de la présence d'équipements spécialisés ou très largement dimensionnés car prévus pour encaisser des charges importantes.

collecte depuis un équipement de filtrage d'attaque

Dans le cas qui nous intéresse, nous avons été amenés à utiliser un système de filtrage temps-réel des attaques (fonction de type "Clean-Pipe") qui permettait, entre-autres, de réaliser des extractions "on-demand". C'est à partir d'un fichier XML généré par ce clean-pipe que j'ai travaillé.

Il aurait aussi été possible de recouper ces informations avec d'autres ou de les compléter, dans le cas présent, cela n'a pas été fait.

API GoogleMaps & librairie de "Clustering"

C'est assez rapidement que les premiers PC zombies ont été posés sur la carte GoogleMaps. Une fois cette première étape franchie, je suis tombé sur un "hic" : Une carte GoogleMaps avec près de 2300 points c'est moche et en plus c'est lent... Je devais donc trouver autre chose.

Après quelques échanges avec Vincent Maurin (vous vous rappelez surement de l'article "vacances j'oublie tout..." ?), celui-ci m'a guidé vers une librairie de clustering dynamique permettant d'agréger de façon dynamique les points. Quelques heures après et cela fonctionnait !

la magie du zoom

Quelques screenshots supplémentaires avec différents niveaux de zoom.

Un zoom sur la zone Europe :

GoogleMap_Geolocalisation-Botnet_zoom1.pngUn petit zoom sur le nord de l'Europe :

GoogleMap_Geolocalisation-Botnet_zoom3.pngUn mapping avec la vue satellite permettrait même d'avoir la maison ou le batiment ou se trouve la machine infectée par le bot. Non, ne pas penser à lancer un missile de croisière sur cette petite maison belge : son propriétaire n'a très surement aucune idée qu'il a pris part à une bataille sur un champ de bataille numérique. ;-)

GoogleMap_Geolocalisation-Botnet_zoom4.png

soulever le capot

Je détaillerai les différentes étapes de construction de ce genre de carte interactives dans un prochain bulletin. Pour les screenshots ci-dessus, ce sont des données réelles qui ont été utilisées : pour des raisons évidentes de confidentialité, j'utiliserai donc des coordonnées géographiques fictives. Mis à part cela, vous aurez tout : les petits scripts en python pour la géo-localisation des adresses IP et le code source javascript.

PS: J'en profite, allez lire cet article "les annuaires d'entreprise du futur - participez à l'enquête en ligne" sur notre autre blog "Orange Business Live".

Jean-François Audenard

Au sein de la direction sécurité du Groupe Orange, je suis en charge de la veille sécurité et de la sensibilisation à la sécurité. Franchise, optimisme et bonne-humeur sont mes moteurs quotidiens