vendredi 29 mars 2013

La Chine ratisse large

La Chine est la source de balayages sytématiques de ports, une méthode employée pour repérer les machines vulnérables et les utiliser à l'occasion. C'est ce que montre l'analyse des tentatives de connexion sur un serveur ordinaire. La méthode pour tirer cette information de données brutes est expliquée ici.

Mettre en ligne un serveur sur internet et examiner les journaux du pare-feu (le filtre qui arrête les connexions indésirables) procure un certain plaisir, une forme d'émerveillement qui tiendrait de l'excitation du chercheur penché sur sa boîte de Pétri. On y voit un bouillonnement fait des bavardages de machines mal configurées, d'erreurs diverses et d'attaques automatiques lancées par des armées de machines zombies ou des bots d'info-guerre.
La difficulté est de faire parler ces données et d'en extraire une information moins brute que les millions de signes qui la composent.

Feb 21 10:41:33 errai ipmon[145]: 10:41:33.330374 sn0 @0:2 b 125-224-200-153.dynamic.hinet.net[125.224.200.153],ftrapid-1 -> errai.mentrek.org[192.168.0.5],http-alt PR tcp len 20 48 -S IN
Feb 21 10:53:33 errai ipmon[145]: 10:53:32.381675 sn0 @0:2 b teamtv.ser.netvision.net.il[212.143.105.84],mdtp -> errai.mentrek.org[192.168.0.5],ms-wbt-server PR tcp len 20 48 -S IN
Feb 21 10:53:35 errai ipmon[145]: 10:53:35.418402 sn0 @0:2 b teamtv.ser.netvision.net.il[212.143.105.84],mdtp -> errai.mentrek.org[192.168.0.5],ms-wbt-server PR tcp len 20 48 -S IN
Feb 21 11:39:26 errai ipmon[145]: 11:39:26.163474 sn0 @0:2 b 193.142.62.156,60479 -> errai.mentrek.org[192.168.0.5],https PR tcp len 20 40 -S IN
...


Pour ce faire, on va recourir dans un premier temps à la ligne de commande Unix qui offre une palette d'outils de manipulation de texte ainsi qu'un langage de programmation élaboré mais accessible. Le but de cette étape sera d'élaguer le texte du journal et de créer un tableau contenant les élements suivants: la date et l'heure, l'IP d'origine, le port de destination.

Un premier élagage du fichier brut est réalisé avec la commande unix "cut".

cut -d " " -f1-3,10,14 donnees_brutes.txt |  unexpand -a - > fichier2

L'option -d " " signifie que l'espace est le caractère délimiteur et -f indique les colonnes que l'on veut extraire, désignées par leur numéro d'ordre ou par intervalle. Ici, on a les colonnes de 1 à 3, la 10ème et la 14 ème. Le résultat est chaîné avec la commande unexpand qui substitue tous les espaces du fichier par des tabulations. Le résultat est envoyé vers un nouveau fichier, avec l'opérateur >.

On nettoie ensuite le nouveau texte des divers motifs indésirables. Dans notre cas, on va effacer les adresses IP entre crochets qui suivent les noms de domaine, en passant le fichier à la moulinette des expressions rationnelles.

cat fichier2 | sed 's/\[.*\]//' > fichier3

La raison est que l'on souhaite passer les noms de domaines à la commande geoiplookup, qui renvoie le pays d'origine. La ligne suivant extrait l'information "nom de domaine", l'envoie à geoiplookup et passe le résultat à paste qui assemble les informations dans un nouveau fichier.

for i in `cut fichier3 -f2` ; do geoiplookup $i | head -n 1 ; done | paste - fichier3 > fichier4

Le résultat est un beau texte avec des champs biens séparés par des tabulations, prêt à être importé dans un tableur. Dans Gnumeric, on peut finir de mettre en forme ce tableau, notamment avec les tris.
Pour faire apparaître d'où viennent les tentatives de connexion, on crée un graphique à partir des colonnes des pays et du nombre de connexions.

Le camenbert fait apparaître que les deux tiers du trafic non désiré proviennent de quatre pays : Chine, France, Fédération de Russie, Etats-Unis. On a, presque au complet, le conseil permanent de sécurité des Nations-Unies. Les autres sont extrêmement discrets, y compris des pays peuplés et riches comme l'Allemagne ou le Royaume-Uni.
La carte obtenue avec Google Fusion Tables souligne cette concentration de l'origine du trafic tandis que les autres sources sont assez également réparties dans le monde. Comme l'échantillon est assez faible, certains pays ne sont pas représentés.
De retour dans Gnumeric, on peut créer une autre table de fréquences pour les ports.
 Ce bagel coloré montre l'importance des connexions sur le port 445 (microsoft-ds). Elles proviennent sans doute de machines Windows mal configurées ou infectées par des vers essayant de se propager.
Telnet est un ancien protocole d'accès distant sur des machines Unix. Il a été le plus souvent remplacé par SSH, en général beaucoup plus sûr, et ne devrait pas montrer autant d'activité. Peut-être que des pirates comptent sur le fait qu'il a été installé par mégarde ou oublié sur un vieux serveur.
MS-wbt-server est le port tcp 3389, porte d'entrée pour le service d'accès à distance sur Windows (Terminal Server). Des failles permettant un accès non autorisé sont régulièrement constatées. Les pirates cherchent les machines où Terminal Server n'a pas été mis à jour.
VNC-Server est un logiciel équivalent qui fonctionne sur Windows et Linux.
Epmap est un autre service lié à Windows.
MS-Sql ou MySQL sont des serveurs de bases de données où l'on recense régulièrement des vulnérabilités à des attaques dites d'injection SQL, lesquelles ouvrent souvent un accès total à la machine.
Les ports indiqués par des numéros ne sont pas alloués à un service particulier. Ils peuvent être utilisés par n'importe quel logiciel ou peut-être des botnets.

Enfin, il est intéressant de rechercher quel pays émet quoi. Avec Gnuméric, on réalise une table de fréquences qui donne le nombre d'attaques d'un type donné attribuable à chaque pays.
Le résultat est assez intéressant.
Chaque pays présente comme une signature. De France viennent des tentatives de connexions presque exclusivement concentrées sur le protocole CIFS de partage de fichiers Windows. C'est la grand pointe qui domine toutes les autres. A voir les logs, il s'agit de particuliers abonnés à Free. Sans doute des machines Windows infectées par un ver.
De la Fédération de Russie (souvent d'Ukraine en fait), on a un trafic important sur les ports élevés, peut-être utilisés par des botnets.
Les USA envoient beaucoup d'attaques sur Windows (epmap, microsoft-ds) et sip, un protocole d'établissement de connexions de voix sur IP.
Quant à la Chine, elle ratisse large. Les tentatives de connexion nombreuses visent la plupart des ports de l'intervalle de façon assez égale. Ca ressemble beaucoup à un balayage systématique de ports, pour repérer des machines vulnérables. Impression corroborée par le fait que de nombreuses tentatives proviennent de la même adresse IP (58.218.199.250) avec le port source 12200.
Pour un cracker, même un PC de particulier est intéressant dès lors qu'il lui fournit une plate-forme d'observation et de lancement de nouvelles attaques.