Администраторите на WordPress често държат таблото си за управление отворено в същия браузър, който използват за ежедневно сърфиране. Нова верига от атаки показва защо този навик е рискован.

Изследователи са документирали JavaScript зареждащ модул (loader), който изчаква вписан администратор да посети компрометирана страница, след което използва доверената сесия на този браузър, за да инсталира скрита PHP задна врата (backdoor) в уебсайта.

Атакуващият никога не се нуждае от администраторската парола, тъй като собственият браузър на администратора извършва действието. Неотдавнашни случаи сочат към същия модел.

Един пример е кампания със зловреден софтуер за WordPress, задействана от администратор, която изложи над 1,2 милиона уебсайта на потенциално компрометиране.

Зловредният софтуер, който се активира само по време на активни сесии на вписани потребители, е труден за засичане при рутинни сканирания, което го прави нарастващ повод за безпокойство за собствениците на сайтове.

Изследователите по сигурността от Securonix Threat Research, Акшай Гайквад и Аарон Биърдсли, идентифицираха зловредния софтуер и нарекоха веригата TRUST#GRAFT.

Техният анализ показва, че JavaScript кодът не преодолява входа в WordPress. Вместо това той проверява дали посетителят вече е вписан като администратор, след което използва повторно тази сесия, за да добави нов код към сайта. Securonix също така отбелязва, че не е потвърдено как първоначалният скрипт е достигнал до компрометираната страница.

Хакери могат да злоупотребят с активни администраторски сесии в WordPress

Инфекцията започва с фалшива проверка за сигурност. Скриптът поставя рамка на цял екран върху страницата, която изглежда като екран за проверка на Cloudflare „Just a moment“.

Докато посетителят чака, скриптът събира подробности като размер на екрана, графични данни, часова зона и брой инсталирани плъгини. Той също така проверява за признаци на автоматизирани инструменти за анализ.

След решаване на малък пъзел браузърът изпраща тези данни към команден сървър, който решава дали да изпрати следващия етап. Следва ключовата стъпка.

Скриптът изисква страницата за качване на плъгини в WordPress, използвайки съществуващите бисквитки за вход на браузъра, след което прочита маркер за сигурност на WordPress, наречен nonce, от тази страница.

Процесен поток на TRUST#GRAFT (Източник - Securonix)
Процесен поток на TRUST#GRAFT (Източник – Securonix)

Той изтегля ZIP файл с име wm.zip от помощен междинен сървър (staging server) и го качва през стандартната крайна точка за инсталиране на плъгини.

Ако качването е успешно, скриптът отваря страницата с плъгини и активира новия плъгин. WordPress приема всяка заявка, тъй като браузърът вече е вписан с права за управление на плъгини.

Securonix подчертава, че това не е самостоятелно заобикаляне на автентикацията за вход. Акаунтът вече трябва да бъде администраторски с разрешение за инсталиране на плъгини.

Въпреки това рискът е сериозен за всеки, който разглежда публични уебсайтове, докато е вписан в wp-admin, или който използва един браузърен профил както за ежедневно сърфиране, така и за управление на сайта.

Постоянна PHP задна врата се крие в задължителните плъгини (Must-Use Plugins)

ZIP файлът съдържа PHP плъгин с име Web Media Optimizer, версия 2.1. Името подсказва за безобиден инструмент за изображения или медийно съдържание, но Securonix го описва като задна врата.

Той инжектира отдалечен JavaScript код в публичните страници, изключва проверките на TLS сертификатите, когато извлича своя управляващ скрипт, и може да зададе администраторска бисквитка за вход за първия администраторски акаунт чрез твърдо кодиран маркер.

Фалшив iframe за проверка, показан върху страницата на WordPress лабораторията (Източник - Securonix)
Фалшив iframe за проверка, показан върху страницата на WordPress лабораторията (Източник – Securonix)

Плъгинът също така защитава собственото си присъствие. При активиране той копира себе си в wp-content/mu-plugins/wmedia-recovery.php.

WordPress зарежда автоматично всеки файл в тази папка и тези файлове не се показват на обичайната страница за плъгини. Подобен скрит зловреден софтуер от тип „must-use plugin“ е бил докладван и преди, като това показва защо премахването само на видимия плъгин не е достатъчно.

Собствениците на сайтове трябва също така да подходят сериозно към почистването. Премахването на видимия плъгин, копието в mu-plugins и всякакъв останал източник на отдалечен скрипт е необходимо, за да се спре повторната инфекция.

Администраторите трябва да прегледат и последните случаи на самовъзстановяващ се зловреден софтуер със задна врата за WordPress, които показват как изтритите файлове могат да се завърнат.

