O ransomware Sodinokibi foi mencionado recentemente nas notícias, mas poucos se aprofundam nos detalhes desse malware. Hoje vamos tentar conhecer Sodinokibi mais de perto, considerar os princípios do ransomware para identificar vetores prioritários para proteger os sistemas de informação de uma nova ameaça.

Autores do texto: Ravikant Tiwari e Alexander Koshelev
O que sabemos sobre Sodinokibi?
O Sodinokibi provavelmente está sendo espalhado pelos mesmos atacantes conhecidos por ataques de ransomware da família GandCrab, que, a julgar pelos relatórios em fóruns clandestinos, não serão mais desenvolvidos.
Sodinokibi usa a vulnerabilidade do Oracle WebLogic (CVE-2019-2725) para obter acesso ao computador da vítima. Uma vez no sistema, o malware tenta executar-se com direitos estendidos para obter acesso a todos os arquivos e recursos do PC sem restrição ...
Sodinokibi tenta não infectar computadores no Irã, Rússia e outros países da ex-URSS.
O programa de ransomware usa os algoritmos AES e Salsa20 para criptografar arquivos do usuário. O AES é usado para criptografar chaves de sessão, bem como dados enviados ao servidor de gerenciamento.
Os arquivos do usuário são criptografados usando o Salsa20.
Para gerar e distribuir chaves, Sodinokibi usa o algoritmo Diffie-Hellman em curvas elípticas.
Uma vez na máquina, o vírus exclui instantaneamente todos os arquivos da pasta de backup.
No momento, o ransomware está solicitando 0,32806964 BTC (≈ $ 2.500) para restaurar o acesso aos arquivos criptografados. Além disso, se o resgate não for pago dentro de 4 dias, os extorsionistas prometem dobrar o valor ...
Como funciona o Sodinokibi?
Estudamos uma instância de Sodinokibi em nosso laboratório. O ransomware foi empacotado por um empacotador personalizado. Ao mesmo tempo, mesmo após a descompactação bem-sucedida, não havia linhas legíveis no código. Além disso, o software não importa nenhuma biblioteca ou API do sistema. Portanto, será muito difícil para antivírus estáticos que usam assinaturas baseadas em seqüências de caracteres legíveis e tabelas de APIs importadas para detectá-lo.
Os nomes de API e outros parâmetros foram descriptografados enquanto o software estava em execução usando o algoritmo RC4. Para tornar a detecção ainda mais difícil para antivírus, este ransomware executa operações em seqüências de caracteres usando um hash DJB em vez das próprias seqüências ...
Inicialização
Sodinokibi começa criando uma tabela de importação dinâmica. Primeiro de tudo, o programa está convencido de que é a única cópia no sistema pelo método de verificação de mutexes. Após a verificação, descriptografa a configuração JSON usando RC4, que é armazenado no arquivo de programa e verifica o valor booleano da chave “exp”. Se seu valor for "verdadeiro", Sodinokibi tenta iniciar uma exploração. Foi o que aconteceu em nossa amostra, e por isso ele executou a função de explorar vulnerabilidades

Configuração JSON descriptografadaO código que executa a exploração verifica se a atualização de 11 de setembro de 2018 (KB4457138) foi instalada no computador. Este patch corrige muitas das vulnerabilidades abaixo. E se não estiver na máquina, o Ransomware inicia o código de shell de 32 ou 64 bits, dependendo da plataforma em que o malware é executado. Acreditamos que o ransomware está tentando elevar privilégios para um administrador usando o CVE-2018-8440.
Snippet 1A lista de vulnerabilidades corrigidas pelo KB4457138 corrige:
O patch KB4457138 corrige as vulnerabilidades:
- CVE-2018-8457, CVE-2018-8335, CVE-2018-8424, CVE-2018-8455, CVE-2018-8468, CVE-2018-8447, CVE-2018-8475, CVE-2018-8271, CVE- 2018-8440, CVE-2018-8464, CVE-2018-8469, CVE-2018-8421, CVE-2018-8442, CVE-2018-8367, CVE-2018-8443, CVE-2018-8465, CVE-2018- 8419, CVE-2018-8466, CVE-2018-8410, CVE-2018-8467, CVE-2018-8462, CVE-2018-8452, CVE-2018-8446, CVE-2018-8449, CVE-2018-8420, CVE-2018-8433, CVE-2018-8438, CVE-2018-8435, CVE-2018-8456, CVE-2018-8354, CVE-2018-8434, CVE-2018-8470, CVE-2018-8332, CVE- 2018-0965, CVE-2018-8315, CVE-2018-8439, CVE-2018-8392, CVE-2018-8425, CVE-2018-8393.
Se uma vulnerabilidade não for detectada no sistema e o processo continuar funcionando como usuário comum, o comando RUNAS será usado para iniciar outra instância, mas com direitos administrativos, e a atual que estiver trabalhando com privilégios limitados será concluída. O pseudocódigo completo é mostrado na captura de tela abaixo.

