Spam - camouflage

  • Résumé : Spam - technique de camouflage
 
  • 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 - camouflage

 



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



Une technique par fausses balises (dites aussi "balises mal formées")

J'ai reçu ce courrier dont le sujet ne m'inspire pas, ";-Y'ou ca:nt jus_tify th"e situa_tion do*wn below myghzedyslwu" et dont l'adresse e-mail est suspecte "salgado_xa@playsite.de" - rien que le "playsite" déjà me fait jeter ce truc à la poubelle. Normalement je mets ce type de courrier directement à la poubelle sans les lire mais, pour une fois, j'ai regardé (dans la poubelle ou SpamPal l'avait envoyé), avec prudence, volet de visualisation fermé, le code source.

Pour ceux qui ne le savent pas, c'est-à-dire tout le monde sauf les quelques uns qui écrivent des sites (les Webmasters), il faut savoir que la mise en page d'un texte dans une page (Web ou email) utilise le langage HTML. Celui-ci est un langage dit "de balises". Les ordres, dits "balises", sont noyés dans le contenu et se reconnaissent parcequ'ils sont entre crochets, entre "<" et ">". Par exemple :

<b>Ceci est écrit en gras</b> donne l'ordre d'afficher Ceci est écrit en gras. C'est la balise <b> (b comme bold en anglais) qui veut dire "gras" et la balise </b> et dite "balise de fermeture" - elle arrête l'ordre en cours. Donc, si votre navigateur Internet reçoit ceci :



Tout ceci <b>est écrit en gras</b> mais pas le reste



