V dnešním článku se podíváme na obecné postupy řešení po napadení webu. Konkrétní příklad odstranění napadení si můžeme ukázat někdy příště, ale není to nic zajímavého 🙂 Nejtěžší je vždy napadení najít.
Pokud už jste si jistí, že došlo k napadené webu, je třeba co nejdříve začít jednat.
Krok číslo 1 – Karanténa a prevence
První co byste měli udělat je odstavit kompletně web. Zabráníte tak dalšímu šíření nákazy, zneužití serverových zdrojů a také ochráníte případné návštěvníky.
Zvolit byste měli metodu v závislosti na předpokládané délce řešení problému.
- Zakázaní přístupu na web pomocí .htaccess – nejčastěji používaná metoda u sdílených webhostingů. Prostě povolíte přístup jen své IP adrese.
- Vypnutí webserveru – pokud máte web na VPS je to snadné a rychlé.
- Nasměřování záznamů v DNS jinam (statická stránka, záložní web atd.) – Tuto metod je třeba kombinovat s jednou z předchozích (DNS záznamy si zařízení ukládají do cache). Držet uživatele v nevědomosti je zvláště u služeb neprofesionální.
Jestliže web používá nějaké API, včetně hesel, pro komunikaci s třetí stranou a klíče/hesla se nachází v databází, ke které se mohl dostat útočník, tak je třeba všechna hesla/klíče ihned změnit.
Nejčastěji se jedná o:
- Externí úložiště kam se nahrávají zálohy
- Nástroje pro publikování obsahu na sociálních sítích
- Nástroje třetí strany pro rozesílání hromadné pošty
Zároveň je třeba prověřit jestli už nedošlo k jejich zneužití. Ideální jsou k tomu logy.
Krok číslo 2 – Komunikace
Pokud jste obdrželi varování z hostingu o napadení webu, je třeba ihned po jeho vypnutí odpovědět, že na tom pracujete a jaká jste už podnikli kroky (vypnutí webu). Tohle je důležité, protože váš web mohou kompletně vypnout za vás a pak může být problém při jeho čistění. Některé úkony se dají dělat přes internetový prohlížeč, což vyžaduje aby webhosting nebyl vypnutý.
Hosting vám také nepsal jen tak, museli to nějak zjistit. Třeba na základě nějakých logů (co útočilo a kam). Tohle vše vám může pomoct s hledáním napadení – ušetřit hodiny práce. Stáčí je o to jen požádat.
Dále byste měli informovat vaše uživatele. Stačí krátká zpráva na sociální sítě, že řešíte technické problémy a web bude určitou dobu nedostupný.
Krok číslo 3 – Zálohování
Před jakýmkoliv zásahem do webu proveďte manuální zálohu souborů a databáze. Pozor na adresáře sloužící pro cachování. Mohou obsahovat tisíce malých souborů, které trvá dlouhou dobu stáhnout. Na to nemáte čas.
K zálohování byste neměli používat nástroje, které jsou součástí webu. Útočník mohl změnit v konfiguraci místo kam zálohujte na nějaké vlastní.
Krok číslo 4 – Identifikace napadených souborů
V podstatě jsou tři nejčastěji používané metody na hledání napadení.
První z nich je hledání podezřelých řetězců ve všech souborech, kde by se mohly skrývat. Nejčastěji je škodlivý kód skryt pomocí base64. Stačí tedy hledat v PHP skriptech funkci base64_decode
Druhá je porovnávání zazálohovaných anebo instalačních souborů s těmi na webu. Srovnává se většinou velikost a datum poslední úpravy.
Třetí předpokládá, že k napadené soubory se liší datem poslední úpravy. V podstatě odstraníte z disku všechny nepotřebné a dočasné soubory (hlavně cache) a následně si seřadíte všechny soubory napříč adresáři podle data a času poslední úpravy.
Najdete ten, který byl pozměněný, a pak ve stejném období hledáte další upravené soubory. Většinou jsou to 2 – 3 soubory, které vybočují. Ty obsahují škodlivý kód. V některých případech mohl útočník přepsat větší množství souborů (vložit do nich škodlivý kód “na tvrdo”). I toto poznáte podle data a času úpravy. Jednoduše hledejte pozměněné soubory mimo dobu aktualizace.
Podle doporučení společnosti Sucuri, která se zabývá ochranou webů, byste měli hledat podezřelou aktivitu v rozmezí 7 – 30 dní. Z mých osobních zkušenosti s napadením WordPress, se napadení projevilo do 24 hodin. Je to tedy individuální záležitost.
Setkal jsem se také s „napadením“, kdy útočník zřejmě přes XSS, vložil svůj kód do stránky a ta se nacachovala. Následně se pak „napadení“ zobrazovalo všem, dokud cache nebyla vymazána. Naštěstí „napadení“ se projevilo jen rozbitou stránkou. Stačilo smazat cache a bylo po všem.
Krok číslo 5 – Obnova anebo čištění?
V současné době se nejčastěji řeší napadení webu poslední funkční zálohou. Data co se mění jsou většinou v databázi. Ta se běžně zálohuje každých 24 hodin. Soubory se většinou moc nemění a nahrát chybějící nebývá problém. Nová data je také možné dostat tím, že si stáhnete napadenou verzi a vytáhnete z ní co potřebujte.
Pokud se vám v předchozím kroku podařilo zjistit čas napadení. Můžete zkusit nahrát poslední funkční před napadením. Je však nutné nic neponechat náhodě a opravdu všechno na hostingu pocitově smazat. Přepsání souborů není dobrý nápad, protože někde může být vytvořený samostatný soubor jako backdoor, přes který útočník provede znovu úspěšný útok. Velmi snadno se dá přehlédnout.
Zálohu je také třeba poctivě projít, jestli se v ní neskrývá backdoor. K úspěšnému útoku totiž mohlo dojít před mnoha týdny a útočník čekal na vhodnou příležitost. Nebývá to obvyklé, ale možné to je.
Nenahrávejte ze zálohy nic co není potřeba. Například jádro redakčního systému je možné stáhnout ze stránek vývojářů.
Čištění je náročný a zdlouhavý proces, který vyžaduje dohledání všech napadených souborů a odstranění škodlivého kódu. Nic nesmíte přehlédnout!
Krok číslo 6 – aktualizace a posílení ochrany
Jakmile dokončíte čistění je načase provést aktualizaci všeho, na co jste dříve zapomněli – jádro, rozšíření, šablony a všech dalších skriptů. Projděte si také data aktualizace, pokud k něčemu nevyšla aktualizace už delší dobu může se jednat o bezpečnostní riziko.
Ideální je vědět, jak vlastně byl váš web napaden. Pokud to nevíte, tak se to kdykoliv může opakovat. Proto je třeba posílit ochranu. Vyplatí se nasadit nějakou formu WAF (Web application firewall). Některé CDN také nabízejí filtrování škodlivého provozu.
Krok číslo 7 – Změna hesel a kontrola uživatelů
Většina redakčních systémů jednosměrně šifruje hesla, tak aby se už nedali rozšifrovat. Takže i když uživatel používá heslo i jinde, tak jej útočník nemůže zneužít.
I zašifrovaná hesla se dají přepsat. Takže útočníci mohli některým uživatelům přepsat hesla, aby stále měli přístup k jejich uživatelským účtům. Proto byste měli zvážit, že všem uživatelům resetujete hesla.
Změnit byste měli také hesla a klíče všude, kam se váš web připojoval.
U napadení WordPresse a jiných redakčních systémů, je běžnou praxí po úspěšném útoku vytvořit nového uživatele s administrátorským oprávněním. Na rozdíl od pozměněných souborů, se takovýto nový účet může snadno schovat mezi stovky dalších. Proto projděte uživatelské účty zdali se tam nenachází nějaký nový s příliš vysokým oprávněním.
Krok číslo 8 – spuštění webu
Pokud je vše vyčištěno, uživatelské účty zabezpečené, tak nastal čas web znovu spustit. Osobně doporučuji bedlivě kontrolovat provoz na webu po několik dnů. Zapněte access a error log a procházejte logy. Hledejte podezřelá volání a řetězce. Pokud jste nasadili WAF, tak by měl takové pokusy také zachytit a zablokovat. Na druhou stranu když zjistíte, co se kam snaží připojit, tak budete vědět, jestli jste doopravdy všechno vyčistili správně.
Krok číslo 9 – Informace pro uživatele
Pokud se útočník mohl dostat do databáze a získat osobní data uživatelů, což je třeba email musíte o tom uživatele informovat. Jednak je to slušnost a také vaše povinnost podle evropské směrnice GDPR.
Další díly
- Ebola kupóny - Slevové kupóny na webhosting Ebola.cz