Spam - camouflage 1
  • Résumé : Spam - exemple de camouflage d'un courrier aux yeux des filtres anti-spam
 
  • Mots-clés : spam, e-mail, email, courrier électronique, courrier électronique non-sollicité, courriers électroniques non-sollicités, courriel, pourriel, spamming, mail, mail bombing, junk e-mail, junk email, junk mail, scam, script kiddy, script-kiddie, script-kiddies, spammer, spammers, spammeur, spammeurs


Spam - exemple de camouflage 1
 



Spam - exemple de camouflage 1
Pierre Pinard© (01..03.2004 - révision 1)



Une technique d'aveuglement des filtres

J'ai reçu un courrier sans sujet et d'un expéditeur sur une adresse poubelle (une adresse hotmail). Normalement je mets ce type de courrier directement à la poubelle sans le lire mais, pour une fois, j'ai regardé, avec prudence, volet de visualisation fermé, le code source. Voici le corps intégral du message :



<html><body bgcolor=#FFFFFF text=#000000><p><font color=#FF0000><b><a href=http://err44dd.com/as/><font color=#ffffff>adieu</font>We<font color=#ffffff>boxcar</font> D0<font color=#ffffff>microphones</font> What<font color=#ffffff>seasoners</font>V1agra<font color=#ffffff>midwest</font> Can't</a></b></font><a href=http://err44dd.com/as/></a></body></html>




C'est de l'html, le langage de mise en page du Web. Toutes les pages que vous regardez sont écrites ainsi. Je copie ce code dans mon outil de création de sites Internet et demande une pré-visualisation (mode "création" de Dreamweaver, mode "mise en page" de Golive). C'est une phase sans risque même s'il y a un piège. Voici ce que cela donne :
adieuWeboxcar D0microphones WhatseasonersV1agramidwest Can't


Evidemment, le 1 à la place du i dans le mot V1agra peut paraître un premier camouflage. C'en est un mais ce n'est pas l'objet de cet étude. Vous pouvez toujours créer une règle pour envoyer directement à la poubelle (ou ne pas relever du tout selon votre outil de messagerie) les courriers contenant les mots viagra et v1agra, dans le cas présent cela ne fonctionnera pas. Pourquoi ? Parce que ce qui apparaît être des espaces entre les mots affichés est, en réalité, du texte écrit en blanc sur fond blanc. Ce texte n'est pas constitué de mots blancs ou d'espaces intercalés entre les mots apparents. Le message est constitué de mots totalement improbables dont certaines parties sont écrites en blanc sur fond blanc. Si on retire les ordres de code de couleur, on obtient:
adieuWeboxcar D0microphones WhatseasonersV1agramidwest Can't

Il n'y a aucune chance pour trouver un dictionnaire avec les mots :
  • adieuWeboxcar
  • D0microphones
  • WhatseasonersV1agramidwest

Et il est inutile de créer des règles sur ces mots improbables, ils ne sont utilisés qu'une fois et d'autres les remplacent à chaque nouveau spam.

Nota : une règle portant sur la prononciabilité des mots serait, ici, impuissante. Phonétiquement parlant, ces mots sont prononçables. Ces règles existent et sont déjà utilisées dans des outils anti-spam comme SpamPal.



