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.
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
- Začněte filtrem Executables only.
- Ověřte každou cestu proti čistému balíčku stejné verze CMS.
- Zkontrolujte obsah, vlastníka, oprávnění a čas změny souboru.
- Porovnejte nález s logy serveru a změnami mezi audity.
- 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
- Web hned zazálohujte včetně databáze, logů a podezřelých souborů.
- Omezte další škody – podle situace dočasně vypněte napadenou funkci nebo web přepněte do údržby.
- Identifikujte vstupní bod, například zranitelné rozšíření, odcizené heslo nebo nezabezpečený upload.
- Obnovte čisté jádro z oficiálního balíčku a aktualizujte Joomla/WordPress, šablony i rozšíření.
- Změňte přístupy a klíče a ověřte administrátorské účty.
- 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í?
Proč nestačí antivirová signatura?
Mám neznámý PHP soubor ihned smazat?
Kontroluje mySites.guru Joomla i WordPress?
Proč se zobrazuje configuration.php?
Co je webshell nebo backdoor?
Nahradí tato kontrola bezpečnostní audit?
Jak často kontrolu spouštět?
Zdroj a další informace: mySites.guru – Impostor Files.