Depois que o Sodinokibi inicia com êxito no modo administrador, o software executa uma verificação preliminar adicional e esclarece o valor da chave "bro" na configuração JSON e descobre o país da localização. Ele não tentará infectar computadores dos seguintes países, se esses parâmetros de localização foram definidos nas configurações do computador.
Refinando IDs de IdiomaLista de países de exceção
- Romênia, Rússia, Ucrânia, Bielorrússia, Estônia, Letônia, Lituânia, Tajiquistão, Irã, Armênia, Azerbaijão, Geórgia, Cazaquistão, Quirguistão, Turquemenistão, Uzbequistão, Tartaristão
* Nota do editor: por um motivo desconhecido, os autores destacam especificamente o local tártaro na Rússia
Após passar no teste, o malware finaliza o processo mysql.exe (se foi iniciado) para obter acesso aos arquivos MySQL e criptografá-los. Depois disso, o ransomware remove cópias de sombra do Windows usando o vssadmin e também desativa o sistema de recuperação do Windows usando o bcdedit:
vssadmin.exe Delete Shadows /All /Quiet & bcedit /set {default}
recoveryenabled No & bcedit /set {default} bootstatuspolice ignorealfailures
Antes de criptografar arquivos do usuário, o Sodinokibi procura em todos os sistemas de arquivos, incluindo pastas de rede, para encontrar diretórios com o nome "backup" e os exclui permanentemente. É interessante que, antes de excluir o próprio diretório, o malware substitua primeiro o conteúdo de todas essas pastas por um conjunto aleatório de bytes para tornar a recuperação impossível em princípio. Felizmente, os arquivos do Acronis Backup não podem ser excluídos com tanta facilidade, porque eles estão protegidos no nível do kernel, especificamente para impedir que o ransomware execute essas ações.
Geração de chaves
Sodinokibi usa o protocolo de geração e troca de curvas elípticas Diffie - Hellman (ECDH). As chaves de sessão geradas são usadas em algoritmos de criptografia simétrica, e diferentes tipos de dados são criptografados usando métodos diferentes - AES e Salsa20.
O AES é usado para criptografar uma chave privada de um par de chaves públicas e privadas geradas localmente na máquina do usuário. Ele também criptografa os dados durante a transmissão pela rede. Salsa20 é usado para criptografar arquivos do usuário.
Sodinokibi contém duas chaves públicas diferentes, uma das quais faz parte da configuração JSON e a segunda é incorporada no binário. Essas chaves públicas serão usadas para criptografar a chave privada criada na máquina. As etapas específicas da geração e criptografia de chaves são as seguintes:
Etapa 1. Geração de um par de sessões a partir de uma chave privada (número secreto, aleatório) e pública na máquina local.
Geração local de chaves públicas e privadasA criptografia da chave privada da Etapa 1 ocorre usando a chave pública da configuração JSON
Etapa 2. Gere outro par de chaves públicas e privadas.
Etapa 3. Usando a chave privada da Etapa 2 e a chave pública (valor da chave pk), uma chave pública é gerada a partir do JSON e, após o hash, uma chave simétrica é obtida.
Gere uma chave simétrica usando uma chave compartilhadaEtapa 4. Geração de um IV de 16 bits (vetor de inicialização).
Etapa 5. Criptografe a chave privada gerada na Etapa 1 usando o AES com a chave e IV, que foram obtidas durante as Etapas 3 e 4.
Etapa 6. Cálculo do CRC32 para a chave privada criptografada, exibida na etapa 5.
Etapa 7. Adicionando IV e CRC32 ao final do buffer que contém a chave privada criptografada da Etapa 5.
Etapa 8. Salvando o buffer no arquivo associado ao deslocamento (marcado “sk_key”).
Criptografe a chave privada da Etapa 1 usando as chaves públicas do invasor
Criptografe a chave privada da Etapa 1 usando a chave pública contida no arquivo binário.Etapa 9. Repita as etapas 2 a 7 usando outra chave pública que foi incorporada no arquivo binário na Etapa 3.
Etapa 10. Salvar o buffer em um arquivo mapeado com um deslocamento na memória (marque “0_key”)
sk_key, 0_key e pk_key são gravados no registro de acordo, dependendo dos direitos de acesso recebidos pelo programa ...
HKLM \ SOFTWARE \ recfg \ sk_key ou HKCU \ SOFTWARE \ recfg \ sk_key
HKLM \ SOFTWARE \ recfg \ 0_key ou HKCU \ SOFTWARE \ recfg \ 0_key
HKLM \ SOFTWARE \ recfg \ pk_key ou HKCU \ SOFTWARE \ recfg \ pk_key
Chave secreta criptografada no registro
Geração de chaves para arquivos individuais com Salsa20Etapa 11. Gere um novo par a partir da chave pública e privada.
Etapa 12. Gere uma chave compartilhada usando a chave pública da sessão criada na Etapa 2 e o hash para obter a próxima chave simétrica necessária para gerar as chaves no Salsa20.
Etapa 13. Instalando uma chave de 256 bits (32 bytes) no Salsa20
Etapa 14. Gere um IV de 8 bits para as chaves Salsa20
Etapa 15. Geração de chave Salsa20
Etapa 16. Usando o Salsa20 key_state para criptografar arquivos do usuário com o Salsa20.
Geração de chave Salsa20 para cada arquivo
Repita as etapas 11 a 16 para cada arquivo criptografado.Ilustração de criptografia e descriptografia
Para entender melhor como as chaves são geradas e transmitidas entre os computadores do atacante e da vítima, você precisa descobrir como o algoritmo Diffie Hellman funciona - isso é fácil de fazer por ilustração.
Processo de criptografia
Troca de chaves de curva elíptica de Diffie-Hellman (ECDH)
Uma descrição detalhada do processo de criptografia em SodinokibiPara descriptografar os dados, serão necessárias as chaves privadas do invasor. Mas eles não são publicados em nenhum lugar e, portanto, é impossível restaurar arquivos.
Processo de descriptografia (o segredo do invasor é sua chave privada)
O processo simplificado de descriptografar arquivos do usuário é ilustrado abaixo.Criptografia de arquivo em discos rígidos locais e pastas de rede
Para criptografar arquivos do usuário, o Sodinokibi usa portas de conclusão de E / S e inicia vários fluxos de criptografia, mas não mais que o dobro do número de núcleos de processador na máquina, associando esses fluxos a uma porta de E / S especialmente criada. Esses encadeamentos usam a função API GetQueuedCompletionStatus Win para aguardar a chegada de um pacote na porta de E / S antes de iniciar a criptografia de arquivos.
Assim que os fluxos são criados e aguardam a chegada dos pacotes de E / S, Sodinokibi começa a classificar os arquivos do usuário em todas as unidades locais e em todas as pastas da rede, excluindo CDROM e RAMDISK e atribuindo-os às portas de conclusão de E / S correspondentes. Para todos os arquivos que não se enquadram na lista de exceções nos nomes de pastas, arquivos e extensões, a função AddFileToIoCompletionPort é chamada e, em seguida, PostQueuedCompletionStatus Isso passa a execução para o fluxo de criptografia, que aguarda informações na porta de conclusão de E / S para iniciar a criptografia de arquivos.
A função AddFileToIoCompletionPort também gera uma chave Salsa20 exclusiva para cada arquivo a ser criptografado e passa a chave Salsa20 para o fluxo de criptografia, juntamente com outros metadados que devem ser registrados após a criptografia, usando o parâmetro lpOverlapped da função API PostQueuedCompletionStatus Win.
Após o processamento dos arquivos em cada diretório, exceto a exceção, um arquivo é criado com uma demanda de resgate. Quando os arquivos a serem criptografados acabam, os encadeamentos entram em loop e aguardam até que o número total de arquivos criptografados e renomeados atinja o número total de arquivos transferidos para a porta de conclusão de E / S.
Finalmente, o sistema define um sinalizador que reflete que não há mais arquivos para criptografar e envia vários pacotes de E / S sinalizando a conclusão do processo. Graças a isso, a interrupção de fluxos de criptografia adicionais que estavam aguardando dados é alcançada.

