Ako fungujú spamfiltre

07.12.2006 09:10 | betmen
Sedel som na riti (ako väčšinu dňa) a skrsla vo mne myšlienka popísať detailnejšie aké mechanizmy sa používajú proti spamu. Aspoň by sa teda mali. Ževraj nám spam pije krv (mne nepije ale ľuďom často pije) už +-12 rokov. Keď zalovím v pamäti tak myslím že na slovensku sa spam začal vážnejšie objavovať niekedy okolo roku 2000 keďže vtedy začal významnejšie stúpať počet slovenských užívateľov internetu aj medzi bežnými ľuďmi. Aj tak sa mi ale sporadicky dostane do rúk servrík ktorý o niečom ako filtrovanie pošty alebo striktnejšie pravidlá pre akceptovanie emailov len sníva. Ale späť k téme. Kedysi sme poznali len "statické" metódy postavené na jednoduchom filtrovaní emailu podľa odosielateľov, neskôr sa k tomu pridali aj nejaké tie slovíčka v akomsi asociatívnom políčku a to nám mohlo rozhadzovať mejlíky po mejlboxoch ako sme chceli. Samozrejme, mali sme už dávnejšie aj blackhole listy, ktoré sú tiež efektívne ale žiaľ dlhodobou skúsenosťou si dovolím tvrdiť že nepatria medzi najspoľahlivejšie a už vôbec nie je jednoduché z nich vymazať server ktorý sa tam dostane ako mucha medzi zuby cestou na motorke len vďaka tomu, že máme neposlušného userka (roxor na neho). Samozrejme, ako je to aj s mafiou a políciou, spamerkovia sú vždy popredu. Preto začali vznikať logickejšie porovnávačky ktoré okrem staticky prebehnutého zoznamu slovíčok vedia, hľadať "súvislosti". V dnešnej dobe je najrozšírenejšia bayesova metóda (človek ktorý nám vymyslel kategorizáciu podľa testovania). To sme stále pri statickej metóde. Ujo Bayes tak vo svojom 18tom storočí rozmýšľal až vymyslel (rebrík nie), svoju teóriu pravdepodobnosti na základe ktorej vieme v dnešnej dobe radiť spamčoky do kategórií. A to vďaka tomu že nejaké slovíčka v nejakom poradí a výskyte znamenajú niečo čo sa v inom poradí a združení slov dá napísať len ťažko (preto sa občas spamerkovia snažia klamať filtríky tým že posielaju sračkoidný balast). Keď nám bayes okoštuje spamčok, tak vie vo väčšine prípadov odhadnúť či ide o spamčok alebo nie podľa práve výskytu slov etc. Keďže ale nie je AI, potrebuje k tomu ľudskú interakciu. Preto bolo kedysi potrebné (a je aj dnes dobré) keď si dáme na krk píšťaľku a ideme trénovať bayesa. Naučíme ho podľa existujúcich mailov výskyt slov, povieme mu že tieto slová podľa tohto mejlíku sú ok, tie nechaj napokoji a daj im nižšie skóre alebo záporné. A naopak, toto je zlý škaredý mail ktorý mi ponúka viagru (o pár rokov to nebudem chápať ako spam ale ako super ponuku) oskóruj vyšším čísielkom. Dobre, to by sme mali základ zrejme každého statického spamfiltra (ano lebo update databázy sa nedá chápať ako dynamické vyhodnocovanie prichádzajúcej pošty). Ale je to tak na hrane. Ako extension v dnešnej dobe je vhodné mať aj autolearning ktorý odbremeňuje od nutnosti manuálneho trénovania, je ale potrebné využívať viacero metód aby bolo z čoho učiť. Čo ak vypil nejaký spamerko veľa ginko čaju a vyšpekuloval ako nás okabátiť? Ďalšie v poradí sú tzv. kolaboratívne metódy (patria k nim aj blackhole listy ktoré som spomínal ale tie sú primitívne v porovnaní s pokrokovejšími). Počas druhej svetovej vojny bol kolaborant každý kto bol slovák ale paktoval s nemcami aby mal z toho osoh. Kolaboratívna antispamová metóda je na našom serveríku ale paktuje s inými serveríkmi aby z toho mala osoh. Kolaboratívne metódy využívajú či už automatické alebo manuálne online databázy spamov spolu s rejtingom ktorý je tiež výsledkom nejakej tej pravdepodobnosti a podľa znakov nesúcich mailom nám odporučí operáciu s našim mailom (len nám povie či je to spam či nie je alebo či je pochybný a nie je atď..). Potom je už na nás ako údaje spracujeme a skóre prirátame k výsledku bayesového testu. Musíme ale počítať s tým že ide o interaktívnu metódu ktorá nám robí aký-taký bandwidth consumption a spolieha sa na dostupnosť druhej strany (to je viac-menej historické keďže takéto systémy sú už dobre rozdistribuované po svete). Druhá vec je adekvátne zvýšenie časovej náročnosti na spracovanie mailu (náš filtrík pošle serveríku, ten porozmýšľa trošku o mejli a povie nám naspäť k tomu niečo). Tu by sme si mali rozmyslieť podľa toho či ide o automatizovaný alebo manuálny proces, do akej miery budeme výsledku dôverovať a preto prispôsobíme aj skórovanie. Návrat do prítomnosti. Dnes sú spamy trošku sofistikovanejšie. Často obsahujú obrázky a text celkom nenápadný. Napríklad súhrn tlačových správ z rôznych spravodajských agentúr a iné veci. Opäť jedna možnosť. Už celkom dlho vieme vďaka OCR naskenovať dokument tak, aby sme z neho vymlátili do počítačíka nie obrážťok ale písmenká. A čo je dobré, to sa počíta. Metóda ešte nie je aspoň v opensource (neviem ako v komerčnej sfére) úplne dotiahnutá lebo slová ktoré vyhľadáva v obrázkoch sa manuálne zapisujú do wordlistu (aj keď podľa mňa by to mohlo byť zaujímavé porovnať s bayesovými výsledkami klasických mailov), v každom prípade je to ale zatiaľ použiteľné a mejlík príde, pozrie sa že má obrázok, podľa ďalších vlastností porozmýšľa či ho skontroluje, potom chytí, vymláti text, prebehne cez wordlist a k skóre pripočíta svoj záver. Trochu budúcnosti. Dve metódy, ktoré majú čo do seba sú DKIM a SPF. DKIM (DomainKeys Identified Mail) je štandard. Idea je taká, že mail ktorý sa odošle je identifikovaný tak, aby fdsafdsafasdfsd@mrkvicka.prd nespôsobil ferovi mrkvičkovi že sa jeho doména nebodaj jeho email fero@mrkvička.prd dostane nejakou zlou asociáciou do blacklistov. Ide o digitálny podpis ktorý vychádza z doménového mena a je validovaný systémom vlastníka domény. Takže vy ako firmička si aktivujete automatické podpisovanie mailíkov a môžu vašu doménu fejkovať spamerkovia koľko chcú, podľa kľúča to rozozná pravosť. Keby boli userkovia ideálni, mohli by sa tieto podpisy riešiť na spôsob pgp (zadávať si ručne heslo) čím by sa zabránilo aj zneužitiu servera nejakým spamerským trojanom a podobne. Sender policy framework (SPF) funguje trošku inak. Ale princíp je podobný. SPF sa zaoberá adresou odosielateľa, ochraňuje hlavne doménu odosielateľa. Používa TXT doménové záznamy v ktorých sa definujú servery oprávnené odosielať maily v mene konkrétnej domény. Takže ak spamerko pošle v mene vašej domény 10tisíc spamov zo sveta, servery obsahujúce spf policy checker budú vedieť že sú invalidné aj keby boli akokoľvek šikovne napísané (neposudzuje obsah). Obe spomínané metódy nie sú veľmi využívané práve preto že je tam potrebná interakcia nie len správcu servera prichádzajúcej pošty ale v prvom rade je potrebné chrániť samého seba pred možnosťou zneužiť vlastnú doménu spamermi. A ako som spomenul na začiatku, množstvo serverov v dnešnej dobe netuší ani o jednoduchších spôsoboch ochrany. Toľko k teórii.
    • rbl a ocr 07.12.2006 | 23:20
      Avatar stanojr   Používateľ

      rbl sa mi zda zatial najucinnejsia metoda :)
      sice telecom.sk je permanentne v databazach a velke freemaily tiez casto ale to nevadi
      t-com mam whitelistnuty
      btw. v postfixe nevie niekdo ako obist rbl pre urcite smtp
      bez toho aby som im robil open relay ?

      co sa tyka ocr
      celkom fajn je fuzzyocr plugin do spamassassinu
      nova verzia vie robit take veci ako hashovat spam obrazky/nespam obrazky, takze ich znovu neanalyzuje
      fuzzyocr dokaze pouzivat 2 opensource ocr scanneriky, ocrad a gocr, ja zatial pouzivam starsiu verziu z gocr
      ale podla emailov z devel mailinglistu fuzzyocr je ocrad lepsi, ale este som sa nedokopal k upgradu :)

      • to s tou otazkou ohladne 07.12.2006 | 23:28
        Avatar stanojr   Používateľ

        to s tou otazkou ohladne obchadzania rbl a openrelay beriem spet, mam to dobre nastavene :)

      • nepredbiehaj 07.12.2006 | 23:29
        Avatar betmen   Používateľ

        nepredbiehaj :)
        ____________________
        promptne je alias pre nahovno

        ______________ kam by som chodil...na dvor
    • Dalsia vec dobra na spamfiltering 08.12.2006 | 09:35
      Avatar blackhole_backslash   Používateľ

      Mne sa osvedcila este jedna vec na odzubkanie spamu, a sice greylisting. Spolu s bayesom to funguje uplne genialne, vo firme, kde to mam nasadene sa zmensil objem spamu za jeden den na jednu desatinu (20 namiesto cca 200). Otazne je, ze dokedy to takto bude fungovat.

      -- Najnebezpečnejší tvor na svete je blbec s nápadom, takže pozor na mňa!
      • hej, greylisting je paradna 08.12.2006 | 13:12
        Avatar betmen   Používateľ

        hej, greylisting je paradna vec kedze 99% spamu sa odosiela z invalidnych serverov bez fronty. len som dost komplikovane ludom vysvetloval ze na mail si musia niekedy pockat aj 20-30 minut :) ale pre firmicku kde sa to nasadi zo zaciatku (ze nie su zvyknuti na daky pohodlny standard) je to fajn vec

        ____________________
        promptne je alias pre nahovno

        ______________ kam by som chodil...na dvor
        • Ja mam nastaveny greylisting 09.12.2006 | 12:16
          Avatar blackhole_backslash   Používateľ

          Ja mam nastaveny greylisting tak, ze vsetky maily z *.sk a *.cz pusta hned, bez akehokolvek zdrzania, nakolko je to uplne zbytocne (drviva vacsina spamu ide aj tak z inych domen). No a ludia si na bezne 5 minutove cakanie zvykli, u beznych firiem nie su okamzite reakcne casy mailov take potrebne. Mail a IM su dva rozdielne veci, takze to by si mali uvedomit.

          -- Najnebezpečnejší tvor na svete je blbec s nápadom, takže pozor na mňa!