Kalandok a Cloudmark-kal

Böngészem a netet, vagy éppen egy SpamAssassin lista egyik levele került elém, és mit látok? A Cloudmark elérhetővé tette a szolgáltatását – Cloudmark Authority Engine (CMAE) – az elterjedt SpamAssassinhoz. Mi a CMAE? Egy 2 csomagból álló alkalmazás, amellyel a SpamAssassinba integrálható a Cloudmark kollaboratív vírus/spamszűrője. Az egyik része egy démon, ami a 2703/tcp porton várja a leveleket, a másik pedig egy SA plugin.

Én meg amilyen kísérletező kedvű vagyok, megnéztem a kliens részét, amihez nyilván van egy C library + header fájlok. Mázli, hogy a cmae_client.h
korrekt módon dokumentált, így írni tudtam egy rövid 2 soros C függvényt, ami fog egy levelet, és kideríti, hogy az vírus, spam vagy tiszta levél.

A megoldás egyébként úgy működik, hogy a kliens base64 kódolva elküldi a levelet a démonnak, az pedig az adatbázisa alapján eldönti, hogy az jó levél vagy sem. Mivel a Cloudmark képes valósidőben (real time) detektálni a vírus/spamkitöréseket, ezért nagyon fontos, hogy az adatbázisa up-to-date legyen. Ezt úgy oldja meg, hogy ún. microupdate-ekkel tartja percre frissen az adatbázisát, és csak egy licence kulcs kell hozzá.

A kliens program kb. ennyi:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <cmae_client.h>

