18 de setembro de 2025

Ransomware SafePay: a ameaça em rápido crescimento que tem como alvo os MSPs

Resumo

 

  • No primeiro trimestre de 2025, um grupo de ransomware saiu rapidamente da obscuridade para se tornar um dos agentes mais ativos e perigosos no cenário global de ameaças: SafePay. A empresa tem se desenvolvido de forma discreta e agressiva, atingindo mais de 200 vítimas em todo o mundo, incluindo provedores de serviços gerenciados (MSPs) e pequenas e médias empresas (PMEs) em todos os setores.
  • A Unidade de Pesquisa de Ameaças (TRU) da Acronis analisou várias amostras do SafePay e confirmou que o grupo usou de táticas recicladas, mas muito eficientes, incluindo a desativação da proteção de endpoints, a exclusão de cópias de sombra e a limpeza de registros para suprimir a detecção e a resposta.
  • Ao contrário de muitos grupos de ransomware que dependem de afiliados em um modelo de ransomware como serviço (RaaS), o SafePay parece operar com controle centralizado, gerenciando suas próprias operações, infraestrutura e negociações.
  • O grupo usa técnicas clássicas, mas eficazes: invasão baseada em RDP e VPN, roubo de credenciais, escalonamento de privilégios e binários que vivem fora da terra para se mover silenciosamente pelas redes das vítimas, exfiltrar dados confidenciais e criptografar arquivos.
  • Mais recentemente, o SafePay foi vinculado ao ataque de ransomware que afetou a Ingram Micro, uma distribuidora global que atende a milhares de parceiros e MSPs.

 

Ransomware SafePay: um derivado do Lockbit?

O SafePay apareceu pela primeira vez em 2024. Em seu primeiro ano de operações, ele fez mais de 20 vítimas. Embora não se saiba se o SafePay é um novo agente ou uma repaginação de um antigo, suas amostras compartilham muitas semelhanças com a família de ransomware LockBit, um builder de ransomware conhecido. Em 2022, o código-fonte do builder LockBit 3.0 deles foi vazado. Após o vazamento, surgiu uma variedade de novos ransomwares. A versão 3.0 do builder também é conhecida como LockBit Black, pois compartilha muitas semelhanças com o ransomware BlackByte.

A amostra do ransomware SafePay analisada pela TRU é um PE32 DLL, com um carimbo de data/hora de compilação falso.

Acronis

Detalhes técnicos

Visão geral

A amostra do ransomware SafePay é uma DLL PE32 com um registro de data e hora de compilação falso. A primeira semelhança com o LockBit é uma função fictícia que tem várias chamadas sequenciais à API do Windows. Escrever chamadas dessa forma não faz sentido porque não há argumentos passados para essas funções, o que causará erros. Na verdade, em ambos os casos, essas funções nunca serão chamadas, pois a execução será encerrada antes que o exemplo possa entrar nessa seção.

 Outras semelhanças com LockBit:

●      Requer senha para execução completa.

●      Todas as cadeias de caracteres são codificadas.

●      Todos os endereços WinAPI são resolvidos durante a execução.

●      O mesmo sistema de prevenção de idiomas.

●      CMSTPLUA Abuso da interface COM para aumento de privilégios.

●      Os tópicos criados têm o sinalizador "ThreadHideFromDebugger".

●      A lista de processos e serviços que devem ser encerrados.

 

Embora a amostra não seja uma cópia completa do LockBit 3.0 e tenha algumas diferenças, é comum que os agentes de ameaças alterem o código-fonte para tornar seu malware mais exclusivo e, mais importante, para adicionar novos recursos e melhorar a prevenção de detecção.

Entrega e exfiltração

O ransomware SafePay foi entregue às vítimas usando conexões RDP. Embora não se saiba como os agentes de ameaças obtiveram as credenciais, a técnica permitiu que eles desativassem o Windows Defender e carregassem arquivos para o servidor C2 antes de criptografá-los. Antes de exfiltrar os arquivos, os atacantes executavam o script 'ShareFinder.ps1', que localiza todos os compartilhamentos de rede disponíveis no domínio local. Ele foi retirado de um projeto de código aberto:

https://github.com/darkoperator/Veil-PowerView/blob/master/PowerView/functions/Invoke-ShareFinder.ps1

Esse script localiza compartilhamentos de rede em hosts no domínio local. Ele foi detectado anteriormente em ataques do Emotet, bem como durante a campanha C0015, que foi usada para implantar o ransomware Conti.

