0) Inleiding Foto van Spam Spiced Pork and haM = spam Dit is niet het soort spam waar we het vanavond over gaan hebben. We gaan het hebben over Unsollicited Commercial E-mail (UCE) In de C'T van April 2003 stond een verhaal over de producten SpamPal en SpamAssassin. Ik gebruik SpamAssassin al een hele tijd op mijn Linux machines. Het artikel uit de C'T bespreekt alleen windows machines. 1) Hoe werkt mail a) smtp b) pop3 c) proxy 2) Hoe werkt spam a) open relay / spam haven / spam hause b) adressen oogsten homepage newsgroepen websites gokken c) confirmed opt-in 3) Hoe hou je spam tegen a) Realtime Block List (RBL) b) (Bayesian) filtering 4) Tools a) SpamPal b) SpamAssassin 1 Hoe werkt mail De PC thuis heeft verbinding met 2 verschillende servers van de provider. Een server wordt gebruikt om mail te verzenden. Dit is de SMTP-server. De verschillende mailclients, zoals Netscape en Outlook gebruiken het woord SMTP-server om deze server mee aan te geven. Binnenkomende mail moet je zelf ophalen bij je provider. Dat kan op verschillende manieren. Een heel gebruikelijke manier is pop3. Jouw provider zal je vertellen welke manier je moet gebruiken. Netscape noemt dat het servertype. De provider moet ook vertellen welke naam de POP-server heeft. Een mailtje wat van mij naar jou gaat, zal de volgende weg afleggen: Mijn machine stuurt het naar de SMTP server van mijn Internet Service Provider. Mijn ISP stuurt het naar jouw ISP. Daarbij wordt datzelfde SMTP gebruikt. Op basis van dat wat achter het apestaartje staat, weet mijn ISP welke machine van jouw ISP gebruikt om mail van buiten te verwerken. Jouw ISP zorgt er op een of andere manier voor dat zijn POP-server bij dat mailtje kan komen. Bijvoorbeeld omdat het dezelfde machine is die mail van buiten ontvangt, of omdat beide machines dezelfde shares gekoppeld hebben. Jij belt in bij je ISP en haalt het mailtje op met POP3. Wat ik zonet vertelt heb, is de normale gang van zaken. Een ISP gaat ervan uit dat zijn gebruikers zo handelen als hierboven beschreven is. Dat ik het met mijn Linux machines anders doe, dat wisten jullie eigenlijk wel. Om anti-spam producten toe te passen, moet je het iets anders doen: voor binnenkomende mail moet de mailclient contact opnemen met een speciale POP3-proxy. Deze POP3-proxy draait op je eigen machine. Je moet daarom aan je mailclient vertellen dat hij de post moet ophalen bij de machine die localhost heet. Deze POP3-proxy haalt de post op bij de normale POP3-server van je ISP. Een proxy is een ambasadeur, een plaatsvervanger. De proxy zal uit jouw naam handelingen verrichten. De HTTP-proxy kennen jullie misschien van kantoor of van de mogelijke installingen van je browser. Een HTTP-proxy voert voor jouw het web-verkeer uit. Een POP3-proxy voert voor jouw het mail-verkeer uit. Een bijzondere eigenschap van een webproxy is dat deze de informatie uit een cache haalt als hij de informatie al eerder opgeslagen heeft. De POP3-proxies die we gaan bespreken, detecteren spam en doen daar dan iets bijzonders mee. Volgens de C'T kan er een klein technisch probleem optreden met TCP-poorten. Een TCP-poort mag je je heel letterlijk voorstellen als een huis met een huisnummer. Iedere computer weet, dat als ze e-mail moeten ophalen met POP3, dat ze naar het huis met huisnummer 110 moeten lopen. De POP3-proxy die bij jouw thuis op jouw machine staat te draaien, zou graag de beschikking willen hebben over TCP-poort 110. Die is alleen niet altijd beschikbaar :( De POP3-proxy zal je vertellen welke TCP-poort hij gebruikt als het niet de standaard poort 110 is. Dat meot je dus aan je mailclient vertellen. Verder moet je de POP3-proxy vertellen wie jouw ISP is en wat diens POP-server is. Bij SpamPal als POP3-proxy kun je dat inderdaad in de configuratie van SpamPal opgeven. Het nadeel is dat SpamPal dan alleen post kan ophalen bij die ene provider. Maar ik heb ongeveer 5 ISP's: hccnet, kadernet, hobbynet, doge en xs4all. Ik moet daarom tegen mijn mailclient vertellen dat hij niet de post voor de gebruiker J.B.Swenker moet ophalen, maar de post voor J.B.Swenker@pop.hccnet.nl. SpamPal peutert dat uit elkaar en ziet aan dat hij post voor J.B.Swenker moet ophalen bij pop.hccnet.nl. We hebben nu alle ingredienten bij elkaar om anti-spam software te gebruiken. Laat ik nog even de ingredienten doorlopen: - een mailclient, denk aan Eudora, Outlook, netscape, etc. - voor binnenkomende mail wordt de configuratie aangepast op localhost, met eventueel een poortnummer - de gebruikersnaam wordt aangevuld met de naam van de POP3-server van de provider. - een POP3-proxy die kunstjes kan uitvoeren met Spam - deze draait op dezelfde machine als de mailclient - de proxy haalt de mail op bij de provider - en geeft deze door aan de mailclient, dus aan de gebruiker. - uitgaande mail loopt via het SMTP-protocol. Daar hoeven we voor Spam-controle niets aan de veranderen. Dan gaan we het nu hebben over Spam. Moet ik nog uitleggen wat het is, of hebben jullie er allemaal voorbeelden van? Iemand heeft iets wat hij iedereen wil vertellen: dat hij viagra te koop heeft, dat hij de mooiste vrouwen op zijn website heeft of dat hij geld uit Nigeria wil smokkelen. Dat kun je vertellen met gewone post; e-mail is echter veel goedkoper. Bij gewone post betaalt de afzender; bij e-mail betaalt de ontvanger. Mijn provider moet steeds meer diskruimte in zijn POP3-server zetten om spam te bewaren. Zelfs als de kans op succes voor de spammer slechts 0,01 % is, dan nog kan het voor hem uit. Het nadeel van spam is dat de gewone post soms bijna onvindbaar is. Op kantoor krijg ik inmiddels zoveel spam dat ik begin met het sorteren in spam en ham. Een bekende amerikaanse spammer had de pech dat zijn huisadres bekend werd. In no-time kreeg hij dagelijks zoveel catalogie van postorder bedrijven, dat hij zijn rekeningen niet meer tussen zijn post kon vinden. Ik weet niet of hij nu begrijpt hoe hinderlijk spam is. En uiteraard dit muziekje. Dat zorgt ervoor dat je bijna niet kunt horen wat ik aan het vertellen ben. Het is van een Monty Python sketch over Spam. In die sketch verdween de tekst van de sketch door dit liedje van de Vikings. Het is ook de reden van de naam spam. Een spammer kan zijn mail op 2 manieren versturen: 1) de spammer kan gewoon de infrastructuur gebruiken van zijn eigen ISP. Sommige ISP's vinden dat goed. Die staan bekend als spamhause. Andere ISP's vinden dat niet goed en zullen de toegang van de spammer afsluiten. 2) via een zogenaamde open relay. Normaal stuur je uitgaande mail via de SMTP-server van je eigen provider. Die stuurt het verder. In goed nederlands: die server is een relay. Vroeger kon je de mail ook naar een andere SMTP-server sturen. Die was meestal wel bereid om het door te sturen 'relayen'. Tegenwoordig is dat meestal geblokkeerd. Door configuratiefouten kunnen echter toch open-relays ontstaan. Vooral als de SMTP-server niet door een professionele systeembeheerder beheerd wordt, zoals bij kabel- en ADSL-gebruikers, kan zo'n configuratiefout ontstaan. Om deze reden blokkeert at-home SMTP-verkeer vanaf het internet naar hun klanten. Er zijn ook virussen die in opdracht van een spammer mail kunnen doorsturen. Waarheen? Een spammer moet ergens een e-mail adres vandaan halen. Ik krijg regelmatig CD's met e-mail adressen aangeboden. Via spam uiteraard. De meest gebruikelijke manier voor spammers is: - e-mail adres onder aan de website. Ik krijg tamelijk veel spam via swenker@nl.linux.org; het adres van de linuxwerkgroep Een onderzoek geeft aan dat dit de bulk van de spam aantrekt. - e-mail adres in een nieuwsgroep. - e-mail adres vragen op de website van de spammer. - e-mail adressen genereren - alle gebruikers van een ISP. Klanten van xs4all kunnen op een shell-server inloggen. De inlognamen van de andere klanten zijn dan vlot te achterhalen. Zelf krijg ik daar de helft van de spam op binnen. Kan ik voorkomen dat ik spam binnenkrijg? Volgens de website van CDT (Center for Democracy and Technology) is het heel effectief om het adres zo op te schrijven dat mensen het wel kunnen verwerken maar computers niet. Dit heet adres munging. CDT heeft voor haar experiment @ door at vervangen; op die adressen werd geen spam ontvangen. Ik zie in nieuwsgroepen berichten waarbij de afzender REMOVE in de naam heeft. Voor de gebruiker werkt het. Voor zijn ISP werkt het niet. Die krijgt de mail toch aangeboden. Ik gebruik zelf no_spam_please. Sommige spammers maken daarvan please. Ik weet niet of ze het deel no_spam weglaten, of dat ze alle vreemde tekens weglaten. Als laatste in het kopje spam, iets over (on)gewenste mailings. Spammers zweren bij opt-out. Dat wil zeggen dat je je moet afmelden als je niets meer van ze wilt horen. Na zo'n afmelding kan zo'n adres duur doorverkocht worden: is is immers een geldig adres. Bovendien kan de spammer het adres onmiddelijk weer aan de lijst toevoegen. Zoals gezegt het is een geldig adres. Een bona-fide mailinglijst werkt met een confirmed opt-in. Na aanmelding krijg je een verzoek om bevestiging. Zolang je dat niet instuurt, krijg je geen mail. Als een grappenmaker je aanmeldt, negeer je het verzoek om bevestiging. Het verzoek om bevestiging bevat een soort geheime sleutel, zodat die grappenmaker die bevestiging niet kan nabootsen. Ik ken verschillende mailinglijsten die regelmatig om een herbevestiging vragen of die een bounce als een afmelding interpreteren. Misschien te strak, maar toch beter dan spam. Sommige mala-fide mailinglijsten nemen het niet zo nauw met een confirmed opt-in. De bevestiging is zo simpel na te bootsen, dat de spammer het zelf kan doen. Spammers gebruiken hiervoor de naam double opt-in. Als je door de spam de echte mail (ham) niet meer kunt vinden, dan moet je er iets aan doen. Er zijn een aantal methoden om er iets aan te doen. Er zijn een aantal programma's die van die methoden gebruik maken. Eerst komen de methodes, daarna de programma's. Als je weet dat veel spam via open relays verstuurd wordt, dan zou je kunnen besluiten om een lijst aan te leggen van open relays. Vervolgens moet je jezelf dan een soort van zelfcensuur opleggen en dus geen mail meer accepteren van die open relays. Er is een website die dat doet: de open relay database. Wat je nu nog nodig hebt is een programma wat ordb.org raadpleegt. Jou internet service provider kan dat met zijn ontvangende mailserver doen. XS4ALL geeft me soms de melding dat een zendende machine in een blacklist zit. Nu hoef ik slechts tegen de mailclient te vertellen dat hij dat soort mailtjes direct apart moet zetten. Dit filteren gebeurt voor elke mailclient op een andere manier. Lees hiervoor het artikel uit C'T of de handleiding van je mailclient. Ga eventueel over op een mailclient die wel op de headers kan filteren. Ook de andere bekende bronnen van spam kunnen zo aangepakt worden. Ik heb in het verleden veel spam uit Korea ontvangen. Sindsdien blokkeer ik alles wat eindigt op .kr. Later ontdekt ik www.blackholes.us. Zij hebben een lijst van IP-adressen per land. Als je een zwart gat wilt maken van bijvoorbeeld Korea, dan kan dat. Dit is echter iets wat een provider nooit kan doen. Dit was dus een manier om spam te herkennen: op basis van de afzender. De andere manier om spam te herkennen is op basis van de inhoud. Een mens kan snel, zelfs alleen al aan het Subject, zien of iets spam is of echte mail. Voor mij geldt dat een onderwerp in het Engels reeds verdacht is. De eenvoudigste manier is gewoon een woordenlijst van ongewenste woorden. De Nigeriaanse afpersing, die gewoonlijk uit Amsterdam komt, is te herkennen aan de landnaam Nigeria. Dit was vooral effectief tegen virussen zoals Kournikova. Iets ingewikkelder is een methode die aan sommige woorden, zinsdelen of headerregels een bepaalde waarde hecht. De totale waarde geeft aan of iets spam of ham is. In het tool wat ik thuis gebruik wordt HTML-only mail als slecht ervaren. Ik heb de configuratie gewijzigd en er zeer slecht van gemaakt. Datzelfde tool geeft een forwarded bericht of een reply een licht positief oordeel. Wat zie je dus gebeuren: spammers sturen berichten die op replies lijken. Het is tamelijk lastig om te bepalen welke waarde aan een bepaald woord gegeven moet worden. De makers van dit soort tools gebruiken databases met spam om hun tool het verschil te leren tussen spam en ham. Het tool wat ik thuis gebruik laat de laatste tijd steeds meer spam door. Dat betekent dat ik een nieuwe tabel met scores moet gaan ophalen. Een tabel die op de nieuwste spam database gebaseerd is. Een alternatief is een filter wat toegesneden is op de ontvanger. Jij krijgt ander mail dan ik; jij krijgt andere spam dan ik. Jij hebt dus een ander filter nodig dan ik. Een bayes-filter voldoet hieraan. Het leert van de ontvanger wat spam is en wat gewenste e-mail is. Het gebruikers interface van het tool wat je gebruikt heeft dus twee instellingen: leren en gebruiken. Een Realtime Black List werkt vaak voldoende goed om een bayes filter mee op gang te helpen. We hebben nu alle ingredienten om over elk anti-spam tool te kunnen praten. Dus ook als je besluit om een ander tool te gebruiken dan de twee die ik hier bespreek, moet een en ander herkenbaar zijn. Ik gebruik zelf SpamAssassin. SpamAssassin gebruikt scorelijsten van goede en slechte woorden. Slechte woorden duiden aan dat het waarschijnlijk spam is. Binnen SpamAssassin wordt daar een positieve score aan gegeven. Goede woorden krijgen een negatieve score. Als de totale score meer is dan 5, dan wordt het door SpamAssassin als spam gemarkeerd. De score file is een gewone tekstfile. Die kun je dus aanpassen. En als je daarna een nieuwe versie van SpamAssassin installeert ben je de aanpasssingen weer kwijt :( Op een Unix systeem is er een aparte file waarin je de eigen aanpassingen moet zetten. Dat zal er op een windowssysteem dus ook wel zijn. Een van de kenmerken van SpamAssassin is dat het geschreven is in de programmeertaal Perl. Voor vrijwel elk platform bestaat een perl-interpreter, zodat je perl-programma's kunt uitvoeren. Bij de verschillende Unix-smaken wordt Perl standaard meegeleverd. Voor windows zul je ergens Perl vandaan moeten halen. C'T geeft een verwijzing naar www.activestate.com. De registratie zou vrijwillig zijn. Ze hebben ook de MicroSoft Installer (MSI). Naast Perl hebben we ook nog een aparte POP3-proxy nodig. Er zijn commerciele producten. In C'T wordt verwezen naar de gratis POP3-proxy met de naam pop3proxy. Ook dit is een perl-script. Deze pop3proxy haalt de mail op bij de provider, laat er eerst SpamAssassin aan snuffelen en geeft het dan door aan de mailclient. Laten we nog even kijken wat SpamAssassin met de mail doet. Het eerste voorbeeld is een mailtje wat volgens SpamAssassin geen spam is. Het Subject wordt niet aangepast. Er worden 3 kopregels toegevoegd. Die kopregels geven samen aan dat het geen spam is en om welke reden het geen spam is. Het wordt veel interessanter als je wel spam aan SpamAssassin voert. Standaard wordt dan van alles aangepast. In het Subject kun je met iedere mailclient direct zien dat het spam is. Als de mailclient ook op andere kopregels kan filteren, dan is een regel als `X-Spam-Flag: YES' ideaal. Als je voldoende nieuwsgierig bent, kun je tot op detail achterhalen waarom SpamAssassin het spam noemt. In dit geval onder andere omdat in de inhoud van het bericht over miljoenen dollars wordt gesproken. Dat is een typisch kenmerk van Nigerian scam. Op zich is SpamAssassin een goed product. Het feit dat je er apart Perl voor moet installeren, zal het voor de meeste mensen onhandig maken. Het andere product wat ik kort wil bespreken is SpamPal. Waarom SpamPal en niet bijvoorbeeld MailWasher? Om de eenvoudige reden dat C'T wel een verhaaltje over SpamPal heeft en niet over MailWasher. Het grote voordeel van SpamPal tegenover SpamAssassin is dat het een gewoon windows product is. Veel mensen zullen die gebruikersvriendelijkheid op prijs stellen. De primaire methode die SpamPal gebruikt zijn de Realtime Black Lists, dus de lijsten met adressen van erkende spammers. Met plugins is het mogelijk SpamPal uit te breiden. Op de website van SpamPal staan onder andere plug-ins voor slechte woorden, bayesian filters en reguliere expressies. Reguliere expressies ken je misschien nog uit de DOS-tijd: met een sterretje aangeven dat alles mag of met een vraagteken aangeven dat daar elke letter kan staan. Reguliere expressies zijn daar een uitbreiding op. Via de website van SpamPal heb ik een aantal screenshots gevonden. Laten we ze even bekijken: <...> Dit was mijn verhaal over spam. Ik ben begonnen met iets over mail te vertellen. Daarna heb ik wat informatie gegeven over spam. Daaruit volgde welke methoden er zijn om spam te blokkeren. Tenslotte heb ik 2 gratis producten genoemd die gebruik maken van die methoden.