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. :-)
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 :
Un petit zoom sur le nord de l'Europe :
Un
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. ;-)
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 : Dans le prochain article, j'utiliserai des coordonnées
géographiques fictives pour des raisons évidentes de confidentialit. 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".