Para coletar arquivos no sistema, o programa WinRar foi usado com o seguinte comando:

 WinRAR.exe a -v5g -ed -r -tn1000d -m0 -mt5 -x*.rar -x*.JPEG -x*.RAW -x*.PSD -x*.TIFF -x*.BMP -x*.GIF -x*.JPG -x*.MOV -x*.pst -x*.FIT -x*.FIL -x*.mp4 -x*.avi -x*.mov -x*.mdb -x*.iso -x*.exe -x*.dll -x*.bak -x*.msg -x*.png -x*.zip -x*.ai -x*.7z -x*.DPM -x*.log -x*.dxf -x*.insp -x*.upd -x*.db -x*.dwg -x*.nc1 -x*.metadata -x*.dg -x*.inp -x*.dat -x*.TIFF -x*.tiger -x*.pcp -x*.rvt -x*.rws -x*.nwc -x*.tif -x*.frx -x*.dyf -x*.rcs -x*.diff C:\[redacted].rar \\[redacted]\C$\Users\

Depois de arquivar os arquivos, um cliente FileZilla foi implantado para filtrar os arquivos para o servidor C2. Depois que o processo foi concluído, o WinRar e o FileZilla foram removidos dos alvos.

Acronis

Execução

No início da execução, o SafePay descriptografa as cadeias de caracteres. Ele usa um loop, no qual executa a operação XOR três vezes em cada byte. Cada operação usa uma chave diferente. O primeiro usa o valor do índice atual. O segundo usa o primeiro símbolo do "kernel32.dll", que é sempre "M". A última chave é um valor constante, que é diferente para cada string criptografada. Essa rotina de descriptografia não é implementada como uma função separada, mas é usada para descriptografar cada string que a amostra contém. A amostra contém cadeias de caracteres somente em formato criptografado.

Acronis

A amostra também não contém a tabela de funções de importação. Ele descriptografa os nomes das bibliotecas e os carrega usando a importação 'LoadLibrary', assim como seus endereços de função de exportação são resolvidos e salvos usando 'GetProcAddress'. Aqui está a lista de nomes de bibliotecas que o SafePay armazena em um formato criptografado:

advapi32.dll, rstrtmgr.dll, ole32.dll, shell32.dll, ntdll.dll, mpr.dll, user32.dll

Depois de obter importações adicionais, o exemplo do SafePay obtém a data/hora atual e o idioma da interface do usuário do Windows. Em seguida, ele verifica se o número de ID do idioma do sistema é maior ou menor do que os salvos. A amostra saltará para uma seção específica com a comparação de outros números.

Acronis

Usando a instrução "switch-case", o SafePay pode continuar a execução ou pular para a função de saída quando o valor obtido corresponder a um dos próximos números:

Acronis

Em seguida, o exemplo do SafePay obtém argumentos da linha de comando e decodifica cadeias de caracteres adicionais. Essas cadeias de caracteres são argumentos suportados:

Acronis

Para analisar os argumentos, o exemplo do SafePay pega a linha de comando que foi usada para executar o exemplo e a armazena como uma matriz de argumentos, que no loop será comparada com a lista salva. Quando um elemento de uma matriz é comparado com uma lista salva, o exemplo adiciona "1" ao valor do índice da matriz. Quando qualquer argumento é correspondido, ele define o valor apropriado como '1'.

Acronis

Embora alguns argumentos sejam apenas sinalizadores definidos, outros devem conter informações adicionais. Por exemplo, um argumento de senha deve consistir em 38 símbolos, incluindo a substring '-pass='. Em qualquer outro caso, ele encerrará o programa. A senha deve ter 32 bytes de comprimento e ser usada para decodificar informações adicionais no código. Se a senha for desconhecida, todo o processo de execução não poderá ser realizado.

Acronis

O argumento do nível de criptografia deve ter seis símbolos, incluindo uma substring '-enc='. Ele aceita números de "1" a "9" para esse argumento. Esse valor será multiplicado por 10 e servirá como porcentagem de criptografia do arquivo. Por exemplo, fornecer o valor "5" forçará a amostra a criptografar 50% do arquivo.

Acronis

Depois que os argumentos são analisados, o exemplo do SafePay cria uma nova lista de controle de acessibilidade (ACL) e adiciona uma entrada de controle de acessibilidade negado (ACE). Essa lista é usada na função "SetSecurityInfo".

Acronis

Em seguida, o exemplo tenta obter "SeDebugPrivilege".

Acronis

Após obter esse privilégio, o exemplo cria um instantâneo de todos os processos em execução no sistema. Em seguida, ele compara seus nomes com sua própria lista salva, que também é armazenada em formato codificado. Quando o processo apropriado for encontrado, ele será encerrado.

Aqui está uma lista de processos que devem ser encerrados:

sql, oracle, ocssd, dbsnmp, synctime, agntsvc, isqlplussvc, xfssvccon, mydesktopservice, ocautoupds, encsvc, firefox, tbirdconfig, mydesktopqos, ocomm, dbeng50, sqbcoreservice, excel, infopath, msaccess, mspub, far, onenote, outlook, powerpnt, steam, thebat, thunderbird, visio, winword, wordpad, notepad, wuauclt, onedrive, sqlmangr

