SPAM szűrés

Fogalmak:

A spam a fogadó által nem kért, elektronikusan, általában e-mailen keresztül tömegesen küldött hirdetés, felhívás. 

http://www.virusbuster.hu/hu/spam/spam_tudnivalok/altalaban_a_spamrol

http://hu.wikipedia.org/wiki/Spam

A számítógépes vírus olyan önsokszorosító program, amely saját másolatait helyezi el más, végrehajtható programokban vagy dokumentumokban. Az ún. féregvírus (worm) más számítógépeket fertőz, általában felhasználói beavatkozás nélkül is, a hálózaton keresztül, leggyakrabban e-mailben terjed.

Spam és vírusok - ezt a két problémát ma már nem lehet külön kezelni! A mai vírusok többségének célja spam-levelek terjesztése (vagy ennek elősegítése, pl. címlisták gyűjtésével), míg a spam-ek a régebbi vírusokban alkalmazott technikákat használják a különböző védelmi rendszerek kijátszására. 

Napjainkban a vírusok mindennapi fenyegetése elleni hatékony védekezés elengedhetetlenné - és sajnos szinte lehetetlenné - vált. Biztonságosnak vélt forrásból is gyakran kapunk vírusokat, hiszen működési mechanizmusukból következően az áldozat (a fertőzött gép felhasználója) az esetek többségében nem értesül idejében a fertőzésről, vagy csak felhasználják (hamisítják) a címét a ténylegesen vírusos gép elrejtésére. 

A víruskereső programok általában csak azután segítenek, hogy a fertőzés megtörtént, mivel a vírusok a gyors internet segítségével addigra nagyon sok gépet meg tudnak fertőzni, mire a víruskeresők felismerik őket.

Ezért a hagyományos módszer - az ismert vírusokat és spam-eket tartalmazó adatbázis alapján történő azonosítás - mellett egyre nagyobb hangsúlyt kapnak az ún. heurisztikus megelőző szűrések (vírusok és spam-ek általános jellemzőit, tulajdonságait figyelő és kereső). Ezek viszont tévedhetnek is!  

SPAM- és vírusszűrés az Óbudai Egyetem hálózatán: 

Az egyetem szervereinek bejövő levelezése, és valamennyi, az egyetemről elküldött levél átmegy a SENDMAIL nevű, spam- és vírusszűrést végző szerveren. 

Ez a szerver egy sok lépcsőből álló szűrő soron vezeti végig a leveleket, és csak azokat továbbítja, amelyek nem akadtak fent egyik szűrőn sem. Mivel sok, komplex szűrőről van szó, sajnos nem lehet 1-2 mondatban megfogalmazni, mitől akadhat fent egy levél. 

Általánosságban azért elmondható, hogy a szűrők - igazodva a mai spam-ek és vírusok természetéhez - leginkább arra érzékenyek, ha megpróbálják kijátszani, kikerülni őket. (Ironikus, de a legtöbb spam pont azért akad fenn, mert megpróbálta kikerülni a szűrőt, többségük e-nélkül átment volna! Ez fordítva is igaz, ha egy spam átjut a szűrőkön, az általában semmi gyanúsat, feltűnőt nem tartalmaz, így pont az eredeti célját - figyelemfelhívás, reklám - nem éri el...)  

A leggyakoribb három ok, ami miatt "tévesen" blokkol leveleket a rendszer: 

1. A küldő ki akarja játszani a védelmet ("nehogy a spam-szűrőtök megfogja!"), ezért átnevezi a csatolt file-t (pl. valami.exe -> valami.gif)

Megoldás: nem kell átverni a rendszert, ha ártalmatlan a file, nem éri bántódás!

2. A csatolt file neve túl van az észszerűség határán, azaz vagy több mint 120 karakter hosszú, vagy filenévbe nem illő karaktereket is tartalmaz (pl. idézőjel, / jel, sok space stb.). Általában a Word által automatikusan adott nevekkel (a szöveg első bekezdése + .doc) szokott gond lenni.

Megoldas: csatolt file átnevezése és újraküldése.

3. Sokszorosan továbbküldött (forward) lánclevelek: Ezeknél általában a sokféle levelezőből belekerült kusza MIME fejlécek okozzák a blokkolást, de ezekért a levelekért úgysem kár...

Megoldás: ne továbbíts láncleveleket, mert:

http://yikes.tolna.net/hoax/

 

A szűrőlánc elemei, részletesebben:

1. procmailrc-spam - kézzel írt spam szűrő szabályok