Securonix препоръчва използването на отделен профил на браузъра за wp-admin, излизане от профила след подозрителна активност, редовна смяна на идентификационните данни на администратора, ограничаване на правата за качване на плъгини и наблюдение за нови PHP файлове в mu-plugins.

Индикатори за компрометиране (IoCs):-

ТипИндикатор
JavaScript зареждащ скриптgerlace[.]com/0k2blyny.js
JavaScript зареждащ скриптgerlace[.]com/j0ghlty4.js
JavaScript зареждащ скриптvtevens[.]icu/50w2ouvx.js
JavaScript зареждащ скриптvtevens[.]icu/x9bpnmck.js
JavaScript зареждащ скриптcaapman[.]me/cse3g1jd.js
JavaScript зареждащ скриптhttp://caapman[.]me/9l56j7cg.js
JavaScript зареждащ скриптhttps://caapman[.]me/4oco7gwc.js
ZIP архив от втори етапhttp://caapman[.]me/p/wm.zip
ZIP архив от втори етапhttps://vtevens[.]icu/p/wm.zip
ZIP архив от втори етапhttps://nutmann[.]club/p/wm.zip
ZIP архив от втори етапhttps://okuneva[.]sbs/p/wm.zip
Източник на контролераvilialobos[.]lol/ads.php
C2 домейниcaapman[.]me, vtevens[.]icu, gerlace[.]com, nutmann[.]club, okuneva[.]sbs, vilialobos[.]lol
C2 API пътища/api/v1/8e4c615, /api/v1/f659473, /api/v1/e81929c, /api/v1/6a38418, /api/v1/76584c1
JavaScript SHA25619d9335e66d9d519c9068994491b1a0f8734626b5328fca9723d942b7128bc9c
JavaScript SHA2560a3cb24e0d0c05b544a3e32affe3ea8a4ed87c0cc90e918c10b94d3b849d76fa
JavaScript SHA25616f73adce28e3a33e98035a19721819ddac9cda130e6f1c337db6f8d8c2f95c6
JavaScript SHA256f110e20dce8361a31332faba49e29e6afd54f8bc4913841f9bdad3cbb66c14e3
JavaScript SHA25685515e25894cace49286581f9436bd2da429e05bd96d39fafe1c42fbcdfcd4e7
JavaScript SHA256765525c4fabd01383ca3dd330dd4f4fbc931bea0724c12f553df41b48a96ca82
JavaScript SHA256804349f8f087588b057e942f321ec2c0a677a0374e02d47f95d43196fc4cac0a
JavaScript SHA2564659d9648275113f7f95735d170f27f10fd6d0a4e606c5b4f6e916ddc54924ed
JavaScript SHA2562cac894bf2cef2232247927e18acd35280065b576c5fa030b5fbad666db0afcc
JavaScript SHA256eeb182444019802abb34668bd6efc7e947c1822e95c87f9a5b5288b4331400c8
JavaScript SHA2562747316171bb2816b68db308162b40a47c6ddf82779d5f460a194921eb60f32c
JavaScript SHA256eb5a6c895d24fd08e3bbd74d7a0ea02600d3b7574b9761efb2876b671e8ddd39
JavaScript SHA2563b79b342a580dd09a5e3f907e475c3131f4005be59468a59905fc289e005806d
JavaScript SHA2562fa9c207981e05141162b9c5cf62a86bdc6593b3a6861968e4df58f49c47da0d
JavaScript SHA256e98949a8370c5c3356a8e97f49a2f963a6126b917e1bc653890f8c79738c981d
JavaScript SHA25607955dcb5f4f80c90ede398879589f2e369eb2d84c4975d3c8adf08433783409
PHP SHA256 (wmedia-recovery.php)86d775c2d5cb459541cd2b0b967fac65ce20c60e483c71c9f7e108d5ad0bd564
PHP SHA256 (ads.php)2dfa9e708fdb92e5d36080065f978e33a692c0fe813a75be9c7cdff03be51b6e
ZIP SHA256 (wm.zip)9215d17e5138cee498bb529e69b1cc7267305136535025e9b49fe173cf648720
Име на добавкатаWeb Media Optimizer 2.1
Път за устойчивост (persistence)wp-content/mu-plugins/wmedia-recovery.php
Вграден в кода токенM2wS8mR4yP1qL7xC5vB3dG9jK6tH2z

Забележка: IP адресите и домейните са умишлено дефанирани (напр. [.]), за да се предотврати случайното им разрешаване или превръщане в хипервръзки. Връщайте оригиналния вид само в контролирани платформи за обмен на информация за заплахи, като MISP, VirusTotal или вашия SIEM.