Krótkie nawiązanie do poprzedniego wpisu. Trochę dlatego, że pojawiło się kilka komentarzy, a i nowy egzemplarz spamu również w filtrach się zatrzymał.
Ciekawy(?) spam II
Może najpierw kilka słów o tym, jak spam ten konkretnie(j) wygląda. Jest to długi tekst, pojedynczy komentarz zawiera ponad 7000 znaków (ponad 900 słów). Rozie pytał się, czy w treści jest dużo linków - nie, w takiej treści znajduję tylko 5 razy adres strony, która prawdopodobnie jest reklamowana. W pobliżu tego adresu znajdują się słowa kluczowe, na które prawdopodobnie "atakujący" chcą się pozycjonować. Zaskakująco(?) jest to prawdopodobnie fraza pozycjonowanie (stron) w google. Samo pozycjonowanie chyba nie wychodzi najlepiej, jeśli ktoś chce sprawdzić - proszę bardzo: ZnJlY3BlbnNnLmN5 (base64, rot13). Ta strona nie pojawia się wysoko na liście wyników dla wspomnianej frazy.
W kilku komentarzach pojawiało się przypuszczenie, że treść "komentarza" może być wynikiem pracy translatora. Raczej na pewno tak nie jest. Świadczy o tym choćby taka fraza:
Gorala ZAGoRZANINA, ktorego przedwczesna smierc okryla smutkiem takze rodzinnej MSZANIE DOLNEJ, znajduje sie. (...)
Mam poważne wątpliwości czy w anglojęzycznych tekstach pojawiają się tak bardzo "lokalne" dla naszego regionu słowa i nazwy miejscowości. Poza tym za naszym krajowym pochodzeniem tego spamu przemawia również to, kto w ten sposób się reklamuje (patrz wyżej - adres).
Swoją drogą sam pomysł użycia translatora jest dość sprytny. Konkretnie chodzi mi o to, że bot teoretycznie może operować na pewnej bazie tekstów, z których generuje w miarę unikalny komentarz. By zwiększyć swoje szanse powodzenia może jednak przed wysłaniem komentarza najpierw rozpoznać język właściwy dla danego miejsca (np. forum, bloga), przygotowany tekst automatycznie przetłumaczyć na właściwy język i dopiero w takiej postaci wysłać. Choć z drugiej strony być może skuteczniejszą techniką byłoby użycie innych komentarzy i tekstów z atakowanego forum do wygenerowania komentarza. Jeśli jest stosowany jakiś mechanizm statystyczny do klasyfikacji komentarza jako spam/nie spam, to występujące w opublikowanych komentarzach wyrazy/frazy są prawdopodobnie uważane za "czyste". Zresztą mimikra (zwłaszcza kukułka mi tutaj pasuje) mogłaby być dalej posunięta, choćby w zakresie długości treści komentarza.
Jak wytłumaczyć brak polskich znaków? Wydaje mi się, że jest to zabieg celowy - tu dodatkową wskazówką mogą być małe litery występujące w miejscu polskich znaków w tych wyrazach, które są pisane wielkimi literami. Cytowany wyżej fragment nie jest odosobniony, inny przykład:
(...) pare Jego pierwszych ksiazek. ZAKOnCZENIE Pod koniec 1987 r. pare Jego pierwszych ksiazek. (...)
W sumie nie wiem dlaczego z polskiego tekstu usuwać polskie znaki, skoro spam jest adresowane na polskie strony i pod polskie ofiary. Odwieczny problem z różnymi kodowaniami naszych narodowych krzaczków? A może upośledzenie narzędzi spamujących?
Najprawdopodobniej wynikowy tekst "komentarza" jest generowany na podstawie bazy tekstów w języku polskim. Sam algorytm może być zbliżony do tego, o którym wspominał k4. Tekst nie musi być sensowny, nie jest przeznaczony dla człowieka. Jego celem jest zapewne oszukanie automatycznych filtrów (wspominałem o filtrach bayesowskich). W moim akurat przypadku wszystkie(?) przypadki zostały prawidłowo zakwalifikowane jako wymagające sprawdzenia, więc ta taktyka nie sprawdza się do końca skutecznie. Sama technika nie jest zresztą żadną nowością, wrzucanie w treść starego dobrego mailowego spamu dużej ilości "neutralnego" tekstu jest przecież stosowane od dawna.
W poprzednim wpisie zastanawiałem się nad ewentualną skutecznością użycia przy ocenie wiadomości kryteriów związanych z ortografią i gramatyką. Może nawet nie trzeba wchodzić na tak wysokie poziomy (zwłaszcza w tym drugim przypadku), ale wystarczającym podejściem będzie oparcie się na statystyce? Dla jasności - nie chodzi mi o projektowanie systemu do wychwytywania spamu, raczej po prostu zastanawiam się, czy w przypadku tej konkretnej techniki stosowanej przez spamerów prosta statystyka dotycząca, na przykład, prawdopodobieństwa wystąpienia w prawidłowym tekście określonych fraz składających się z dwóch lub trzech wyrazów, byłaby skuteczna. A jeśli tak, to w jakim stopniu. I jak na skuteczność wpłynęłoby uwzględnienie polskiej fleksji.
P.S. Jeśli ktoś chce zobaczyć jak w całości wyglądają te komentarze, proponuję poszukać po podanym adresie reklamowanej, tfu, "firmy".
Co do pomysłu sprawdzania gramatyki i ortografii, to myślę, że byłby to nie tyle system antyspamowy, co system badający jakość komentarzy ;>. Wiele firm stawia na ilość (bo gdzie więcej użytkowników, tym większy przepływ pieniędzy), a to znaczy, że oznaczanie jako potencjalny spam komentarzy, które są gramatycznie i ortograficznie niepoprawne raczej ich nie zadowoli (a przykładów na to, ile ludzi w Sieci pisze tak, jakby nigdy nie mieli styczności ze słownikiem, chyba podawać nie trzeba).
Natomiast sprawdzanie "prawdopodobieństwa wystąpienia w prawidłowym tekście określonych fraz" i fleksji wydają się ciekawe. Chociaż odnośnie tego pierwszego bardziej skłonny byłbym pójść raczej w kierunku badania szyku zdania. Zwłaszcza, że analizę szyku zdania dałoby się rozszerzyć również dla innych języków.
Jest tylko jedno "ale". Bardzo dokładna analiza komentarzy spowoduje, że spambotom nie będzie opłacało się generowanie tekstu. Będą go po prostu pobierały z już istniejących stron (zresztą, zastanawiam się, dlaczego już teraz tego nie robią – a przynajmniej nie robią na masową skalę). Algorytm byłby stosunkowo prosty. Pobieranie ze strony, (którą chcą zaspamować) słów ustawionych w meta keywords, czy też nawet tagów wpisów. Następnie wyszukiwanie (chociażby za pomocą Google) podobnych tematycznie stron (keywords i tagi mają). Następnie z wyszukanych stron pobranie po kilka zdań i sklejenie ich w całość (co daje unikalny tekst, a także omija większości potencjalnych filtrów badających fleksję, gramatykę, czy też szyk zdania). Mało tego, nawet gdyby udało się stworzyć filtr badający kontekst, to i tak takim botom udałoby się go ominąć.