Ilyenekkel tudjuk gyorsan és hatékonyan lekezelni a spam-támadást, amikor egyféle spam-ből hirtelen nagyon sok jön, és ezek a többi szűrőt nagyon le tudnák terhelni. Illetve van benne szűrés pár "örökzöldre" is (pl. viagra szó a subject-ben stb.).

Ezeket a leveleket a rendszer mindig blokkolja (eltárolja a szerveren, de a címzett nem kapja meg), értesítés nélkül (se feladónak, se címzettnek)! Mivel ezek a szűrő-szabályok konkrét spam levelekre (vagy típusokra) vonatkoznak, a tévedés itt kizárva. 

2. procmailrc-v-n - automatikus vírus-figyelmeztetések kiszűrése

Ez a vírus-notify-okat próbálja megfogni és blokkolni, mivel ezek csak fölösleges pánikot keltenek az ártatlan felhasználóban akinek a címét odahamisították a vírusos levélbe feladónak. Mivel az egyetem rendszeréből vírusszűrőn át lehet csak kifelé levelet küldeni, innen biztosan nem mehetett ki vírus, tehát az erről szóló értesítések is biztosan hamisak: 

"V" felhasználó gépe vírusos, és "A" nevében küld egy vírusos levelet "B" címére. Ezt "B" vírusvédelmi rendszere észleli, és erről automatikus értesítést küld "A" címére, mivel "A" a (hamisított) feladó.

Mivel "A" az egészről semmit se tud, és tehet, így fölösleges neki kézbesíteni az értesítőt, főleg ha biztosan tudjuk, hogy ő nem küldhette a vírust.

3. PyMaViS - vírusok kiszűrése