vous verrez, sur votre écran (et sur votre imprimante si vous l'imprimez)

Tout ceci est écrit en gras mais pas le reste.



Normalement, me direz-vous, les interpréteurs du langage HTML devraient ignorer purement et simplement les balises mal formées, les balises qui contiennent un ordre inconnu. C'est, malheureusement, le contraire qui se passe. Microsoft, se rendant compte que l'immense majorité des codes HTML sont mal écrits par les Webmasters, a jonglé avec la norme HTML. Internet Explorer fait « les pieds au mur » pour accepter toutes ces erreurs et les corriger à la volée en tentant de deviner les intentions des Webmasters. Incidemment, ceci à conduit à un laxisme total chez les développeurs et à un affichage différent d’une même page dans les divers navigateurs (Netscape est resté beaucoup plus près de la norme et ne permet pas les erreurs – il est donc préférable de mettre au point un site en le testant avec Netscape ou Mozilla).


Dans les clients de messagerie comme Outlook ou Outlook Express, ce sont les mêmes outils qui sont utilisés pour afficher les messages. C’est là qu’est le piège. Ces outils exploitent les balises mal formées, même s’ils ne savent pas quoi en faire. Les spammeurs se jettent sur cette faille et bourrent les spams le balises mal formées contenant des mots induisant en erreurs les filtres anti-spam dont les filtres bayésiens. Deux astuces des spammeurs sont donc exploitées simultanément :

Ces balises ne sont pas exécutées ni affichées mais les mots qu'elles contiennent sont exploités par certains utilitaires anti-spam peu intelligents et le mot Viagra noyés dans 1000 mots quelconques (improbables ou réels et choisis judicieusement) ne prend pas le même "poids" que s'il apparaît dans un court message de 25 mots.

Ces balises ne sont pas affichées et permettent donc de hacher les mots réels qui ne sont plus reconnus par les filtres à règles ou les filtres bayésiens. "P", "en", "is" sont, pour les filtres, 3 mots sans signification alors que le mot affiché sera "Penis" dont l'occurence aurait provoqué le rejet de l'email par l'outil anti-spam.

Voici le source d'un spam reçu bourré de balises mal formées, complètement improbables et inéxistante :


<html>
<body>
<center>
<font face="verdana" size="+3">T<kfazmqndijqk>he on<klsknvqczjn>ly sol<klxknlgbdghwrx>utio<knzwrcndqates>n t<khurzvhbzrhl>o P<karqqfjbxmx>en<kdotugpbuddq>is E<kuqghomdrdqj>nl<kumfjmydhcbfze>arge<kvnlxricipb>ment</font>

<br><font color="white">znksencheq krvmaxdcgoz</font><br>
<font size="+2" face="arial"><b><font color="#F30101">O<ksqqmkxdcffksi>N<ktugecqcgzfj>LY THI<kthptqmzprorcft>S WE<kkmcqsucjzplexm>EK:</font></b> A<kakgscpxwmg>dd a<kxevtktbshuecqd>t lea<kxmtzuyzgqslbw>st 3 IN<ktlogoibbpgkmp>C<kxydfpwcdnl>HES o<kpydqnbciffxih>r g<ksybvcudspc>et yo<kemcjklbydjiie>ur m<knadqhscspgru>on<kcoyefxdvjkdr>ey ba<klocetmdxufog>c<kfjlvogpstp>k!

<br><font color="white">umcedjeumuk knplcodjatw</font><br>
<table width="600">
<tr>
<td>
<font face="arial">
W<kivqlxebiaqmxi>e ar<ktxvarhbnpbe>e s<kfozftwdbxid>o s<kxmnonfbwjrlxq>ur<kcuvvgxbtxq>e ou<kgmttnqcdwsh>r pr<kpfuecgczqpcp>odu<klptdenolrtrccl>ct wo<kjfgfpptubamwd>rks w<kzrpthciuuetfsv>e ar<kkzhewvdjxfmk>e wil<khpfncabeuqu>li<ketogsqbercvje>ng to pr<kylkxxwdoyvz>ove i<ktmzzrnflpm>t by o<ksdrnlasklhhmo>ffe<kptixdyhymquucs>ri<kgfncxxdtuypnxd>ng a <b>f<kpemqmgbwptdm>ree tr<kgbfvwebzximslb>ia<ktvhkigbvyds>l bot<kimpgrgbcafwbv>tl<kpcofftcnnceid>e</b> + a <kjfxrzzbvbr>1<kfduzvmcpnixs>00<kpqzknhcixmzslc>% <b>mo<kswddwgbnzmy>ney ba<kpzxqzudbbiv>ck g<kxqigkdbzmrym>uar<kfexqktmtqyio>ante<kosstlqbjxojb>e</b> up<kcxhsngbkviqz>on pu<kvavudwdorpj>rc<kymxmkodgyqmf>ha<krwankcbhsnyii>se i<kyjmdjmdrpie>f yo<kktplwibwbmaa>u a<kmtdjxucywresl>re n<ktrxrhvcdmp>ot sat<kdoqmpcsddarb>isfi<kbrzgopcdwpfto>ed wit<kolkepfnjfui>h th<kfnxilocelwuunc>e re<ksuzbgwdtfa>su<kfhwcdkbdwnxim>lt<kmachbyueas>s.

</td>
</tr>
</table>
<p><font face="verdana" size="+2"><b>-<khplenccugh>-<kltcpzlbcwrdiod>-<kuxqdvvbflvw>><kthttovcotynib></b> <A
href="http://yhfntfebrvd@openz.us/vp/?m9n8b7v6">C<kblusjsdngfatr>li<kbrtvmjdebx>ck
H<kaqrkxtbhfahnh>e<ktdmwpvcxyrzeub>r<kimzfaldkkot>e
T<kuihsapcqthfbl>o Lea<krrhlcsdzry>rn M<knyqpohdkmyvbuy>or<kcjrbnpczny>e</a> <b><-<krhzorvudlob>--<kjtusyscfotsaec></b></font>

<br><font color="white">jyhjsbptish rrcygwzauvwqcl</font><br>
<table width="600">
<tr>
<td>
<font face="arial">
T<kyxdxkydncneefg>he<kjavxwaptib>re ar<kcnigpgbfalfpw>e al<kdfocwldqpn>so pe<kaaagolufmwiu>n<kntjmghdsis>is pa<kdwmsgciybd>tch<kuzwouldbxdiv>es a<khjmweuckpdn>vai<keprcavdyxcrju>lab<kjpbbjsvmvnp>le. Si<kwqamdidliog>mp<kjmtadvdsnvin>ly sl<kyzqfprcsthzb>ap th<kzpimpgbrwmbsj>em o<kbksdejcuxirz>n l<kukfiqncnenjoy>ik<kbavqaocjzgkbh>e ni<ksdukmxbppcq>co<kpdziiodpcmppe>tin<kmmdsxiczmgt>e p<klkajhibpzjcyf>at<kfwnsfbqgiewwc>che<kbddavybkxnoo>s, <kiqaoeaktpatwdo>Ju<kffavwocpvvbiac>st l<kzogqvhdjxmlc>ik<kqwtpbacdaatban>e th<knrxwkocqceavvc>e p<koamnddhniazxda>en<kjxlffwbzfjuu>i<knbppalbyik>s e<khitczdookxqzdh>nl<klxdarsbaonjyi>ar<kbsxmplbqagf>gem<kucnuhiavjgw>ent p<kipqpptgogzr>i<kdzllgddringg>ll<kwmtabadlykxpob>s th<kgbwmcsbmxkhy>er<kqknaufbckcqtj>e i<ktwmpprcycxuj>s al<kvuuhisbrykm>s<kzgonvudmxvlksb>o a <b>f<kyyqkhlcvlkvo>r<kpomqlocgeam>ee tr<krrszqrbjebyma>ial mon<kgkmlrdarcsuudn>th</b> + <knbarrwddnjv>a 10<kwckvcncdsg>0<kygqifgcrgsdu>% <b>mo<kjyrpalcqco>ney b<khtkmpjbdsl>ac<kqajqwuxjzzzed>k g<kelxzptcnti>ua<kpmymyfbxum>ran<kpqpmvncgiqlceb>te<khtcjkemkogmrb>e</b> u<kishvqudnthj>p<kdjhmgkbncyz>o<kngxuqycakt>n p<kqslwbtdxkbi>urc<kezjudlbewdee>has<kjxmzhbckakp>e i<kkxexrpdenmwth>f y<kuigyrydzpuuzmv>o<kgjpumadxiqpzi>u a<kejszfbqrucdbd>re no<kckolqdcsorkm>t sa<kozrliozhcto>ti<kbigfdgdchjkyz>sfi<khmquljbncrws>ed w<krkrkzndnyr>ith th<kkhhmrxbuzi>e re<ktyiwdruwauzzdl>s<kxqlnsncdnvobqc>ult<kxxuhopdcnjqdyd>s.

</td>
</tr>
</table>
<p><font face="verdana" size="+2"><b>-<kvbanbjcnptvvxb>-<kjvifkopjuijek>-<kyvdpuidaxb>></b> <A
href="http://ikbnooddqtyisb@openz.us/patch/?m9n8b7v6">Le<kxeybarckoq>ar<ksamzvudlaxedp>n abo<kjolvnpbtnede>ut
t<kxvogshdlfp>his
ex<kosjjuvbspf>citi<kzolisxbgcykxu>ng ne<kruhzegbupiejo>w p<ksqhmzjbmcyhd>rod<kvuoxalbhemma>u<kghtmribcrp>ct<kpbhkkgbpcml>!</a> <b><<klukpvdrwnkz>-<kowwbqtdbafeai>-<kfjuxyfdxvsj>-</b></font>

<br><font color="white">hjmafqbvisux vrpfsqtnfcov</font><br>
<br><font color="white">sumsmybjxpca dsqpfvdexcbw</font><br><p>
<br><font color="white">uqmgtzbfeeqy phwzefvmqgha</font><br>
<font size="-2"><a href="http://xwilqycawm@openz.us/pher/o.html">N<ksyfkxqcobqvm>o
mo<kqlshbsduuzeltd>re of<khrzmcgbmgwwvtd>fe<kgwvuopcdnwhjq>rs</a></font>

</html>





Visualisé en mode "développement" avec un utilitaire d'écriture de sites, on voit mieux les fausses balises tandis que les vraies balises (écriture en gros, en gras, en rouge etc. ...) sont bien interprétées et n'apparaissent pas.





On comprend immédiatement. Les vrais mots sont hachés de telle manière qu'ils puissent échapper aux règles des utilitaires anti-spam primaires car ces règles sont appliquées sur le flux entrant sans chercher à ôter les balises. SpamPal, par exemple, ne se laisse pas avoir et décode d'abord le flux entrant avant de tenter de confronter les mots trouvés à son dictionnaire. Ici, Penis Enlargement fait tomber ce spam sans appel.

Ne touchons à rien et regardons ce spam normalement, comme tout un chacun, voici ce que vous voyez si vous n'êtes pas protégés :







Que faire ?


1/ Tenter de bloquer le spammeur ?
Analysons l'en-tête du spam (avec l'outil de Spam-rbl)