Lista de pastas de exceção
- "$ windows. ~ bt"
- "Intel"
- "Arquivos de programa (x86)"
- "Arquivos de programa"
- "Msocache"
- "$ recycle.bin"
- "$ windows. ~ ws"
- "Navegador Tor"
- "Boot"
- "Informações do volume do sistema"
- "Perflogs"
- Google
- "Dados do aplicativo"
- "Windows"
- "Dados do programa"
- "Windows.old"
- "Appdata"
- "Mozilla"
- Exceções de arquivo
- "Bootfont.bin"
- "Boot.ini"
- "Ntuser.dat"
- "Desktop.ini"
- "Iconcache.db"
- Ntldr
- "Ntuser.dat.log"
- "Thumbs.db"
- "Bootsect.bak"
- "Ntuser.ini"
- "Autorun.inf"
- Exceções de extensão
- "Themepack"
- Ldf
- Scr
- Icl
- "386"
- "Cmd"
- "Ani"
- "Adv"
- "Tema"
- "Msi"
- "RTP"
- "Diagcfg"
- "Msstyles"
- "Bin"
- Hlp
- Shs
- Drv
- "Wpx"
- "Deskthemepack"
- "Morcego"
- "Rom"
- "Msc"
- "Lnk"
- Táxi
- "Spl"
- "Ps1"
- "Msu"
- Ics
- "Chave"
- "Msp"
- "Com"
- Sys
- "Diagpkg"
- "Nls"
- "Diagcab"
- Ico
- "Bloquear"
- "Ocx"
- "Mpa"
- "Cur"
- Cpl
- "Mod"
- Hta
- "Exe"
- "Icns"
- "Prf"
- "DLL"
- "Nomedia"
- Idx
O fluxo de criptografia pressupõe a leitura do conteúdo do arquivo, criptografia, gravação no mesmo arquivo, adição de metadados, incluindo a chave privada da sessão criptografada, com a parte pública do ECDH para cada arquivo e o vetor de inicialização Salsa20 usado para criptografar o arquivo.
Depois disso, o fluxo renomeia o arquivo, adicionando ao nome um nome gerado aleatoriamente. Os arquivos são criptografados com o algoritmo Salsa20 usando a função EncryptAndWrite.
A seguir, é apresentado um exemplo de chamada à função EncryptingThreadRoutine.
Estrutura de arquivo após criptografia
Estrutura de arquivos criptografadosAtividade de rede
Após a conclusão do processo de criptografia, o ransomware prepara os dados para o envio ao servidor de gerenciamento. Os dados incluem vários campos da configuração JSON, informações do sistema e chaves de criptografia. Os dados preparados também são gravados no registro com a chave "[HKLM | HKCU] \ SOFTWARE \ recfg \ stat" antes de serem criptografados pelo AES e enviados ao servidor do invasor ...

