Każdą osobę, która korzysta z poczty elektronicznej, dotyka ten sam problem – setki niechcianych wiadomości: reklamy, łańcuszki, informacje o rzekomych wygranych w loteriach… Po prostu spam. Skąd spamerzy znają nasze adresy e-mailowe? Jak się bronić przed zalewem niechcianej korespondencji?
Skąd te adresy?
Spamerzy, czyli nadawcy niechcianej korespondencji,
stosują wymyślne sposoby, żeby zdobyć nasze adresy
e-mail. Posiadając bazę danych liczącą setki tysięcy
lub miliony odbiorców można przyjmować zlecenia na
rozsyłanie reklam.
Aby zbudować tak dużą bazę danych, spamerzy
mogą posłużyć się kilkoma metodami. Najprostszym
sposobem jest wygenerowanie dużej liczby adresów
należących do znanego dostawcy poczty. Pierwszy
człon, czyli nazwa użytkownika, dobierana jest losowo
z puli imion, nazwisk i innych znanych nazw, a drugi
(domena) jest stały – np. gmail.com czy polski poczta.onet.pl. Oczywiście nie ma żadnej gwarancji, że konto
kowalski@wp.pl istnieje, ale przy dużej ilości utworzonych
adresów na pewno trafią się poprawne.
Innym sposobem, skuteczniejszym, ale wymagającym
nakładów czasowych lub pieniężnych, jest kupno
gotowej bazy danych albo skopiowanie adresów z list
dyskusyjnych czy rozsyłanych łańcuszków. Jeśli spamer
pozyskuje adresy w jeden z przedstawionych sposobów,
niewiele możemy zrobić. Właściwie jedyną ochroną
jest posiadanie drugiego adresu, który podawany
będzie w formularzach lub skorzystanie z usługi oferującej
tymczasowe konto. System taki oferowany jest
np. przez polski serwis No-Mail.pl (http://www.nomail.pl) autorstwa Piotra Jurkiewicza.
Skrzynka na momencik
Zasadniczą cechą wyróżniającą No-Mail.pl na tle innych
serwisów pocztowych jest to, że konto jest automatycznie
usuwane po 10 minutach od założenia. Co
nam to daje? Zwykle przy rejestracji w serwisach internetowych
wypełniamy formularz, w którym musimy
podać adres, na który wysłane zostanie potwierdzenie.
Podajemy więc wygenerowany na dziesięć
minut adres, odbieramy wiadomość i zapominamy
o tymczasowym koncie. Gdy znowu skorzystamy z jakichś
formularzy w sieci, które będą wymagały podania
adresu e-mail, dostaniemy nową tymczasową
skrzynkę w No-Mail.pl – jest to bardzo wygodne i nie
wymaga rejestracji ani logowania. Podobną usługę
wprowadził również portal o2.pl. W ustawieniach
poczty możemy utworzyć tymczasowy adres, który
(tak jak w No-Mail.pl) można będzie usunąć.
Harvestery
Niestety, tymczasowe adresy nie sprawdzają się
w każdej sytuacji. Większość internautów korzysta ze
swojego maila równie często jak z telefonu (lub nawet
częściej) i nie może sobie pozwolić na jego ciągłą
zmianę. Wiele osób, aby ułatwić kontakt, umieszcza
swój e-mail na stronach internetowych, blogach, grupach
dyskusyjnych itd. Dla spamerów jest to wspaniała
wiadomość – wystarczy tylko przejrzeć mnóstwo
stron, skopiować z nich adresy i baza jest pełna!
Oczywiście, nikt nie robi tego ręcznie – zamiast przeglądać
sieć, tworzy się programy, zwane harvesterami
lub botami, które potrafią samodzielnie odwiedzać
strony WWW i wyszukiwać w ich treści adresy.
Nie jest to operacja trudna, gdyż e-mail ma bardzo
charakterystyczny wygląd: nazwa@domena. Co
więcej, lista domen jest ograniczona i możliwe jest
proste sprawdzenie, czy podana domena jest poprawna.
Wystarczy więc wyszukać na stronie wszystkie
znaki @ otoczone z lewej ciągiem małych liter lub
cyfr itp. (tylko takie adresy są poprawne), a z prawej
istniejącą domeną i już można dodać nowy adres do
kolekcji. Obsługa wyrażeń regularnych wbudowana
w języki programowania, takie jak np. Perl, powoduje,
że stworzenie prostego harvestera zajmuje przeciętnemu
programiście zaledwie kilkadziesiąt minut.
Ochrona przed harvesterami
Użytkownicy grup dyskusyjnych już dawno zaczęli zapisywać
swoje adresy w postaci czytelnej dla ludzi
i wprowadzającej w błąd maszyny. Boty potrafią poprawnie
wychwycić tylko takie ciągi znaków, do których
zostały zaprogramowane. Wstawienie dodatkowej
treści wewnątrz adresu, np. kowalski.usun.to@
gmail.com, nie powinno więc wzbudzać najmniejszych
podejrzeń harvestera. Niestety, ochrona nie jest
tak prosta. Poinstruowanie bota, żeby usuwał większość
często wstawianych słów zajmie najwyżej kilka
linijek kodu. W większości języków obsługujących wyrażenia
regularne będzie to polecenie podobne do takiego:
{stala}s/\”.usun.to\”//g; s/\”.nospam\”//g;{/stala} itd.
– im więcej słów program obsłuży, tym lepiej dla spamera.
Co więcej, nie trzeba wstawiać każdego z podejrzanych
słów ręcznie. Można poinstruować program,
aby znalazł słowa występujące w adresach, do
których nie udało się dostarczyć wiadomości i automatycznie
dodawał je do filtra – w ten sposób harvester
\”nauczy się\”, że nie warto zbierać adresów,
w których występuje ciąg \”usun.to\” i będzie je omijał.
Jest to nieco trudniejsze zadanie, ale również spotykane.
Zwykle jednak spamerzy liczą na ilość adresów
i wystarcza im wbudowana na stałe lista słów, które
są usuwane ze znalezionych adresów.
Inną metodą ochrony jest zamiana znaku małpy
{stala}(@, ang. at){/stala} na frazę {stala}\”[at]\” lub \”-at-\”{/stala}. Oczywiście nie
na wiele się to zda, gdyż wyszukanie takiego ciągu
również nie stanowi problemu: {stala}s/\”-at-\”/\”@\”/g;{/stala}
{stala}s/\”[at]\”/\”@\”/g;{/stala} zamieni podejrzane \”at\” na małpy.
Wydaje się, że dodanie do harvestera reguły dla
każdej kombinacji jest bardzo pracochłonne, jednak
wystarczy wpisać w Google odpowiednie zapytanie
(*-at-gmail.com), żeby zyskać miliony wyników (rys.
2). Trzeba dodać, że spamerzy zawodowo szukający
nowych adresów nie ograniczają się do tak banalnych
zapytań i na pewno wymyślili skuteczniejsze sposoby
na zdobywanie e-maili!
A może bez adresu?
Jak widać, popularne sposoby są mało przydatne.
A gdyby podzielić adres spacjami i zamiast jan.kowalski@
wp.pl wpisać \”jan kowalski at wp pl\”? Skoro Google
potrafi bezbłędnie znaleźć poprawne granice adresu,
to tego samego należy spodziewać się po spamerach.
Niestety, ta metoda jest równie mało skuteczna,
co zamiana znaku@na \”at\” czy \”małpa\”.
Można posłużyć się jeszcze jednym sposobem –
skorzystać z właściwości przeglądarek i znak małpy
(lub cały adres) wstawić w pewien wymyślny sposób.
Przykładem może być użycie JavaScriptu, wstawienie
obrazka z adresem, posłużenie się stylami CSS lub zakodowanie
adresu za pomocą encji HTML (numerów
odpowiadających każdemu ze znaków).
Przykładowe sposoby znajdują się na kolejnej stronie. Niestety, wstawione
w taki sposób adresy wpływają negatywnie na dostępność
– tekstu znajdującego się na obrazku nie
można skopiować, przeglądarki interpretują style CSS
na różne sposoby, nie każdy używa JavaScriptu. Obrazek
z adresem ma jeszcze jedną wadę – aby był zgodny
ze standardem, musi zawierać parametr alt określający,
co się na nim znajduje (wpisanie tam adresu
nie jest najlepszym pomysłem).
Jak widać, popularne maskowanie nie powstrzyma
dobrego harvestera, jednak, jak wskazuje praktyka, proste boty utkną na takim adresie, a ilość spamu
może spaść. Kosztem jest utrudnienie życia osobom,
które chcą się z nami skontaktować – zamiast zwyczajnie
skopiować adres, muszą go przepisać lub pozamieniać
niektóre znaki. Znajdą się też osoby, które
nie zauważą, że z adresem należy coś zrobić i wyślą
wiadomość na kowalski.nospam@gmail.com.
Ukrywanie adresu e-mailowego
Grafika – zamiast wpisywać tekst, można wkleić
grafikę zawierającą e-mail. Niestety, użytkownik
będzie musiał ręcznie przepisać taki adres, gdyż
nie da się go skopiować z obrazka.
CSS – arkusze stylów oferują pseudoklasę \”after\”,
dzięki której można po wybranym elemencie
dodać coś więcej. Aby z niego skorzystać,
w dokumencie HTML wpisujemy np.:
span id=\"adres\">jan.kowalski
a w arkuszu CSS definiujemy styl:
#adres:after{content:\"@wp.pl\"}
Niestety, nie wszystkie przeglądarki są w stanie
to obsłużyć.
Encje – w HTML-u każdy znak można zastąpić
pewnym numerem. Przykładowo, małpę można
zastąpić numerem {html}@{/html} a kropkę – {html}.{/html}.
Przeglądarka wyświetli taki tekst zwyczajnie,
harvester zobaczy numerki. Metoda nie jest zbyt
skuteczna, gdyż boty mogą interpretować encje
tak samo jak przeglądarki.
JavaScript – tu metod jest bardzo dużo, najprostsza
to utworzenie kilku zmiennych zawierających
adres i dodanie ich do treści strony:
Taki adres nie pojawi się jednak u osób mających
wyłączony JS, w dodatku boty również mogą go
odczytać (zajmuje to jednak zbyt dużo czasu). Bardziej
zaawansowane metody to przepisanie tekstu
od końca lub nawet użycie silnej kryptografii.
Podmiana – metoda oparta w całości na tekście
i polegająca na podaniu adresu typu wpisz.cos
@gmail.com z wyraźną adnotacją, co należy
umieścić zamiast \”wpisz.cos\” – niestety, nie każdy
analizuje adresy i mogą się trafić osoby, które
wyślą wiadomość do wpisz.cos@gmail.com
Najlepszą obroną jest atak
Jeśli obrona jest mało skuteczna, należy spamerów zaatakować.
Na początku wspomniałem, że poprawność
domeny (gmail.com, poczta.onet.pl, wp.pl – to, co występuje
po małpie) jest łatwa do sprawdzenia. Dlatego,
jeśli bot wykryje nieistniejącą domenę, to albo zignoruje
taki adres, albo usunie z niego niepoprawne ciągi (kowalski@
usun.to.wp.pl). Trzecia możliwość jest taka, że
adres zostanie dopisany do bazy, aby sztucznie powiększyć
jej wielkość. Tu można postąpić na dwa sposoby.
Specjalnie fałszować nazwę domeny – w tym przypadku
istnieje szansa, że spamerzy nie zaszkodzą nie tylko
nam, ale nawet naszemu dostawcy poczty (nawet emaile
do nieistniejących osób dochodzą do serwera,
zmuszając go do pracy i zwiększając opóźnienia w dostarczaniu
poczty). Drugą możliwością jest podanie po
małpie domeny należącej do spamera (z adnotacją
obok, że należy ją zmienić). Dzięki temu spamerzy zaczną
wysyłać niechciane maile do siebie nawzajem i nawet
jeśli wiadomość utknie na serwerze, to i tak zmusi
go do pracy i spowolni wysyłanie spamu.
Można posunąć się dalej i stworzyć fikcyjną bazę
nieistniejących adresów (najlepiej w domenach, z których
pochodzi spam), którą podsuniemy harvesterom.
Takie projekty istnieją (przykładowo spampoison.com,
antyspam.pl), a ich działanie opiera się na prostej zasadzie.
Na stronie losowo generowane są fikcyjne adresy
opisane imionami i nazwiskami oraz dodatkowymi informacjami,
takimi jak \”forum\”, \”księga gości\” itp. Aby boty
trafiły na taką stronę, wystarczy umieścić do niej odnośnik
na innych witrynach i poczekać. Harvester zbierze adresy,
doda je do bazy, zużyje czas na przetworzenie nowych
informacji (np. wyszukanie duplikatów) i rozesłanie
e-maili na nieistniejące konta na serwerach innych spamerów.
Dzięki skryptom takim jak te umieszczone na
spampoison.com i antyspam.pl proste harvestery powinny
się zablokować – poprzez trafienie w nieskończoną
pętlę stron linkujących do siebie nawzajem lub zapełnienie
bazy adresów. Oczywiście na ominięcie pułapki jest
sposób – wystarczy zablokować dwie domeny, na które
bot ma nie wchodzić. Z antyspam.pl można jednak pobrać
skrypt do umieszczenia na własnej witrynie albo napisać
własny, co nie jest trudne.
Jak widać, walka ze spamem jest zacięta i na każde
posunięcie spamerów wymyślane są nowe sposoby
ochrony.
Jak wysyłany jest e-mail?
Należy dodać, że spamerzy nie wysyłają e-maili, tak
jak są wysyłane typowe wiadomości. Odbywa się to
albo przez własne serwery (wtedy można blokować
spam po domenie czy nakierowywać do niego ruch),
albo korzystają z zainfekowanych komputerów-zombie
należących do nieświadomych użytkowników.
W takim przypadku spamer nie płaci ani za łącze, ani
za moc obliczeniową komputera, gdyż wykorzystywane
są zasoby zarażonych i niczego niepodejrzewających
użytkowników. Sam proces wysyłania wiadomości
również wygląda inaczej niż zwykle. Typowe
serwery (w uproszczeniu) wysyłają wiadomość, czekają
na odpowiedź, analizują ją, i jeśli wiadomość nie
została dostarczona, wysyłają ją ponownie. Aby oszczędzić
czas i zasoby komputera, serwery spamerów
ograniczają się do wysłania wiadomości – nie
czekają na odpowiedź zwrotną, a tym bardziej nie
analizują jej. Dzięki temu możliwe jest zapchanie bazy
spamera fałszywymi adresami.
W sieci pojawiło się wiele skryptów tworzących
fikcyjne adresy tylko w celu utrudnienia życia spamerom.
Jak się wydaje, jest to jedna z niewielu skutecznych
metod zapobiegania spamowi (obok filtrowania
po stronie odbiorcy). Zapychanie baz danych spamerów
nie tylko spowalnia rozsyłanie spamu, ale ma
jeszcze jedną ważną cechę. Załóżmy, że spamer zebrał
100 prawidłowych adresów (zajmie mu to kilkadziesiąt
sekund). Jeśli harvester trafi na podstawioną
witrynę, na której znajduje się kolejne 100 adresów,
jego baza powiększy się dwukrotnie. Dla użytkowników
to bardzo dobrze – gdyby baza zawierała 200
prawdziwych e-maili, zostałyby one wysłane w jednostce
czasu, załóżmy minucie, do 200 użytkowników.
Połowa z tych adresów jest jednak fałszywa,
więc efektywna ilość wysłanych w ciągu minuty wiadomości
zmniejsza się dwukrotnie!
Kto wygra?
Podsumowując, powszechnie stosowane metody \”zaciemniania\”
e-maili, takie jak dodanie ciągu \”usun.to\”
wewnątrz adresu, są nieskuteczne. Taka sama sytuacja
ma miejsce przy adresach ze znakiem @ zamienionym
na \”at\” czy \”małpa\” (kowalski.malpa.wp.pl).
Przy zapisie adresu podzielonego spacjami bot może
mieć problem ze znalezieniem granic adresu (np.
mój adres jan at gmail com), jednak, jak pokazuje
przykład z wynikami wyszukiwania w Google, metoda
ta nie jest w stu procentach skuteczna.
Aby zabezpieczyć się przed spamem, można w niektórych
przypadkach stosować tymczasowe adresy, takie
jak oferowane przez No-Mail.pl, jednak nie zawsze jest
to możliwe, a w dodatku chroni tylko nas. Aby realnie
zmniejszyć ilość spamu w skali całego internetu, można
zapychać bazy danych spamerów fałszywymi adresami
– gdyby więcej osób tworzyło na swoich prywatnych
stronach lub blogach takie adresy, efektywnie wysłana
ilość spamu na pewno by się zmniejszyła.