A PYMAVIS (http://thot.banki.hu/arpi/pymavis/) vírusszűrő keretrendszer a levelet szétbontja elemeire, minden csatolmányt külön file-ba stb., majd erre a könyvtárra ráengedi a különböző víruskereső motorokat (az egyetemen a nod32 és ClamAV).

Ha valamelyik keresőmotor vírust talál, akkor a levelet nem továbbítjuk, és sem a feladó, sem a címzett NEM KAP erről értesítést! (mivel a vírusok 99%-a ma már hamis feladót használ, nincs értelme)

Ezen kívül van benne mindenféle heurisztikus és direkt szűrés, amivel felismeri a vírus-gyanús, pl. átnevezett exe file-okat és a különböző védelmi mechanizmusok kijátszására való próbálkozásokat. Emellett ellenőrzi a szintaktikát, pl. hibás file-név, fejlécek...
 
A teljesség igénye nélkül, pl. a következő esetekben blokkol:
  • túl hosszú a csatolt file neve (max 120 karakter lehet!)
  • szokatlan írásjelek vagy túl sok szóköz, tab a csatolt file nevében
  • átnevezett EXE/DLL file (pl. .GIF-re stb)
  • olyan EXE file, amely hálózati kapcsolatokat kezelő DLL-eket használ
  • olyan kisméretű EXE, amely exepackerrel vagy egyéb módon álcázza, kódolja magát
  • jelszóval védett, de nem tömörített (1:1 méretű) ZIP vagy RAR file
  • "hta","vb","vbs","bas","reg","inf","dll","vxd","pif" kiterjesztésű file-ok
  • "exe","pif","scr","com","bat","cmd" kiterjesztésűek tömörítetlen zip-ben
  • a MIME szabványnak ellentmondó fejlécek, sorok a levélben (min 3 db)

Blokkolás esetén csak a feladó kap értesítést, a címzett nem!

Ha csak gyanús a levél, akkor nem blokkolja, hanem VÍRUSGYANUS megjelöléssel a Subject-ben továbbengedi a címzettnek, esetleg a gyanús csatolt file-t átnevezi valami ártalmatlanra. (GYANUS.EXE -> GYANUS_EXE.TXT) 

4. SpamAssassin - szabály- és mintaalapú SPAM-szűrés

A SPAM osztályozás a spamassassin programon keresztül történik. Ez különböző módszerekkel vizsgálja a levelet, és az ezekből kapott pontszámokat összegzi. Az eredmény alapján osztályoz:

  • <1 pont:      nem gyanús, kézbesítjük
  • 1..5 pont:    gyanus, de kézbesítjük
  • 5..10 pont:  valószínűleg spam, de kézbesítjük SPAM-ként megjelölve
  • >10 pont:    biztosan spam, nem kézbesítjük

A középső két zóna ahol számolni kell tévedéssel, így ezeket ennek megfelelően óvatosabban kell kezelni. (ezért is kézbesítjük, ha jelölve is) 

A pontszámot befolyásoló szűrők: 

4.1. SpamAssassin súlyozott minta-illesztője, kb. 5000 féle beépített szűrő szabályt próbál illeszteni a levelekre, és összegzi az egyező minták súlyértékét/pontszámát. Ez a különböző technikai és szöveg/stilisztikai jellemzők mellett nézi pl. a szöveg nyelvet is. Ezek pontszámait lehet (és kell!) kézzel finomhangolni, a felhasználók visszajelzései (téves jelölés stb.) alapján, illetve új szabályokat is szoktam felvenni hozza.   Bővebben: http://www.spamassassin.org

4.2. Bayes-DB: egy (jelenleg) 10 millió szavas szótár alapján a spam-ra és nem spam-ra legjellemzőbb, a levélben előforduló szavak alapján számit egy valószínűséget 0..100% között, ez alapján -12 .. +8 ponttal korrigálja az 1. eredményét. Ez a szótár tanulással jön létre. Induláskor egy válogatott 15 ezres spam és ugyanekkora nem-spam lével gyűjteménnyel lett előtanítva, majd az ezután beérkező levelekből vett szavakkal, mintákkal bővíti a szótárt automatikusan. A módszerről: http://www.paulgraham.com/spam.html 

4.3. A SpamAssassin-hez készített internetről folyamatosan frissülő (a vírusadatbázisokhoz hasonlóan) mintagyűjtemények: http://www.rulesemporium.com/rules.htm, illetve az ezeket automatikusan frissítő script: rules_du_jour. Ez általában az új, a SA beépített szabályaival már nem megfogható spam-ek kiszűrésére használatos. 

4.4. Különböző DNS-alapú blacklist szerverek (DNS-BL): Ezekkel IP cimeket illetve URL-eket lehet gyorsan és hatékonyan ellenőrizni a következők szerint:

  • az IP ahonnan a levél érkezett ismert spam-küldő-e
  • az URL(ek) ami a levélben található ismert spam-site-e
  • az IP ahonnan a levél jött dinamikus IP-e vagy fix IP?

Mivel ezek nem 100% megbízható információk (pl. gyakran kerülnek be a nagy net-szolgáltatók címei ezekbe a feketelistákba) így ezeket csak kis %-ban vesszük figyelembe, max. 1-2 pont értékkel. (Ha a küldő sok feketelistában szerepel, úgyis meglesz a blokkoláshoz vagy jelöléshez elegendő pontszáma.) 

5. DCC - Distributed Checksum Clearinghouse http://www.dcc-servers.net/dcc/

Ez egy elég trükkös módszer. Lényege, hogy egy szerver(hálózat) számolja a leveleket, amiket a résztvevő mailserverek továbbítanak. Minden levelet!!! (Persze csak egy ideig (pár napig) tarolja, és nem a levelet, hanem csak a checksum-ját). Ha ugyanaz a tartalmú levél (ugyanaz a checksum) rövid időn belül nagy számban fordul elő a hálózaton, akkor az vélhetően spam. A módszer előnye hogy semmit sem tud a levélről, nem nézi a tartalmat, csak azt számolja, hogy ugyanaz a levél hányszor megy át a rendszeren. Mivel a spam-eket milliós számban küldik, elég hamar eléri a kritikus határt és ezután kiszűrhető. Hátránya is ugyanez, mivel vannak olyan hírlevelek, ill. levelezőlisták, amik sok címre mennek ki egyszerre, mégsem spam-ek, viszont ez a módszer nem tud különbséget tenni köztük. 

Éppen emiatt ezt nem használjuk direkt szűrésre, csak a DCC által gyanúsnak talált leveleket letárolunk a szerveren a spam-dcc folderbe, de kézbesítjük is. Ez arra jó, hogy időnként kézzel átnézve a kiválogatott spam-ekkel tanítható a Bayes filter. 

Ha a levél végigment a tortúrán és egyik szűrő sem blokkolta, akkor kerül továbbításra a címzettnek. 

Statisztika: 

https://nagios.bmf.hu/munin/tavasz.net/sendmail.tavasz.net-procmail.html

A grafikon felső felében levők a továbbított levelek, az alsón (negatív tartomány) a blokkoltak. Mint az jól látható, a levelek többsége a zöld (ártatlan nem-spam levél) és a piros (biztosan spam) közé tartoznak. 

Lényegesen kevesebb az egyéb kategóriákba (vírus, gyanús stb.) tartozó levél. Az is látszik, hogy kb. 3x-4x annyi a spam mint a nem-spam levél. Heti átlagban percenként 4.77 nem-spam és 12.73 spam levél jon. (ez napi kb. 18000 spam levelet jelent!!!)