Včera jsme zaznamenali napadení serveru nevyhazujto.cz. Útočník, jak bývá v těchto případech obvyklé, použil úmyslně nečitelný javascript kód, který po dekódování přidával do stránky tento kód:
<script type="text/javascript">
var now = new Date().getTime();
if (now%7 == 0) {
window.location = "http://bit.ly/1glIErF";
}
</script>
Smysl je jednoduchý: v jednom ze sedmi případů přesměrovat uživatele na adresu https://bitly.com/1glIErF. Z této adresy je pak uživatel přesměrován řetězcem dalších webů, které můžou konečný cíl měnit. V jednom případě jsem skončil na bearshare.com, v druhém na torchbrowser.com s nabídkou ke stažení jejich programů (a téměř určitě bude cílů více). Kdo by za nimi hledal malware, tak bude možná překvapen, alespoň Virustotal je tak nehlásí. Monetizace v tomto případě útočníkovi plyne z affiliate programů daných webů, protože součástí odkazu je i jednoznačný identifikátor, který má útočník zaregistrovaný a sbírá přes něj provize z provedených instalací, uskutečněných nákupů apod.
Díky tomu, že server bit.ly dává jednoduchý přístup ke statistikám (stačí přidat k URL znaménko +), mohl jsem se podívat, jak byl útok úspěšný. Odkaz byl vytvořen 22. 3. a od té doby na něj ve dvou vlnách kliklo 101 019 uživatelů – jednou právě 22. 3. (58 882 kliknutí), podruhé včera (42 079 kliknutí, okolo 7600 za hodinu!). Když například bearshare.com nabízí až 1,25 $ za instalaci, tak stačí čtyři uživatelé za hodinu, kteří nabídku využijí, aby měl útočník tolik, kolik je u nás průměrná hodinová mzda. Po přihlášení šlo vidět i podrobnější statistiky podle HTTP referreru, které dokládaly, že z nevyhazujto.cz přišlo 519 uživatelů, z České republiky pak 1 812, tedy necelá 2 %. Protože útočník odkazy zadával přihlášený, šlo se podívat i na jeho další práci. Z toho, co jsem viděl, se jednalo o další varianty na stejné téma: přesměrování na weby s affiliate programem, nejstarší z listopadu 2013. Daného uživatele jsem tedy nahlásil kontaktní adrese pro tyto účely a bit.ly po třech hodinách daného uživatele zablokovalo – proto ten minulý čas.
Obranou na straně návštěvníka je v tomto případě hlavně vypnutý javascript, alespoň všude, kde není nutně potřeba. Bohužel na zmiňovaném webu se bez něj ani nepřihlásíte.
Vypnutý javascript? Ale no tak :) nemohl „útočník“ místo přidání JS pozměnit meta tag? A to se ještě na RSS CSIRT objeví toto: “
Kolega Jíři Machálek z Labs NIC.CZ popísal v blog postu spôsob napadnutia známej webovej stránky cez úmyselne nečitateľný javascriptový kód. Ochranou proti tomuto druhu útokov je vypnutý javascript.“ To už je trochu moc, nemyslíte? K napadení stránky zcela jistě nedošlo přes výše uvedený kód JS, ten jen něco vykonává (konkrétně přesměrování).
Takže jak k „napadení“ došlo? Zkompromitovaný server? Děravý web? Uhodnuté heslo k FTP?
Meta tag změnit mohl, ale tím by ten web nešel použít vůbec. Trik v tomto případě je ten, že uživatel, který je přesměrován si nejdřív myslí, že špatně napsal adresu a když ji zkusí zadat znovu tak má dobrou šanci, že už mu to vyjde a nebude to řešit.
Už jsem takto napadených webů viděl hodně a nikdy to nebylo přes meta tag – tím neříkám, že to nejde, ale že se to tolik nepoužívá.
V článku jsem vypnutí javascriptu zmiňoval jako obranu na straně návštěvníka. Jak došlo ke kompromitaci serveru je samozřejmě druhá věc, tu jsem neřešil. Dost pravděpodobně něco z toho, co zmiňujete.
J.M. : Vypnutý Javascript je možná prevence pro uživatele, další možností je ad block nebo kombinace greasemonkey se scripty, to chtěli nejspíše říci :). Na druhou stranu nevidím důvod proč by nešel injektovat JS podmínkou je ovšem mnohdy server, takže aby se toto všechno stalo musel být poslán script ke zpracování z útočníkova serveru … ale výpis logu je v tomto případě marný, když je stránka tak populární, pokud ten log ovšem neobsahuje i názvy států, pak by se to dalo filtrovat a odfiltrovat tak český přístup od toho zahraničního vycházíme-li z toho, že útočník není z tuzemska, ale i tak je to jako hledat jehlu v kupce sena, pokud ten zahraniční server najdete většinou se s protistranou na výměně informací stejně nedohodnete. Dneska je tolik možností diagnostiky, že pokud chce útočník server pouze restartovat stačí jeden jediný sken v odpoledních hodinách na vytíženém starém železu :))
Vypnutej JS? Co se pak s tím dá asi tak dnes dělat? Jedině tak číst si novinky.cz, pardon ani to pořádně ne…
Je toho pořád méně, ale zase to není tak, že nefunguje nic. Opravdu nevidím důvod, proč bych měl mít JS zapnutý „by default“ – když vidím, že se něco bez něj neobejde, tak přidám výjimku. Bezpečnostní rizika spojená s JS nejsou zanedbatelná.