Uma análise técnica completa do ransomware BlackCat, que vem causando estragos em organizações em todo o mundo. O ALPHV, também conhecido como BlackCat, é uma família de ransomware vista pela primeira vez no final de 2021 e tem como alvo várias empresas em todos os setores.
Receba as últimas notícias, ameaças e recursos do setor.
Nos últimos anos, os ataques de ransomware se tornaram cada vez mais comuns, com novas cepas sendo descobertas o tempo todo. Uma dessas cepas é o ransomware BlackCat, que vem causando estragos em organizações em todo o mundo. O ALPHV, também conhecido como BlackCat, é uma família de ransomware vista pela primeira vez no final de 2021 e tem como alvo várias empresas em todos os setores. Os operadores do ransomware são vistos empregando técnicas de dupla extorsão, que envolvem não apenas criptografar o sistema, mas também roubar arquivos confidenciais de suas vítimas. Alegadamente, outra ferramenta é usada com o ransomware para roubar dados.
O ransomware BlackCat é escrito em Rust e vem na forma de uma ferramenta de linha de comando, que pode ser executada com argumentos diferentes. Ele é capaz de eliminar vários processos e serviços. Um de seus principais recursos é a capacidade de aumentar os privilégios e ignorar o Controle de Conta de Usuário (UAC). Esse malware sofisticado usa criptografia AES ou ChaCha20 (dependendo de sua configuração) para criptografar todos os arquivos no sistema da vítima. Além disso, ele tem recursos de evasão de sandbox, dificultando a análise da amostra. O ransomware exige argumentos para ser executado, impossibilitando sua análise em uma sandbox. Neste blog, examinaremos mais de perto as características e os aspectos técnicos desse ransomware escrito em Rust.
Visão geral da campanha histórica
Foi testemunhado que os atacantes que usam o ransomware BlackCat também usam uma ferramenta roubadora.NET chamada ExMatter, desenvolvida pelo mesmo grupo APT, para baixar arquivos da máquina vítima. É isso que torna esse ataque ainda mais formidável, pois dá aos atacantes a vantagem de usar uma técnica conhecida como extorsão dupla, que envolve a pressão adicional de vazar arquivos roubados, possivelmente contendo dados confidenciais. (Consulte o Apêndicepara uma regra da YARA que ajuda na caça ao BlackCat.)
Análise técnica
O binário BlackCat vem na forma de uma ferramenta de linha de comando que pode ser executada usando argumentos diferentes. Por exemplo:
Ao usar —verboso, os registros criados pelo BlackCat serão exibidos no console.
O —uiA opção exibe uma exibição semelhante à GUI na janela do terminal, mostrando o progresso e as informações relacionadas aos arquivos que estão sendo criptografados no sistema.
Captura de tela do tipo GUI exibida ao usar a opção UI
Desses argumentos, apenas um deles é essencial para a execução do binário, que é o token de acesso argumento.
Lista dos argumentos que podem ser usados durante a execução do binário
Operações de pré-criptografia
Conforme mencionado anteriormente, o binário só será executado se for fornecido com um token de acesso de 32 caracteres. Ele usa o Obtenha a linha de comando W API para verificar se o token de acesso foi fornecido corretamente.
Usando getCommandLineW para verificar se o token de acesso foi fornecido corretamente
Dependendo da versão do Ransomware, esse token pode ser aleatório (como neste exemplo) ou, conforme visto nas versões mais recentes, esse token de acesso é uma chave de 32 caracteres usada para criptografar a configuração do Ransomware incorporada ao binário. As versões mais recentes fazem isso para impedir que os pesquisadores de segurança extraiam a configuração.Isso também serve como uma medida anti-sandboxing, pois as ferramentas de análise automatizadas não poderão executar a amostra, a menos que estejam configuradas para fornecer o token de acesso.
Nota de resgate
Depois que o token de acesso é fornecido ao binário, o Ransomware prossegue descriptografando a nota de resgate incorporada no binário e armazenando-a para uso posterior. Ele também define a nota de resgate como papel de parede da área de trabalho.
Nota de resgate decifrada armazenada para uso posterior
Depois disso, o Ransomware se prepara para aumentar os privilégios criando um novo tópico usando o Criar tópico API.
Escalação de privilégios e desvio do UAC
O ransomware BlackCat realiza um desvio do UAC abusando do Microsoft COM (modelo de objeto componente). Esse ataque envolve o uso de objetos COM de um binário conhecido como Microsoft CMSTP (Connection Manager Profile Installer), particularmente o CMSTPLUS interface {3E5FC7F9-9A51-4367-9063-A120244FBEC7}.
O ransomware usa Objeto CoGet para se registrar com o CLSID {3E5FC7F9-9A51-4367-9063-A120244FBEC7}, que é usado legitimamente para executar aplicativos com privilégios elevados. Essa técnica permite que ele ignore o prompt do UAC e execute suas ações maliciosas sem ser detectado ou bloqueado pelas medidas de segurança do sistema.
Usando CogetObject para se registrar com {3E5FC7F9-9A51-4367-9063-A120244FBEC7} para obter privilégios elevados
Depois que o ransomware eleva os privilégios, ele é executado dentro do thread recém-criado e transfere seus argumentos da instância anterior.
O BlackCat se executa dentro do novo thread com privilégios elevados usando os mesmos argumentos de antes.
Depois disso, o BlackCat usa o Valor Privilegiado de Pesquisa API para procurar identificadores locais para uma lista de privilégios. Cada um desses privilégios permite que o processo em execução execute operações no nível do sistema. (Consulte o Apêndice para obter uma lista completa e uma descrição de cada privilégio). O binário então usa Ajuste os privilégios do token a fim de conceder a si mesma esses privilégios.
Lista de privilégios buscados pela BlackCat
Usando LookupPrivilegeValueW e AdjustTokenPrivileges para conceder privilégios a si mesmo
Finalmente, o BlackCat encerra sua preparação para criptografia fazendo o seguinte:
Excluindo todas as cópias de sombra de volume usando vssadmin e wmic comandos, tornando a recuperação de dados muito mais difícil.
Desativando o reparo automático usando edição bcd, para evitar a recuperação de arquivos relacionados ao sistema.
Limpando registros de eventos.
Encerramento de todos os serviços e processos ativos.
Nota: O BlackCat tem sua configuração embutida em si mesmo e a descriptografa em tempo de execução. A configuração contém informações sobre a chave pública a ser usada para criptografar a chave, quaisquer serviços específicos a serem encerrados, uma lista de exceções etc.
Captura de tela exibindo a configuração do BlackCat
Criptografia de dados
A amostra de BlackCat utilizada para esta análise emprega AES para criptografia. As etapas envolvidas na criptografia são as seguintes:
O BlackCat primeiro atravessa o sistema usando um loop de Encontre o primeiro arquivo e Encontre o próximo arquivo para encontrar todos os arquivos no sistema.
A nota de resgate é gravada em cada diretório usando Gravar arquivo.
Captura de tela do nota de resgate deixada por BlackCat
Usando BCryptGen Aleatório, o ransomware calcula uma chave AES aleatória.
Um bloco JSON é criado para cada arquivo, que contém a chave AES usada para criptografar o arquivo e as informações sobre o arquivo.
Bloco JSON contendo informações sobre a chave e o arquivo
A chave AES é ainda mais criptografada usando a chave pública RSA armazenada na configuração BlackCat.
O arquivo é criptografado usando AES e o conteúdo é gravado no arquivo usando Ler arquivo e Gravar arquivo. A nova extensão do arquivo é mencionada na configuração do BlackCat.
Usando o AES para criptografar o arquivo
Operações pós-criptografia
Assim que o BlackCat terminar de criptografar todos os arquivos no sistema, o papel de parede do Desktop é alterado, instruindo o usuário a consultar a nota de resgate.
Fundo da área de trabalho alterado
O URL.onion especificado na nota de resgate é exclusivo para cada vítima, pois cada amostra usa um token de acesso diferente, fornecido ao URL como parâmetro. O URL onion contém informações sobre os arquivos criptografados/roubados e instruções sobre como pagar o resgate.
Lista de privilégios e responsabilidades de segurança visados pela BlackCat
Security Privilege
Responsibility
SeIncreaseQuotaPrivilege
Allows a process to increase the memory quota assigned to it.
SeSecurityPrivilege
Allows a process to read or modify the security settings of objects in the system.
SeTakeOwnershipPrivilege
Allows a process to take ownership of any object in the system.
SeLoadDriverPrivilege
Allows a process to load device drivers.
SeSystemProfilePrivilege
Allows a process to gather profiling information for the entire system.
SeSystemtimePrivilege
Allows a process to change the system time.
SeProfileSingleProcessPrivilege
Allows a process to profile a single process.
SeIncreaseBasePriorityPrivilege
Allows a process to increase the base priority of a thread.
SeCreatePagefilePrivilege
Allows a process to create a pagefile.
SeBackupPrivilege
Allows a process to perform backup and restore operations.
SeRestorePrivilege
Allows a process to restore backed-up objects.
SeShutdownPrivilege
Allows a process to shut down the system.
SeDebugPrivilege
Allows a process to debug other processes.
SeSystemEnvironmentPrivilege
Allows a process to modify system environment variables.
SeChangeNotifyPrivilege
Allows a process to receive notifications when an object is modified.
SeRemoteShutdownPrivilege
Allows a process to shut down remote systems.
SeUndockPrivilege
Allows a process to undock a laptop computer.
SeManageVolumePrivilege
Allows a process to manage volume and disk configurations.
SeImpersonatePrivilege
Allows a process to impersonate other users or groups.
YARA Rule for BlackCat Threat Hunting
rule win_blackcat_auto {
meta:
author = "Felix Bilstein - yara-signator at cocacoding dot com"
date = "2023-03-28"
version = "1"
description = "Detects win.blackcat."
info = "autogenerated rule brought to you by yara-signator"
tool = "yara-signator v0.6.0"
signator_config = "callsandjumps;datarefs;binvalue"
malpedia_reference = "https://malpedia.caad.fkie.fraunhofer.de/details/win.blackcat"
malpedia_rule_date = "20230328"
malpedia_hash = "9d2d75cef573c1c2d861f5197df8f563b05a305d"
malpedia_version = "20230407"
malpedia_license = "CC BY-SA 4.0"
malpedia_sharing = "TLP:WHITE"
/* DISCLAIMER
* The strings used in this rule have been automatically selected from the
* disassembly of memory dumps and unpacked files, using YARA-Signator.
* The code and documentation is published here:
* https://github.com/fxb-cocacoding/yara-signator
* As Malpedia is used as data source, please note that for a given
* number of families, only single samples are documented.
* This likely impacts the degree of generalization these rules will offer.
* Take the described generation method also into consideration when you
* apply the rules in your use cases and assign them confidence levels.
*/
strings:
$sequence_0 = { c3 81f90a010000 7e6a 81f9e2030000 0f8fcc000000 81f90b010000 }
// n = 6, score = 600
// c3 | ret
// 81f90a010000 | cmp ecx, 0x10a
// 7e6a | jle 0x6c
// 81f9e2030000 | cmp ecx, 0x3e2
// 0f8fcc000000 | jg 0xd2
// 81f90b010000 | cmp ecx, 0x10b
$sequence_1 = { 85f6 0f8482000000 bb03000000 8d0437 }
// n = 4, score = 600
// 85f6 | test esi, esi
// 0f8482000000 | je 0x88
// bb03000000 | mov ebx, 3
// 8d0437 | lea eax, [edi + esi]
$sequence_2 = { 885405cc 48 eb19 89ca 83fa63 7fbe }
// n = 6, score = 600
// 885405cc | mov byte ptr [ebp + eax - 0x34], dl
// 48 | dec eax
// eb19 | jmp 0x1b
// 89ca | mov edx, ecx
// 83fa63 | cmp edx, 0x63
// 7fbe | jg 0xffffffc0
$sequence_3 = { f20f104808 8d45d4 894dec c645f004 8d4dec }
// n = 5, score = 600
// f20f104808 | movsd xmm1, qword ptr [eax + 8]
// 8d45d4 | lea eax, [ebp - 0x2c]
// 894dec | mov dword ptr [ebp - 0x14], ecx
// c645f004 | mov byte ptr [ebp - 0x10], 4
// 8d4dec | lea ecx, [ebp - 0x14]
$sequence_4 = { 3d32210000 747b 3d33210000 0f8571050000 8b07 }
// n = 5, score = 600
// 3d32210000 | cmp eax, 0x2132
// 747b | je 0x7d
// 3d33210000 | cmp eax, 0x2133
// 0f8571050000 | jne 0x577
// 8b07 | mov eax, dword ptr [edi]
$sequence_5 = { b005 5e 5d c3 81f90a010000 7e6a 81f9e2030000 }
// n = 7, score = 600
// b005 | mov al, 5
// 5e | pop esi
// 5d | pop ebp
// c3 | ret
// 81f90a010000 | cmp ecx, 0x10a
// 7e6a | jle 0x6c
// 81f9e2030000 | cmp ecx, 0x3e2
$sequence_6 = { 747b 3d33210000 0f8571050000 8b07 83f00a }
// n = 5, score = 600
// 747b | je 0x7d
// 3d33210000 | cmp eax, 0x2133
// 0f8571050000 | jne 0x577
// 8b07 | mov eax, dword ptr [edi]
// 83f00a | xor eax, 0xa
$sequence_7 = { b806000000 c7460400000000 894608 c70601000000 83c430 }
// n = 5, score = 600
// b806000000 | mov eax, 6
// c7460400000000 | mov dword ptr [esi + 4], 0
// 894608 | mov dword ptr [esi + 8], eax
// c70601000000 | mov dword ptr [esi], 1
// 83c430 | add esp, 0x30
$sequence_8 = { 89d0 ba3e000000 897e0c f7e2 }
// n = 4, score = 600
// 89d0 | mov eax, edx
// ba3e000000 | mov edx, 0x3e
// 897e0c | mov dword ptr [esi + 0xc], edi
// f7e2 | mul edx
$sequence_9 = { c6410b00 66c741090000 8b45ec 894110 c7411400000000 b801000000 8901 }
// n = 7, score = 600
// c6410b00 | mov byte ptr [ecx + 0xb], 0
// 66c741090000 | mov word ptr [ecx + 9], 0
// 8b45ec | mov eax, dword ptr [ebp - 0x14]
// 894110 | mov dword ptr [ecx + 0x10], eax
// c7411400000000 | mov dword ptr [ecx + 0x14], 0
// b801000000 | mov eax, 1
// 8901 | mov dword ptr [ecx], eax
condition:
7 of them and filesize < 29981696
}
Mehardeep Singh Sawhney
Extremely passionate about cyber security and it's real application in protecting Information Assets. Love learning about new ways to exploit devices
Hansika Saxena
Product Manager at CloudSEK with a background in cyber threat intelligence and a focus on user experience. She bridges research with product design to shape solutions that are intuitive and impactful.
Inscreva-se nos recursos do CloudSEK
Receba as últimas notícias, ameaças e recursos do setor.