Que faire ?
  1. Axes de recherches technique

    1. Ecrire une règle.
      Une règle de recherche partielle sur des chaînes de caractères et non pas sur des mots entiers, fonctionnerait mais il nous faut écrire, dans cette règle, au moins, toutes les combinaisons possibles du mot "viagra" en introduisant dedans une faute portant sur un de ses caractères. Par exemple :

      V agra V0agra V1agra V2agra V3agra V4agra V5agra V6agra V7agra V8agra V9agra Vaagra Vbagra Vcagra Vdagra Veagra Vfagra Vgagra Vhagra Vjagra Vkagra Vlagra Vmagra Vnagra Voagra Vpagra Vqagra Vragra Vsagra Vtagra Vuagra Vvagra Vwagra Vxagra Vyagra Vzagra V&agra Véagra V"agra V'agra V(agra V-agra Vèagra V_agra Vçagra Vàagra V)agra V=agra V^agra V$agra Vùagra V*agra V,agra V;agra V:agra V!agra V?agra V.agra V/agra V§agra V%agra Vµagra V¨agra V£agra V~agra V#agra V{agra V[agra V|agra V`agra V\agra V^agra V@agra V]agra V}agra V<agra V>agra etc. etc. etc. ... ce qui nous fait 77 combinaisons * 6 (mot de 6 lettres) soit 462 combinaisons !

      Malheureusement, nous avons un cerveau capable de lire, de nos petits yeux, n'importe laquelle de ces 462 combinaisons et de corriger mentalement. Nous lisons bien "viagra" chaque fois. Donc les spammeurs peuvent jouer à ce petit jeu avec tous les mots que nous voudrions banir et, sur un mot un peu plus long, introduire 2 fautes, soit un nombre monumental de combinaisons, cela serait également corrigé en temps réel par notre cerveau.

      Ensuite, ils peuvent combiner cette technique avec celle consistant à espacer les lettres (à introduire un espace entre chaque lettre). Là aussi notre cerveau corrige en temps réel mais les règles de nos puissants ordinateurs sont larguées. Lorsque vous voyez tout naturellement "viagra" dans "v 1 a g r a", les règles de nos logiciels ne voient rien.

      Le "jeu" peut être ainsi poursuivi avec "v 1 a g r a" (2 espaces). Le cerveau voit toujours "viagra".

      Egalement "v 1 a g r a" (nombre d'espaces aléatoire entre les lettres). Le cerveau voit toujours "viagra".

      Comme dirait Gaston :


      © Greg et Dargaud Editeur
      Ach!lle Talon fait son ménage

      Cette technique de contournement par les spammeurs est donc difficilement parable par des règles.

      + Aucun risque de faux positif
      + Recherche de chaines de caractères à l'intérieur de mots improbables.
      - Immensité du thésaurus de règles avec les méthodes actuelles d'écriture des règles dans les clients de messagerie, par l'utilisateur lui-même. Ceci peut être réduit à un unique algorithme universel générant à la volée toutes les combinaisons possibles à partir de chaque mot racine. Le lexique de mots racines serait rendu totalement portable d'un éditeur à un autre, d'un utilisateur à un autre et serait ouvert à l'édition (ajout/modification/suppression d'entrées) par l'utilisateur.
      - Ecriture obligatoire en langage de bas niveau (assembleur) sinon écroulement du temps calcul.

    2. Dictionnaire orthographique.
      On pourait penser introduire dans les outils anti-spam, un outil similaire aux correcteurs orthographiques trouvés dans les traitements de textes. Ces correcteurs sont capables de détecter une faute probable de frappe et suggérer un mot de remplacement. Il faut réduire le thésaurus (le lexique de mots) de cet outil aux mots cibles afin d'éliminer le plus possible le risque de trouver plusieurs mots probables en remplacement du mot masqué et il faut étendre ce lexique à toutes les langues simultanément.

      + Possibilités d'aller beaucoup plus loin que l'algorithme de règles à la volée vu ci-dessus, en particulier en recherchant dans le thésaurus en mode phonétique.
      + Réduction du "doute" (choix multiple - comment déterminer automatiquement le remplaçant le plus probable) en réduisant le thésaurus.
      - Effets de bord en recherche phonétique ?
      - Doit être précédé d'une apuration des chaînes de caractères (espaces, signes spéciaux...) afin de ne soumettre au dictionnaire que des chaînes de caractères probables.
      - Si le mot est une chaîne de caractères visibles noyés dans un mot réel (ou improbable) long dont les autres caractères sont invisibles, le temps calcul peut devenir rédhibitoire.
      - Si ne serais-ce qu'une lettre est représentée par une image au lieu d'un caractère, la méthode devient quasi inaplicable.

  2. Mesures défensives

    1. Filtrer ?
      On l'a vu. Ni les filtres classiques par règles, ni les filtres bayésiens n'y peuvent mais en l'état actuel des technologies.

  3. Mesures de rétortion.

    1. Tenter de bloquer le spammeur ?
      Analysons l'en-tête (le "header") du spam, c'est-à-dire la partie non visible, normalement, d'un courrier électronique (Comment la voir ?).

      Ne cherchons pas à l'analyser nous-mêmes, exploitons un outil pour ce faire en allant sur Spam-rbl et en lui passant, par copier / coller, cette entête. Voici ce que l'outil nous répond :

      Received: (qmail 945 invoked from network); 7 Dec 2003 11:18:25 -0000
      Received: from unknown (HELO comms-server.Airline-Rotables.com.local) (213.121.241.98) by mrelay5-2.free.fr with SMTP; 7 Dec 2003 11:18:25 -0000
      IP trouvée : 213.121.241.98 - cette IP est connue comme non-sécurisée. Les en-têtes suivantes ne sont pas fiables
      Received: from satchels ([218.14.200.69]) by comms-server.Airline-Rotables.com.local with Microsoft SMTPSVC(5.0.2195.6713); Sun, 7 Dec 2003 11:18:42 +0000
      Le 'by comms-server.Airline-Rotables.com.local' ne permet pas de déterminer une IP. On considère la chaine cassée !
      IP trouvée : 218.14.200.69 - cette IP est un open-proxy/relay. Les en-têtes suivantes ne sont pas fiables
      Fin des champs Received
      Résultat des courses :
      213.121.241.98 est le spammeur (IN) :
      Cette IP n'est pas recensée dans notre blacklist.
      Il n'y a pas de reverse associé.
      On a trouvé des emails associés à 213.121.241.98 :abuse@bt.net

      Conclusion : Nous n'obtenons aucun résultat. Le spammeur utilise des open-relay (des proxy d'anonymisation).

    2. Bloquer les open/relays.
      Les listes d'adresses IPs des proxy d'anonymisation existent (la XBL de SpamHaus par exemple) mais, curieusement, actuellement elle ne sont pas publiques et ma demande de communication est restée sans réponse. Ces listes sont réservées aux serveurs de mail hors très peu d'ISP (de FAI) les utilisent - ils sont déjà timides voire réticents à l'idée de bloquer du courrier au nom de la sacro-sainte raison "de quel droit ouvrirais-je un courrier, fusse par robot interposé, pour juger de son contenu?". Pourtant, bloquer les open/relays conduit à bloquer la quasi-totalité du spam de toutes natures.

    3. Bloquer le commanditaire
      On en revient à mon leitmotiv. La seule information fiable et, pour cause, véridique, que nous ayons, est le bénéficiaire du spam soit l'hyper lien codé dans le corps du spam : ici, il s'agit de hxxp://err44dd.com/as/

    4. Bloquer le commenditaire dans les listes hosts.
      Il est futile de tenter de bloquer le domaine err44dd.com dans une liste hosts car ceci manque de dynamisme, même si nous travaillons, à Assiste.com, à un script qui rendrait notre liste publique, dynamique et facile d'accès.

      Les listes hosts - cela va fonctionner une semaine, 15 jours, puis ce nom de domaine sera abandonné par le commanditaire qui fonctionne sur des opérations "coup de poing publicitaire" d'une semaine à 15 jours, et change de nom de domaine. Il en a probablement déjà des centaines enregistrés chez un registrar complice, voire il est lui-même un registrar dans une des sociétés de son conglomérat opaque. Il est préférable d'utiliser des listes de blocages dynamiques. L'introduction d'un nom de domaine dans la liste hosts d'un site de sécurité qui met sa liste en téléchargement ne se propage pas asssez vite.

    5. Bloquer le commenditaire dans des listes dynamiques
      Le principe est le même que hosts mais à un niveau centralisé donc la propagation est rapide. Les outils anti-spam "modernes", comme SpamPal, peuvent et savent interroger ces listes.

      Ces listes peuvent être des listes de noms de domaine (DNSBL - Domain Name Server Blocking List) ou des listes d'intervales d'adresses IPs (XBL, RBL).

      Reprenons notre exemple : quelques recherches permettent de savoir que ce site est hébergé sur la machine 61.234.218.192. Par contre il ne m'a pas été possible de savoir dans quel intervalle d'adresses IPs est cette machine. J'obtiens, dans le meilleure des cas, la totalité des machines d'Asie (intervalle APNIC 61.0.0.0 à 61.255.255.255 soit 16.777.126 machines !) Des NSLookUp des machines précédentes et suivantes (de 61.234.218.0 à 61.234.218.255) ne donnent rien.

      Si le nom de domaine n'est pas une donnée stable dans le temps, l'adresse de la machine l'est. En bloquant toute communication avec 61.234.218.192 (règles dans les firewall) on bloque le commanditaire, ses autres sites hébergés sur la même machine, ses futurs projets de spam et donc on bloque son économie financière. En appuyant là ou ça fait mal, on bloque le système car le commanditaire ne passera plus de commandes d'opérations de spam à des spammeurs qui, eux aussi, dans la foulée, s'écroulent. Cette démarche a un effet immédiat et définitif sur le commanditaire et un effet boomerang légèrement différé sur le principe même du spam.

      Cette démarche est agressive et consiste à créer un climat de peur chez ces e-commerçants mafieux. L'internaute n'est plus une victime, il est une arme.

      Nota : dans le cas présent il est pratiquement certains que vous n'avez rien à faire avec le monde asiatique et leurs sites, mafieux ou non. Il est donc utile de bloquer tout l'intervalle Asie, ce que permettent déjà certains utilitaires anti-spam comme SpamPal. Ajoutez une règle bloquant 61.0.0.0 à 61.255.255.255 dans votre firewall.




Rédigé en écoutant