Backdoor na napadeném webu často nevypadá jako soubor s názvem hacked.php. Útočníci mu raději dají důvěryhodně působící jméno a schovají jej mezi soubory jádra Joomla nebo WordPressu. Nová kontrola Impostor Files od služby mySites.guru proto porovnává obsah systémových složek s přesným seznamem souborů, které obsahoval oficiální instalační balíček dané verze CMS.

BEZPEČNOST JOOMLA A WORDPRESS

Co jsou „impostor files“

Jde o soubory umístěné ve složce spravované jádrem redakčního systému, které však samotné jádro nikdy nedodalo. Mohou být zcela legitimní – například je vytvořil instalátor, cache nebo starší aktualizace – ale mohou také představovat webshell, backdoor, spamovací skript či nástroj pro další nahrávání souborů.

Nejdůležitější pravidlo

Nález neznámého souboru není automaticky důkazem napadení. Je to důvod soubor prověřit, porovnat s čistou instalací a zkontrolovat jeho obsah, původ i datum změny. Podezřelé soubory nemažte naslepo.

Jak kontrola funguje

Každé vydání Joomla a WordPressu obsahuje pevně danou sadu souborů. Audit mySites.guru zná seznam i kontrolní součty souborů pro konkrétní verzi webu a porovnává je s reálným obsahem serveru.

Kontrola se ptá na jednoduchou věc: Je tento soubor ve složce, kterou vlastní jádro, přestože jej oficiální balíček nikdy neobsahoval? Díky tomu výrazně zkrátí seznam k ruční kontrole. Běžná kontrola všech souborů mimo jádro může na typickém webu vrátit desítky tisíc položek, protože vlastní soubory přidávají šablony, pluginy, rozšíření i média.

Příklad z Joomla: soubor, který vypadá správně

Podle původního článku obsahuje Joomla 6.1.3 přímo ve složce /administrator/ pouze soubor index.php. Jakýkoli další soubor vložený přímo do této složky proto zaslouží kontrolu.

Ještě obtížnější je orientace hluboko v knihovnách systému. Soubor může mít důvěryhodný název podobný okolním třídám, běžnou velikost a stejné datum změny jako ostatní položky. Pouhý pohled do správce souborů proto nestačí. Rozhodující je manifest konkrétní verze Joomla, který ukáže, zda daná cesta opravdu patří do distribučního balíčku.

Běžné legitimní nálezy v Joomla

autoload_psr4.php

Soubor v /administrator/cache/ vytváří Joomla při běhu webu a obnovuje jej po instalaci nebo aktualizaci rozšíření.

restore_finalisation.php

Může zůstat po starší aktualizaci Joomla. Protože však jde o spustitelný PHP soubor, je vhodné ověřit jeho obsah.

configuration.php

Instalátor jej vytvoří z distribučního souboru configuration.php-dist, a proto v oficiálním balíčku pod výsledným názvem není.

.htaccess a .htpasswd

Mohou být součástí legitimního zabezpečení administrace, například při ochraně složky dalším heslem.

Proč sledovat hlavně spustitelné soubory

Nejvyšší prioritu mají soubory, které server může spustit: například .php, .phtml, .phar, .inc nebo méně obvyklé varianty přípon. Ani zde však zdravý web nemusí ukazovat nulu. Joomla i WordPress si některé soubory za provozu vytvářejí samy.

mySites.guru proto nabízí filtrování obrázků, jazykových souborů, médií, cache, logů, konfiguračních souborů, starších index.html a dalších běžných položek. Režim Quiet view odstraní většinu šumu, ale ponechá spustitelné soubory k ruční kontrole.

Doporučený postup kontroly

  1. Začněte filtrem Executables only.
  2. Ověřte každou cestu proti čistému balíčku stejné verze CMS.
  3. Zkontrolujte obsah, vlastníka, oprávnění a čas změny souboru.
  4. Porovnejte nález s logy serveru a změnami mezi audity.
  5. Při podezření vytvořte kopii pro analýzu a teprve potom web čistěte.

WordPress umožňuje přísnější kontrolu