Além dos processos, a amostra também encerra alguns serviços. Primeiro, ele abre o gerenciador de serviços e, em seguida, inicia novamente a pesquisa por nomes de serviços que correspondam à sua própria lista. Em seguida, a amostra encerrará os serviços usando a função "ControlService" e o valor "1" no argumento "dwControl".

Acronis

A lista de serviços que serão encerrados:

vss, sqlsvc, memtas, mepocs, msexchange, Sophos, Veeam, backup, GxVss, GxBlr, GxFWD, GxCVD, GxCIMgr

Depois de esvaziar a Lixeira usando a função 'SHEmptyRecycleBinW', a amostra carrega o caminho de registro 'Software\Microsoft\Windows\CurrentVersion\Run' e cria uma nova chave com um comando que foi usado para executar a amostra, incluindo todos os argumentos. Isso fará com que o SafePay seja executado toda vez que o Windows for iniciado.

Se o sinalizador '-uac' for passado, a amostra abusará da interface CMSTPLUA COM para executar comandos com permissões elevadas usando a função de API 'ShellExecuteW':

/c vssadmin delete shadows /all /quiet

/c wmic shadowcopy delete

/c bcdedit / set{default} bootstatuspolicy ignoreallfailures

/c bcdedit / set{default} recoveryenabled no

Se o argumento '-log' for fornecido, o exemplo criará um arquivo de registro: 'C:\ProgramData\auto.log'. Ele contém o PID (ID do processo), a hora e a descrição da operação realizada.

 

Criptografia de arquivos

Antes de iniciar a rotina de criptografia, o exemplo do SafePay abre o identificador para o provedor de serviços criptográficos padrão do sistema com o tipo RSA_AES.

Acronis

Cada thread de criptografia será criado em modo suspenso. Após a criação do thread, o exemplo define o sinalizador 'ThreadHideFromDebugger' para o thread a fim de evitar sua depuração e define as informações de token duplicadas anteriormente.

Para localizar unidades no sistema, o exemplo usa as importações "GetVolumePathNamesForVolumeNameW" e "GetLogicalDrives". Cada unidade é verificada quanto ao seu tipo. A amostra do SafePay criptografará a unidade somente se ela tiver o tipo 2 (DRIVE_REMOVABLE) ou 3 (DRIVE_FIXED). Informações adicionais sobre o disco serão obtidas usando o "DeviceIoControl" com o código de controle "IOCTL_DISK_GET_PARTITION_INFO". Se encontrar uma unidade não montada, a amostra a monta usando a função "SetVolumeMountPoint".

Acronis

Para pesquisar arquivos no sistema, o exemplo carrega os nomes das unidades encontradas e usa as funções "FindFirstFile" e "FindNextFile". Para cada arquivo, ele verifica o parâmetro 'dwFileAttributes'. Se o parâmetro corresponder a 16, que é um diretório, o exemplo chamará a mesma função com o caminho da pasta encontrada.

Acronis

Quando o exemplo abre um arquivo usando 'CreateFileW', ele define o valor 'dwFlagsAndAttributes' como '0x04000000', que é o sinalizador 'FILE_FLAG_DELETE_ON_CLOSE'. Em seguida, a amostra excluirá o arquivo aberto logo após o fechamento do identificador da amostra.

Acronis

A amostra gera 32 bytes aleatórios para cada arquivo, que são usados como uma chave AES. Em seguida, a chave AES será criptografada usando o algoritmo RSA.

Acronis

Depois de criptografar cada arquivo no diretório, o exemplo usa as APIs "CreateIOCompletionPort" e "PostQueuedCompletionStatus" para lidar com a criptografia multithread com segurança. Por fim, o exemplo renomeia o arquivo, acrescentando a extensão '.safepay' a ele.

Acronis

Conclusão

O ransomware SafePay usa extorsão dupla para garantir que as vítimas paguem seus resgates. Primeiro, ao exfiltrar os arquivos, os atacantes implantam malware para criptografar os arquivos dos usuários usando uma forte combinação de cifras AES e RSA. A amostra do SafePay é um arquivo DLL, que requer os utilitários "regsvr32.exe" ou "rundll32.dll" para ser executado. O exemplo aceita vários argumentos, mas sempre exige um '-pass=', pois essa senha é usada para decodificar informações adicionais no código. Todas as cadeias de caracteres salvas e nomes de importação são armazenados em um formato criptografado, tornando o SafePay difícil de ser detectado antes de ser executado.

Detectado pela Acronis

Acronis

IoCs

Arquivos

SHA256
a0dc80a37eb7e2716c02a94adc8df9baedec192a77bde31669faed228d9ff52

Indicadores de rede

URL
http://nz4z6ruzcekriti5cjjiiylzvrmysyqwibxztk6voem4trtx7gstpjid.onion
VanessaCooke94@protonmail.com