Заден вход (backdoor) в WordPress възстановява изтрит зловреден код за секунди, превръщайки рутинното почистване в цикъл от повторно заразяване. Наречена SC, инфекцията разпространява работните си части из файловете на уебсайта, базата данни и оперативната памет на сървъра, позволявайки на оцелелите компоненти да възстановят премахнатите.
Разследването не установява първоначалната точка на проникване или броя на засегнатите уебсайтове. След като бъде инсталиран обаче, SC злоупотребява с функции за ранно зареждане, теми и разширения (plugins), за да поддържа достъп. Подобен скрит зловреден код в WordPress разширения показва защо проверката само на контролния панел може да пропусне инфекция.
Анализаторите от Sucuri идентифицираха SC по време на скорошна работа по почистване на уебсайт, документирайки констатациите си на 30 септември 2026 г. От Sucuri заявиха в доклад, споделен с Cyber Security News (CSN), че задният вход заема най-малко осем локации и може да се възстанови сам, след като видимите файлове бъдат премахнати.
Въздействието надхвърля повторно появяващите се злонамерени файлове. Задният вход може да крие администраторски профили, да събира активни сесийни токени на администратори, да премахва разширения за сигурност и да доставя браузърни скриптове, които биха могли да позволят кражба на плащания. Докладът описва тези възможности, но не количествено определя потвърдените финансови загуби.
WordPress Malware Comes Back After Removal
SC оцелява чрез мрежа от компоненти, които се поправят един друг. Конфигурационна директива стартира зареждащ модул (loader) преди обичайните PHP заявки, включително заявки, които никога не стигат до WordPress.
Видим посредник след това зарежда скрит код, поддържайки механизма за влизане стабилен, докато прикрива основния зареждащ модул. Зареждащият модул възстановява фалшиво разширение от съществуващо копие, кодиран резервен кеш или компресиран пакет за възстановяване.
Идентични копия на задния вход се намират в обичайните и в автоматично зарежданите среди за разширения. Убедителна страница с настройки помага на злонамереното разширение да изглежда като легитимен инструмент за кеширане.
Два компонента за ранно зареждане осигуряват допълнителни пътища за възстановяване. Единият вгражда пълния зловреден код като компресирани, кодирани данни. Другият търси копия на разширението, споделена памет, архиви за възстановяване и базата данни.
Инжектиран блок в темата също пресъздава разширението всеки път, когато неговото копие изчезне. Това прави изтриването на файлове непълен отговор. Базата данни съдържа друго пълно копие на зловредния код, докато поддържаните сървъри запазват копие в споделената памет.
Предишни устойчиви задни входове в базата данни на WordPress също илюстрират как злонамереният код може да оцелее при почистване, фокусирано само върху файлове. Планираните задачи (scheduled tasks) осигуряват друг път за повторно внедряване.
Задният вход също така се крие от списъците с разширения и проверките за актуализации. Той укрива привилегирован профил от администраторския изглед и може да фалшифицира бисквитки за автентификация, позволявайки на оператора си да се влезе без парола. Свързани варианти на SC използват тригери в базата данни, за да пресъздадат администраторски достъп.
За дистанционни инструкции SC прави запитвания към интелигентни договори (smart contracts) през около двадесет публични шлюза на Ethereum, вместо да разчита на един фиксиран сървър.
Тези легитимни услуги действат как пренос. Блокирането само на един наблюдаван шлюз оставя алтернативните пътища налични, така че защитниците трябва да се справят с пълния използван набор.
След като определи своя команден адрес, зловредният софтуер изпраща криптирана колекция от детайли за сайта и сесийни токени на администратора. Отговорите могат да доставят заместващ PHP, браузърни скриптове или инструкции за изтриване на разширения за сигурност. Тази гъвкавост позволява на атакуващия да променя инфекцията, без да изгражда наново мрежата за поддържане на достъпа.
Cleanup and Prevention
От Sucuri препоръчват да се спре изпълнението, преди да се премахват компоненти. Първо заменете целевия зареждащ модул в конфигурацията с инертно съдържание, след което премахнете директивата.
PHP може да кешира тази настройка за до 300 секунди, така че незабавното изтриване на целта може да прекъсне всяка PHP заявка в профила. След това премахнете зловредния код от базата данни, контролните настройки, временно съхранените стойности и копията в споделената памет.
Изчистете злонамерените планирани задачи и инспектирайте тригерите в базата данни, преди да изтриете скритите администратори. За разлика от зловреден софтуер, представящ се за защита, който се възстановява чрез планирано изпълнение, SC комбинира няколко независими механизма за възстановяване. Клиентите на споделен хостинг може да се нуждаят от съдействието на своя доставчик.
Премахнете и двете копия на разширението, зареждащите модули, архивите за възстановяване и злонамерените файлове за ранно зареждане с един координиран ход. Премахнете само инжектирания блок от легитимната тема.
Завършете, като сканирате отново, следите за завръщащи се компоненти, затворите първоначалната точка на проникване и промените компрометираните идентификационни данни.
Превенцията изисква своевременни обновления, защитна стена за уеб приложения (WAF) и редовен преглед на настройките на базата данни, планираните задачи, тригерите и потребителските профили. Всеки завръщащ се файл трябва да се третира като доказателство за незавършено почистване, а не като причина за повторение на същото изтриване.
Индикатори за компрометиране (IoCs):-
| Тип | Индикатор | Описание |
|---|---|---|
| Конфигурационен файл | .user.ini | Злоупотребява се за конфигуриране на изпълнението на зареждаща програма (loader) преди PHP заявки. Самото му присъствие не потвърждава компрометиране. |
| Конфигурационен файл | php.ini | Проверете за неоторизирана директива prepend, реферираща към злонамерената зареждаща програма. |
| Конфигурационен файл | .htaccess | Може да съдържа злонамерени настройки за prepend, регенерирани от задната врата (backdoor). |
| Конфигурационна директива | auto_prepend_file | Съмнителна е, когато е конфигурирана да изпълнява неоторизирана зареждаща програма или скрит PHP файл. |
| Път до файл | wp-content/c1b12371.php | Забелязан видим междинен файл, който включва скритата зареждаща програма. Името на файла варира според сайта. |
| Път до файл | wp-content/.c1b12371.php | Забелязана скрита зареждаща програма с таблица от низове (string-table loader), която възстановява злонамерения плъгин. Името на файла варира според сайта. |
| Път до файл | wp-content/db.php | Компрометиран компонент за ранно зареждане, съдържащ компресирания и кодиран злонамерен код (payload) на задната врата. |
| Път до файл | wp-content/advanced-cache.php | Компрометиран компонент за кеширане, който възстановява злонамерения код от няколко независими източника. |
| Път до файл | wp-content/themes/khorshidi/functions.php | Забелязан файл на тема, съдържащ добавен блок, който възстановява злонамерения плъгин. |
| Име на файл | functions.php | Проверете файла на активната тема за неоторизиран блок, ограничен от маркери за начало и край. |
| Път до файл | wp-content/mu-plugins/hyper-engine-kit.php | Забелязано автоматично зареждащо се копие на задната врата. Името на файла варира според сайта. |
| Път до файл | wp-content/plugins/hyper-engine-kit/hyper-engine-kit.php | Забелязано дублиращо копие на задната врата, маскирано като плъгин за кеширане. Името на файла варира според сайта. |
| Директория | wp-content/mu-plugins | Проверете за фалшив плъгин, съвпадащ с друго копие в обикновената директория за плъгини. |
| Директория | wp-content/plugins | Местоположение на излишното копие в обикновената директория за плъгини. |
| Директория | wp-content | Забелязано местоположение за зареждащи програми и ZIP пакети за възстановяване със случайно избрани имена. |
| Директория | wp-content/uploads | Друго местоположение, където могат да бъдат скрити ZIP пакети за възстановяване със случайно избрани имена. |
| Кодов маркер | SC_ | Префикс, свързан с инжектираните маркери за начало. По-новите компоненти могат да пропускат разпознаваеми маркери. |
| Защитна константа | SC_AUTO_PREPEND | Константа, идентифицирана в таблицата с компоненти на изходния код за скритата зареждаща програма. |
| Префикс на база данни | sc_ | Префикс, свързан със злонамерени опции за управление и временни данни (transients). |
| Артефакт в базата данни | Randomly named options row containing a large gzip and base64 blob | Съхранява пълен злонамерен код, способен да възстанови инфекцията. Не е предоставено точно име на опцията. |
| Архив за възстановяване | ZIP bundle with a random hexadecimal filename | Източник за възстановяване на злонамерения код, намерен в директориите content, uploads или themes. Не е предоставено точно име на файла с архива. |
| Артефакт в паметта | System V shared-memory segment containing readable PHP | Копие на злонамерения код извън диска, което оцелява след изтриване на файлове. Докладът не разкрива неговия числов ключ. |
| Артефакт в акаунт | Hidden fully privileged administrator | Може да липсва в списъците на контролния панел (dashboard) и да е свързан с изоставена опция, съдържаща ID на акаунта. |
| Артефакт за поддържане на достъп (persistence) | Malicious cron hooks and administrator-recreating database triggers | Планираните куки (cron hooks) поддържат повторното внедряване; свързаните SC варианти използват тригери за възстановяване на администраторския достъп. |
| Мрежово поведение | Outbound requests to public Ethereum RPC gateways | Активност по команден канал, базирана на блокчейн. Докладът не предоставя точни URL адреси или адреси на шлюзове. |
Забележка: IP адресите и домейните са нарочно деактивирани (defanged, напр. [.]), за да се предотврати случайно разрешаване на имена или хипервръзки. Възстановете ги само в контролирани платформи за разузнаване на заплахи като MISP, VirusTotal или вашата SIEM система.