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. :-)
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 :
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".