U WordPressu jsou stromy /wp-admin/ a /wp-includes/ vyhrazené jádru. Pluginy ani šablony do nich běžně zapisovat nemají, takže lze kontrolovat celý jejich obsah rekurzivně. Praktickou alternativou pro jeden web se SSH přístupem je příkaz wp core verify-checksums, který porovná soubory s kontrolními součty WordPress.org.

U Joomla nelze stejnou logiku použít na celý strom /administrator/, protože legitimní komponenty ukládají soubory například do /administrator/components/. Kontrola je proto užší a musí se kombinovat s dalšími testy.

Co tato kontrola sama neodhalí

Útočník může vytvořit úplně novou podsložku, která v manifestu jádra neexistuje. Na Joomla proto samostatný test Impostor Files nemusí zachytit například soubor uložený v útočníkem vytvořené cestě. Stejně tak upravený existující soubor jádra patří do jiné kategorie – odhaluje jej kontrola integrity podle kontrolního součtu.

Kompletní audit musí spojit více pohledů: neznámé soubory, změněné soubory jádra, podezřelé vzory v kódu, skryté složky, dvojité přípony, PHP v adresářích s obrázky, schopnost odesílat e-maily nebo nahrávat další soubory a změny mezi jednotlivými audity.

Kde kontrolu najdete v mySites.guru

Funkce je v auditu jednotlivého webu v části Hacked? pod názvem Check Core Folders For Impostor Files pro Joomla a Check Core WordPress Folders For Impostor Files pro WordPress. Spouští se při dalším auditu bez dalšího nastavování.

Podrobný popis, statistiky a ukázky najdete v původním anglickém článku Impostor Files: How to find every file in a core folder that core never shipped na webu mySites.guru.

Co dělat při podezřelém nálezu

  1. Web hned zazálohujte včetně databáze, logů a podezřelých souborů.
  2. Omezte další škody – podle situace dočasně vypněte napadenou funkci nebo web přepněte do údržby.
  3. Identifikujte vstupní bod, například zranitelné rozšíření, odcizené heslo nebo nezabezpečený upload.
  4. Obnovte čisté jádro z oficiálního balíčku a aktualizujte Joomla/WordPress, šablony i rozšíření.
  5. Změňte přístupy a klíče a ověřte administrátorské účty.
  6. Po vyčištění web sledujte, zda se soubory neobjeví znovu.

Pokud si nejste jistí stavem webu, využijte odbornou kontrolu a neprovádějte nahodilé mazání souborů. Pomoci vám můžeme také s aktualizací Joomla, migrací Joomla nebo redesignem webu.

Nejčastější otázky

Znamená každý impostor file napadení?

Ne. Některé soubory vytváří Joomla, WordPress, instalátor, cache nebo bezpečnostní rozšíření. Nález je podnět ke kontrole, nikoli automatický rozsudek.

Proč nestačí antivirová signatura?

Nový nebo upravený backdoor ještě nemusí být v databázi známých vzorů. Porovnání s manifestem odhalí i neznámý soubor, pokud do dané složky nepatří.

Mám neznámý PHP soubor ihned smazat?

Nejdříve jej zazálohujte a ověřte jeho původ. Unáhlené smazání legitimního souboru může web poškodit a zároveň zničit důkaz potřebný k analýze.

Kontroluje mySites.guru Joomla i WordPress?

Ano, ale pravidla se liší podle struktury CMS. WordPress dovoluje přísnější rekurzivní kontrolu složek wp-admin a wp-includes.

Proč se zobrazuje configuration.php?

Joomla jej vytváří při instalaci z distribuční předlohy, proto výsledný soubor v oficiálním instalačním balíčku pod tímto názvem není.

Co je webshell nebo backdoor?

Jde o skript, který útočníkovi umožňuje ovládat web, spouštět příkazy, měnit soubory nebo se na web vracet i po opravě původní zranitelnosti.

Nahradí tato kontrola bezpečnostní audit?

Ne. Je to jeden úzce zaměřený test, který musí být doplněn kontrolou integrity, logů, uživatelů, zranitelností a změn souborů.

Jak často kontrolu spouštět?

Pravidelně a také po podezřelé aktivitě, aktualizaci nebo čištění webu. Důležité je porovnávat změny mezi audity.

Zdroj a další informace: mySites.guru – Impostor Files.