Received: (qmail 10180 invoked from network); 26 Jan 2004 11:23:48 -0000
Received: from acb82d06.ipt.aol.com (HELO deux.fr) (172.184.45.6) by mrelay4-2.free.fr with SMTP; 26 Jan 2004 11:23:48 -0000
IP trouvée : 172.184.45.6 - cette IP est dynamique (dial-up). Les en-têtes suivantes ne sont pas fiables
Fin des champs Received
Résultat des courses :
172.184.45.6 (ACB82D06.ipt.aol.com) est le spammeur (IN) :
Cette IP n'est pas recensée dans notre blacklist.
172.184.45.6 --> ACB82D06.ipt.aol.com --> 172.184.45.6
ACB82D06.ipt.aol.com est validé
Abuse.net donne :abuse@aol.com


Autrement dit, on ne sait rien - adresse bidon ou spoofée (usurpée). Conclusion : on ne sait pas bloquer le spammeur.



2/ Filtrer ?
On l'a vu. Ni les filtres classiques par règles, ni les filtres bayésiens n'y peuvent mais, encore que, dans ce cas, les filtres par règles de SpamPal aient fonctionnés.



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 http://yhfntfebrvd@openz.us/vp/?m9n8b7v6
et de
http://ikbnooddqtyisb@openz.us/patch/?m9n8b7v6