Dados de rede

O nome do domínio consiste em: sochi-okna23 [.] Ru + parte do endereço 1
- "Conteúdo Wp"
- "Estático"
- "Conteúdo"
- "Incluir"
- "Uploads"
- "Notícias"
- "Dados"
- "Admin"
e parte do endereço 2
- "Imagens"
- "Imagens"
- "Imagem"
- "Temp"
- "Tmp"
- "Gráfico"
- "Ativos"
- Imagens
- "Jogo"
Geração de URLDemanda de resgate
Sodinokibi tem um modelo para criar uma solicitação de recompra, que deixa espaço para dados do usuário. Eles substituem automaticamente o nome, o ID do usuário (uid - descrição acima) e a chave. A solicitação de resgate é colocada em cada diretório, sem contar as exceções.

Descriptografia

Não há uma maneira livre de descriptografar os dados para este ransomware, e a única maneira de recuperar os dados é usar o serviço de descriptografia fornecido pelo invasor. Vá para ele seguindo as instruções na solicitação de resgate ...

Conclusão
Recomendamos que você use proteção anti-ransomware avançada e mantenha seus sistemas antivírus atualizados. Todos os produtos Acronis contêm proteção aprimorada de ransomware e podem protegê-lo contra esse ataque, minimizando o risco de perda de dados.
A proteção cibernética está contida na solução pessoal Acronis True Image 2019, bem como nos sistemas comerciais Acronis Backup, que são acompanhados por um módulo antimalware baseado em inteligência artificial chamado Acronis Active Protection. Graças a isso, os dois sistemas são capazes de proteger os usuários do Sodinokibi.