int main(int argc, char **argv){
   int ret, fd;
   unsigned int ScoreOut=0;
   char *msg=NULL;
   struct stat st;
   CMAE_Client_Session SessionOut;

   if(argc < 2){
      printf("usage: %s <messagefile>\n", argv[0]);
      return 1;
   }

   if(CMAE_Client_Open(&SessionOut, "127.0.0.1", 0, 0, 0)){
      printf("CMAE_Client_Open()\n");
      return 1;
   }

   if(stat(argv[1], &st)){
      printf("cannot stat: %s\n", argv[1]);
      return 1;
   }

   fd = open(argv[1], O_RDONLY);
   if(fd == -1){
      printf("cannot open: %s\n", argv[1]);
      return 1;
   }

   msg = mmap(msg, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
   close(fd);

   if(msg == NULL){
      printf("mmap()\n");
      return 1;
   }

   ret = CMAE_Client_Score(SessionOut, NULL, msg,
           st.st_size, &ScoreOut, NULL, NULL, NULL, NULL);

   munmap(msg, st.st_size);

   CMAE_Client_Close(SessionOut);

   printf("%s %d\n", argv[1], ScoreOut);

   return 1;
}

Az elvégzett tesztben 1313 ham levél szerepelt a májusi levelezésemből, amiből 9-et tévesen spamként azonosított. Ebből kettőt mondhatunk nem kritikusnak (Sun hírlevelek), de a maradék 7 az üzleti levelezésem része, úgyhogy sajna 7 kritikus fals pozitív hibát is vétett. (FP: 9/1313 = 0.68%)

Kétféle spam mintán is leteszteltem: az egyik a junk mappa tartalma, 2182 levél, amiből csak 5 csúszott át, ez 99.77%-os spam felismerés. A másik minta a csapda email címre érkezett 4468 levélből állt, amiből 20 csúszott át, ami 99.55%-os spam felismerés.

A detektálás folyamata egyébként gyors, a 12 ujjlenyomatot gyorsan levette a levelekről, és kidobta az eredményt, hogy szerinte mi az ábra.

Ja igen, a kaland. A poén kedvéért kértem egy ajánlatot a Cloudmark-tól, hogy mégis mennyibe fájna ez nekem, ha a 30 napos trial után komolyra fordulna a dolog? Potom pénz az egész, évente $5,000, amiért akár 2222 mailboxot is megvédhetek.

Azt is kértem, hogy mutassanak már egy demo C-programot, hogyan kell használni az SDK-jukat? Erre jött a kiváncsiskodás, hogy minek az neked, mire akarod használni? Megírtam, hogy építek egy POP3 proxyt, ami bárki használhat regisztráció után egy féléves pilot erejéig. Aztán megjött a válasz, hogy sajna nem fog menni, csak a SpamAssassin plugint tudják adni. Nem akartam ünneprontó lenni, hogy már régen kész van a cucc…

Házon kívül üzenettel csapnák be a spamszűrő rendszereket

A HWSW-n most találtam rá egy februári írásra, amely szerint a spammerek a népszerű freemail rendszereket (pl. Gmail, Yahoo, Hotmail, …) abajgatják.

A módszer a következő: “a kéretlen leveleket küldő elsőként egy teljesen legális e-mailcímet generál valamely ingyenes webes levelezőszolgáltatásnál, például a GMailnél. Ezt követően “házon kívül” üzenetet állít be megfelelő szövegezéssel, melyben elhelyezi azt a linket is, melyet közvetíteni szeretne. Innentől kezdve nincs más dolga, mint hamisított levekkel bombázni ezt az e-mailcímet.

A levelek küldőjeként azokat az e-mailcímeket hamisítja, melyekre el szeretné küldeni az üzenetét, ezért a visszapattanó, házon kívüli szöveget tartalmazó levelek a spam tartalmával ezekre a címekre indulnak majd útnak. Ezek a levelek szinte mindenben megfelelnek majd a spamszűrők feltételeinek, hiszen legális címről, igazi levelezőszerverekről érkeznek majd a postafiókokba.”

A cikk azt is megjegyzi, hogy a trükk ellen hatástalanok azok a módszerek, amelyek az SMTP információk alapján működnek, pl. feketelisták, szürkelisták, SPF, DomainKeys, stb.

Én ugyan még nem kaptam (legalábbis az idén) olyan spamet, amely valóban a Gmail hálózatából jött volna, de ha valaki annyira megbízik a Gmail-ben, hogy azt fehérlistára tette, az kaphat “out of office” spamet.

Megoldás azonban van: tartalomelemzés + SURBL/URIBL. Ezzel egyrész oda lehet küldeni az irritáló “Bocs, de most nem dolgozom 2 hétig” üzeneteket, ahova valók, ill. ha a levélben ismert spam website szerepel, akkor a levelet spamként lehet megjelölni.

qdb.hu

Valahol láttam egy hivatkozást a http://qdb.hu/-ra, ahol különféle IRC csatornákról szedett (és vedett) idézetek, mondhatni aranyköpések szerepelnek. A top100-ból válogattam pár szösszenetet.


[ashnur] ezzel volt tegnap vicc. a kutya valoban az ember legjobb baratja. ha nem hiszed vegezd el a kovetkezo kiserletet. zard be a feleseged/baratnod es a kutyadat egy orara a csomagtartoba. melyikuk fog orulni neked amikor kiengeded?


[mRdEExTer] hi
[mRdEExTer] valaki tudna nekem segiteni shell programozasban?
[badur] kérdés?
[mRdEExTer] Írj scriptet, ami paraméterként kap pontosan kettő könyvtárnevet s azok tartalmát rekurzívan összehasonlítja (elegendő a fájlnevek egyezőségét vizsgálni). Készít egy eredmény fájlt, mely tartalmazza, hogy mennyi darab fájl azonos, melyik fájlok szerepelnek kizárólag az egyik ill. a másik könyvtárban. Különbözőnek számít az, ha ugyanolyan nevű fájl különböző alkönyvtárakban szerepel!
[egeresz] ismeros
[mRdEExTer] igazabol csak egy kis lokes kene az elindulashoz
[grg-] aha man bash
[egeresz] mintha progkorny lenne
[egeresz] es mintha en tartanam
[badur] asszem ez elegendő lökés :)


[ obalix ] négyeshatoson jövök haza suliból (combino -n), és egy hülyegyerek mindig visszafogta a megállókban az ajtót, így a többi se csukódott be...aztán elengedte, mentünk tovább
[ obalix ] kb a negyedik megálló után megszólal a mikrofonba a villamosvezető
[ obalix ] "A lélekzeted tartsd vissza ne az ajtót!"
[ obalix ] gyerek leszállt egyből, mi meg szakadtunk a röhögéstől :)