Il est futile de tenter de bloquer ces noms de domaines totalement imbéciles dont on peut en fabriquer des trillions avec nos 26 lettres de l'alphabet, dans une liste hosts - cela va fonctionner une semaine, un mois, puis ce nom de domaine sera abandonné par le commanditaire qui fonctionne sur des opérations "coup de poing publicitaire" d'une semaine, d'un mois, 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.

Quelques recherches (whois et blackhole) permettent de savoir que openz.us est sur la machine 61.143.182.146 (avez vous de la mémoire (si vous avez lu mes fiches dans l'ordre) ? Relisez Une technique de saturation statistique contre les filtres bayésiens - c'est la même machine !) 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.143.182.0 à 61.143.182.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.143.182.146 (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.



Contre-mesure
C'est une solution technique. Le problème vient du fait que les outils anti-spam se placent entre Internet et l'outil de messagerie. L'affichage de la seule partie visible du message, par exécution des "bonnes" balises et élimination des autres est à la charge de l'outil d'affichage (qui est le même que celui du navigateur : c'est Internet Explorer qui se charge d'afficher dans Outlook ou Outlook Express, c'est Mozilla qui se charge d'afficher dans Mozilla-Mail etc. ...). Il faut et il suffit que les outils anti-spam se dotent d'un interpréteur complet du langage, incluant l'interprétation des scripts et capables de chercher les contenus distants, tout en falsifiant les "referer" pour éviter les web bug (comme n'importe quel proxy local de sécurité), exécuté en premier, pour délivrer aux filtres ce que verra le lecteur.




Rédigé en écoutant