Ofensywna walka ze spamem
Za cenne uwagi dziękuję Darkowi, Szymonowi, Krzyśkowi, Bartkowi i Marcinowi.
Wszystkie metody opisane na poprzedniej stronie ,
to defensywne formy walki ze spamem - czyli reakcje na spam jaki już otrzymałeś.
Istnieją jednak również metody walki ofensywnej, czyli utrudnianie życia spamerom
jeszcze zanim ich spam do Ciebie dotrze.
Najczęściej wykorzystywaną przez spamerów metodą zdobywania adresów mailowych
jest skanowanie po kolei stron www i wpisywanie do bazy wszystkich znalezionych
w Internecie adresów mailowych (o tym jak się przed tą praktyką bronić pisałem na
stronie obrona ).
Zatem jedną z metod walki ze spamem jest podsuwanie spamerom do wykorzystania specjalnie
spreparowanych adresów mailowych, przy czym można tu wyróżnić 2 metody: pułapki i fałszywe adresy.
Pułapki antyspamowe
Zasada działania pułapki antyspamowej (spamtrapa) jest banalnie prosta: podsunąć robotowi skanującemu
Internet adres mailowy, który będzie tak ukryty w kodzie, by nie został zobaczony przez
człowieka oglądającego stronę www. Każdy mail przysłany na ten adres będzie automatycznie
przekierowywany - nawet bez udziału człowieka (admina lub właściciela strony) - do listy
blokującej pocztę z określonego serwera lub od określonego nadawcy. Do takiego przekierowywania
można wykorzystać np. procmail'a , a pocztę ze spamtrapa forwardować
do jakiegoś RBL'a![[nospam-pl.net] [nospam-pl.net]](/img/ns_12.gif)
Dlaczego ? Ano dlatego, że żaden człowiek nie miał ani możliwości, ani powodu by na
ten adres przysyłać e-mail, a więc musiał to być spam wysłany na podstawie skanowania Internetu.
Nie będę na razie tłumaczył jak zrobić pułapkę - jeśli masz pewną wiedzę o pisaniu stron www,
sam sobie z tym poradzisz. Może zresztą za jakiś czas na ten temat też napiszę jakiś artykuł.
Połączenie pułapki ze skryptem umożliwiającym kontakt e-mailowy
Jak pułapka może umozliwić kontakt ? A jednak... może ;-)
- Zakładasz sobie spamtrap, np. pulapka_na_kretynow@wp.pl. Jeszcze lepiej,
jeśli ten spamtrap, to konto nad którym masz większą kontrolę - np. na Twoim serwerze.
- Na swoim serwerze www umieszczasz plik o nazwie takiej jak ten spamtrap. Zgadza się, ten plik ma
nazwę z '@' w środku. Końcowka .pl - jak można się domyśleć - oznacza, że jest to skrypt w perlu.
- Nazwa tego skryptu może być dowolna, byle wyglądała jak e-mail - ale w takim wypadku w konfiguracji
serwera trzeba ustawić, by był on traktowany jak sprypt perla, pythona, php - czy też inny.
- W zależonści od tego, w jakim języku jest skrypt, ma on zawartość podobną do :
Wersja w PHP - przykład
<?php header ("Location: mailto:moj_prawdziwy_adres@domena.pl"); ?>
Wersja w Perlu - przykład
#!/usr/bin/perl
print "Location: mailto:moj_prawdziwy_adres\@domena.pl\r\n\r\n";
Wersja w Pythonie - przykład
#!/usr/bin/python
print "Location: mailto:moj_prawdziwy_adres@domena.pl\r\n\r\n";
Oczywiście, zamiast moj_prawdziwy_adres@domena.pl musisz wpisać swój adres oraz sprawdzić,
czy biblioteki perl i python są na Twoim serwerze w takim miajscu, jak wpisano w przykładzie.
Ważne również, by na początku skryptu nie było zbędnych spacji albo znaków nowej linii.
- W kodzie strony umieszczasz swoj adres w postaci podobnej do:
<a href="pulapka_na_kretynow@wp.pl">napisz do mnie</a>. Uwaga - to nie jest mój adres. Kliknij
w link aby poznać prawdziwy. Nigdy nie wysyłaj e-maila na adres jaki widać na stronie.
Zwróć uwagę na brak mailto:. Bardzo ważne jest również poinformowanie, że należy
kliknąć, ponieważ w niektórych przeglądarkach www (np. tekstowych) ten adres może być widoczny, a
zatem ktoś mógłby chcieć wysłać list na ten adres e-mailowy.
- Harvester zobaczy adres spamtrapa i wpisze go do swojej bazy. Ktoś, kto będzie chciał do nas
wysłać maila, kliknie na link, a wtedy skrypt prześle mu nagłówki, wywyłujące jego program mailowy
z naszym właściwym adresem.
- Całą pocztę, która przychodzić zacznie na adres spamtrapa automatycznie forwardujemy do swoich
i cudzych list antyspamowych
, a pocztę na nasz prawdziwy adres czytamy :-)
Opisana metoda będzie działać pod warunkiem, że harvester nie umie czytać nagłówków HTTP.
Prawdę mówiąc, nie wiem czy któryś harvester to umie, ale mogą się tego w przyszłości nauczyć.
Ponadto, skrypt nie musi mieć mylącej nazwy - w takim wypadku ostrzeżenie o tym, że jego
nazwa nie jest adresem e-mailowym będzie zbędne.
Fałszywe adresy mailowe
Co się jednak stanie, jeśli automat zamiast rzeczywistego adresu mailowego
znajdzie adres nieistniejący ? Jeśli adres ten będzie pochodził z nieistniejącej
domeny - to nie uda mu się spamu wysłać i spamer zapcha sobie pasmo transmisyjne zwrotami
z serwera SMTP. Jeśli adres zostanie wysłany na fałszywe konto na istniejącym
serwerze - spam albo zostanie zwrócony do spamera (jeśli podał prawdziwy adres nadawcy)
albo trafi na konto administratora któregoś z serwerów który brał udział w
rozsyłaniu spamu - co oczywiści skończy się zablokowaniem spamerowi dostępu do
tego serwera.
Zatem metodą na zniechęcenie spamerów do wysyłania e-maili na zeskanowane adresy jest
wypełnienie baz adresowych możliwie dużą ilością fałszywych adresów. Oczywiście, aby
takie fałszywe adresy zostały znalezione na stronie www, trzeba je jakoś wygenerować,
przy czym generowanie pojedynczych adresów nie ma większego sensu, bowiem zginą one
wśród rzeczywistych adresów zeskanowanych z innych stron. Zatem warto napisać program,
który będzie takie adresy generował - jednym z takich programów jest
WPoison, który można sobie zainstalować
na swoim serwerze (program napisany w Perlu), można też napisać własny program, który
będzie miał tę przewagę, że może działać trochę inaczej od WPoison'a , co utrudni jego
identyfikację przez spamerskie "harvestery"[1].
Generator fałszywych e-maili
Tak, mam oczywiście mój, działający, generator fałszywych adresów i może nawet go
udostępnię, Zanim jednak to zrobię, musiałbym nad nim jeszcze trochę popracować. Krótko
jednak go opiszę - jako wskazówkę dla każdego, kto chciałby napisać własny generator.
W ogólności kierowałem się pomysłem i zasadami zaczerpniętymi z WPoison - tyle tylko,
ze WPoison nie odpowiadał mi z kilku względów, więc napisałem coś po swojemu.
- Sens istnienia generatora polega na wypełnieniu baz adresowych
spamerów bezsensownymi, nieistniejącymi adresami, a także adresami
innych spamerów - obniżając w ten sposób wartość użytkową takich baz,
ponieważ skrypt ten może wygenerować "nieskończoną" ilość fałszywych e-maili.
- Generator e-maili jest tak skonstruowany, by robot nie wiedział, że skanuje strony
wygenerowane dynamicznie - a więc strony mają taki adres jak zwykłe statyczne strony
www (żadnych "?","&", ";", "=" itp.). Napisanie skryptu w taki sposób wymaga nieco
specyficznego podejścia, ale zazwyczaj nie jest trudne.
- Skrypt angażuje czas robota (co utrudnia mu skuteczne skanowanie Internetu), ponieważ
jest napisany w taki sposób, aby przez ponad 90% czasu ładowania kolejnych stron, skrypt ich
nie generował, zmuszając robota do czekania (i zapobiegając przeciążeniu serwera na
którym skrypt działa).
- Jeśli spamerzy będą wysyłali maile na tak wygenerowane adresy - zostaną one albo zwrócone
do nich, albo przesłane do admina któregoś z zaangażowanych serwerów, co może spowodować:
- wypełnienie spamerom skrzynek zwrotami (heh, mało prawdopodobne);
- zwrócenie uwagi admina domeny z której wysyłają, że ma wśród klientów spamera;
- zwrócenie uwagi admina serwera docelowego spamu na spamera i zablokowanie go;
- zwrócenie na spamera uwagi admina serwera ralay'ującego spam.
- Istnienie w sieci tego typu generatorów spowoduje, że spamerzy
korzystający z hervesterów będą mieli cięższe życie, albo być może wręcz
firmy zajmujące się bezmyślnym zbieraniem adresów z Internetu
zostaną wypchnięte z rynku, bo koszt "czyszczenia" takiej bazy z
fałszywych adresów będzie większy od wartości samej bazy.
- Klient - firma która kupiła tak zanieczyszczona bazę raczej zażąda zwrotu
pieniędzy od sprzedawcy niż jeszcze raz kupi podobną bazę - zwłaszcza, jeśli
w swej naiwności poda w spamie prawdziwy adres zwrotny.
- Odnośniki do skryptu generatora znajdują się wyłącznie na stronach www
zaopatrzonych w meta tag języka HTML <META name="robots" content="index, nofollow">,
zaś każda z wygenerowanych stron ma tag <META name="robots" content="noindex, nofollow">
- czyli nie powinny na nią trafić żadne roboty, które przestrzegają
standardowych reguł wykluczających
.
Ponadto, odnośniki owe mają taką postać, by człowiekowi nie przyszło
raczej do głowy ich kliknięcie.
Zastosowanie tagów "noindex, nofollow", lub odpowiednich wpisów w pliku
robots.txt zabezpiecza
generowane strony przed skanowaniem ich przez "uczciwe" crawlery[2]. Natomiast
jeśli spamerzy nauczą się, że nie warto skanować oznaczonych w ten sposób
stron - będzie można przy pomocy tych tagów zabezpieczać przed
skanowaniem swój adres mailowy: człowiekowi nie przeszkodzi to
w odczytaniu adresu, a harvester w stronę nie wdepnie.
Już to byłoby "małym zwycięstwem" nad spamerami, ponieważ
zastosowanie tych tagów zabezpieczy przed skanowaniem nie tylko
użytkownika danego generatora, ale każdego, kto zechce w ten sposób
chronić swój adres mailowy.
Dodatkowo, w przypadku "gości" przychodzących z adresów IP znanych jako
spamerskie, można zastosować odwrotny zapis: <META name="robots" content="index, follow">
- właśnie po to, by taki spamerski robot ugrzązł w losowo generowanych stronach www :->.
- IP każdego "gościa" jest odnotowywane w logu, co umożliwia jego
późniejsze dopisanie do host_deny lub listy adresów z których poczta
jest automatycznie blokowana.
- Idealną metodą jest wplecenie pomiędzy tak wygenerowane adresy jakiejś pułapki antyspamowej,
specjalnie spreparowanej: wygenerowanej tylko raz i zapamiętanej wraz z danymi zebranymi
podczas generowania strony - pozwoli to dokładniej zidentyfikować ewentualnego nadawcę spamu
na ten adres i powiązać go z konkretnym robotem.
- Warte rozważenia jest również wplecenie pomiędzy fałszywe adresy - adresów
rzeczywistych spamerów. Uwaga - może to jednak budzić wątpliwości natury prawnej.
- Warto zadbać o to, by określona losowo wygenerowana strona www (mająca losowy adres)
zawsze prezentowała podobną zawartość - można to zrobić poprzez zainicjowanie funkcji
losowej adresem strony. Warto to zrobić dlatego, że automat skanujący może porównać
stronę o danym adresie pokazaną w 2 kolejnych odsłonach (lub po jakimś czasie) - jeśli
będą zbyt drastyczne różnice, zostanie to zidentyfikowane jako "podpucha".
Metoda "bannerowa"
Jeśli masz swój generator fałszywych e-maili, możesz go wykorzystać w jeszcze jeden sposób.
W końcu prawie każdy webmaster ma do wyświetlenia jakieś bannery. Część z tego to
programy wymiany bannerów, wyświetlanych na grubych setkach czy tysiącach różnych stron.
W każdej wymianie bannerów są potrzebne jakieś "zapchajdziury" - najczęściej się je używa
na autopromocję, ale autopromocja w wymiarze setek i tysięcy własnych bannerów we własnej
witrynie, co miesiąc, nie ma chyba większego sensu...
A przecież wystarczy włączyć do systemu kilka bannerów o niskim priorytecie, w których
obrazek będzie małym, niewidocznym gifem, a adres docelowy pobierany z generatora :-D.
Generator musi być oczywiście napisany w taki sposób, by generował odnośnik do bannera
w postaci mailto:falszywy_email@jakas_domena.
Zwykłe generatory prędzej czy później będą omijane przez harvestery - jeśli właściciel
danego spam-bota zorientuje się, że został "wpuszczony w maliny", może tak przekonfigurować
robota, by ten więcej nie wszedł na daną stronę. Dla właściciela danej witryny zysk może być
taki, że cała witryna zostanie całkowicie pominięta przy skanowaniu. Gdyby jednak więcej
webmasterów zastosowało "metodę bannerową" - harvestery będą ugotowane, bo nie będą w stanie
przewidzieć na której stronie trafią na fałszywy adres e-mailowy :->.
Generatory fałszywych adresów
- Wpoison
- skrypt w Perlu,
autor Ronald F. Guilmette
- Sugarplum -- spam poison
- kombinacja
skryptu w Perlu + Apache mod_rewrite, program na licencji GPL. Poza bzdurnymi
takstami na wygenerowanych stronach, wyglądają one bardzo realistyczne, i - co chyba ważne -
przy kolejnych odsłonach są identyczne. Autor: Devin Carraway
- blackflag.cgi
- skrypt w Perlu, w/g jego
twórcy podobny, lecz lepszy od Wpoison, ponieważ generuje strony bardziej podobne do prawdziwych,
generuje więcej adresów w bardziej nieprawdopodobnych domenach (co IMHO wcale nie musi
być zaletą), może używać wielu nazw domen (hostowanych na tym samym serwerze, co jest zaletą),
oraz lepiej zabezpiecza uczciwe crawlery przed indeksowaniem wygenerowanych stron. Wada: kolejne
strony wygenerowane pod tym samym adresem mają różną zawartość. Autor: Erik Schorr
- spam_the_spammers
- prosty skrypt w Pythonie, autor: caffeine.
- Trap for Spammer Robots
- prosty skrypt w Perlu, autor: Bruno Wolff III
- Spambait
- skrypt w Perlu, instrukcja do własnoręcznego napisania ;-); Skrypt używa
rzeczywistych domen i loginów (wedle uznania). Autor: Aaron W.
- Cliff's SpamBot Killer
- skrypt w Perlu, ale demo coś nie mi chce działać (albo host ma blokadę na moje IP).
- makemail.f
- skrypt w Fortranie, generujący statyczne strony html; autor Michael Brown (1997)
Przypisy
[1] Nazwa "harvester", (żniwiarka) przylgnęła
już do spam-botów zbierających adresy mailowe, choć jest wyjątkowo niezręczna. Żniwiarz
bowiem zbiera to, co sam posiał i pielęgnował - zaś spamer używa spam-bota do tego,
by "żąć, czego nie posiał"...
[2] Jedną z list hostów, które nie przestrzegają
standardowych reguł wykluczających można znaleźć w SPEWS
(z tym, ze ta lista dotyczy robotów nie przestrzagających wpisów w robots.txt).
Odnośniki
Poprzednie strony:
Metody defensywne »
Walka ze spamem - przez tłumaczenie co to jest spam »
|