Voltar
Ransomware
Tabela de conteúdo
*Atualização: Este artigo foi atualizado em 12 de agosto de 2020 com mais detalhes sobre o KMike.

 

Em uma busca para entender como o ransomware funciona, me deparei com um artigo sobre”Como não escrever um ransomware.” Isso me fez pensar “como você escreve um então?” Isso me levou a percorrer vários blogs e repositórios de código, o que só me confundiu ainda mais. Então, decidi escrever meu próprio ransomware, entender suas operações e, no processo, ajudar outras pessoas que buscam o mesmo segredo indescritível.

Sua primeira ideia seria como nomear seu projeto. O nome deve refletir a personalidade do seu ransomware e descrevê-lo metaforicamente. Com um toque de criatividade, meu projeto recebeu o nome correto de Michael de Krombopulos, um antagonista de Rick e Morty, apelidado Mike. Os objetivos básicos do projeto eram desenvolver um ransomware que fosse:

  • Funcional
  • Desmistifica as operações de um ransomware
  • Tem as funcionalidades básicas de um ransomware moderno típico

A próxima etapa é decidir a linguagem que você usará para desenvolver o ransomware. Eu escolhi o Python porque é facilmente legível e de natureza amigável para iniciantes. Em comparação com linguagens de baixo nível, a execução em Python é mais lenta e oferece suporte a tamanhos de arquivo maiores. Na verdade, pessoas com intenções maliciosas considerariam um ransomware desenvolvido em Python desagradável.

 

Estágios do ciclo de vida de um ransomware

Este artigo detalhará os diferentes estágios do ciclo de vida e do processo de infecção de um ransomware e fornecerá informações sobre como Mike opera em cada estágio.

 

Entrega

Um ransomware geralmente é incorporado em documentos e entregue por meio de e-mails que são executados assim que são baixados/abertos. Ele também pode se disfarçar como um software legítimo e induzir você a baixá-lo e executá-lo. Alguns ransomwares podem ter a capacidade de se propagar pelas redes às quais um sistema está conectado.

O KMike finge ser um software que promete ajudá-lo a adicionar moeda no jogo em um jogo de sua escolha.

 

Evasão

Um ransomware não começa a ser executado assim que é aberto para evitar a detecção. Em vez disso, ele executa uma série de verificações para determinar se está sendo executado em uma sandbox ou em um ambiente normal. As técnicas de evasão ajudam o ransomware a criptografar os arquivos das vítimas com sucesso e também a impedir sua detecção. Isso, por sua vez, ajuda a espalhar a infecção para outros sistemas.

As verificações são limitadas apenas pela imaginação do autor. As verificações típicas auditam a configuração do hardware do sistema em busca de valores específicos do sandbox e também inspecionam o nome do arquivo do executável para ver se ele foi renomeado para algo como “malware” ou “teste”, algo que os analistas geralmente usam. Alegadamente, alguns malwares também verificam a temperatura da CPU, a resolução da tela e a interação do usuário para evitar sandboxes.

A análise estática de código pode ser evitada se você tiver uma base de código que não tenha sido retirada de nenhum malware existente. Embora o KMike não implemente essas medidas, apenas 7 dos 72 mecanismos conseguiram detectar o arquivo como malicioso.

Ransomware: VirusTotal
7/72 motores detectaram o KMike como malicioso (Créditos: Total de vírus)

 

Criptografia

Depois de determinar que o ransomware não está em uma sandbox, a próxima etapa é criptografar os arquivos presentes no sistema. Há duas escolhas importantes a serem feitas: quais arquivos criptografar e como criptografá-los.

Devemos criptografar os arquivos que contêm dados do usuário e não os necessários para que o sistema operacional funcione corretamente. Podemos configurá-lo de forma que somente arquivos com extensões específicas sejam criptografados.

Geralmente criptografamos arquivos com um algoritmo de chave simétrica. Esse esquema de criptografia geralmente é mais rápido e consome menos recursos do que a criptografia assimétrica. Nesse esquema, geramos novas chaves para cada arquivo criptografado. No entanto, uma execução mais rápida vem com uma ressalva de que fica mais fácil para analistas e pesquisadores resolvê-la. Portanto, no caso do KMike, criptografamos todas as chaves que geramos com um algoritmo de chave assimétrica, em que as chaves são geradas durante a execução.

Agora, temos um esquema bastante seguro, mas a chave usada para criptografar tudo é armazenada no próprio dispositivo para que qualquer pessoa possa pegar e descriptografar os arquivos. Então, criptografamos a chave privada gerada localmente com uma chave pública. Essa chave pública é então incorporada ao ransomware, cuja chave privada correspondente é armazenada em nosso servidor. Com esse esquema, podemos criptografar todos os arquivos sem fazer nenhuma conexão de rede com nosso servidor. Isso também garante que nenhuma das chaves seja armazenada em formato de texto sem formatação no disco.

Resumindo:

  • Criptografe todos os arquivos do usuário com AES-256-CBC.
  • Chave AES aleatória e IV para cada arquivo.
  • Criptografe chaves AES com a chave pública RSA-2048 gerada localmente.
  • Criptografe a chave privada gerada localmente com a chave pública comum RSA-2048

 

Comunicação

Depois de criptografar todos os arquivos da vítima, a próxima etapa é exibir uma mensagem de resgate e descriptografar os arquivos após o pagamento ter sido feito.

As mensagens de resgate podem ser exibidas de várias maneiras: alterando o plano de fundo da área de trabalho, criando um arquivo de texto com a mensagem de resgate, etc. Precisamos garantir que o servidor seja facilmente acessível ao ransomware, mas difícil para outros decifrarem.

É aqui que entram os algoritmos de geração de domínio (DGA). Os DGAs são algoritmos determinísticos e podem gerar valores pseudoaleatórios, o que significa que gerarão a mesma saída aleatória para uma determinada semente. Usamos isso para gerar centenas, se não milhares, de domínios e começar a enviar solicitações para todos os domínios. Depois de sabermos o valor inicial, que pode ser algo como a data atual ou o valor de uma moeda em um determinado momento, podemos registrar aleatoriamente um pequeno número de domínios e garantir que ele esteja acessível para o ransomware.

Geramos um endereço de bitcoin exclusivo para cada máquina infectada para dificultar o rastreamento dos adversários.

Depois que o pagamento for feito e verificado, podemos descriptografar a chave assimétrica gerada localmente da máquina no próprio servidor e devolver a chave descriptografada, para não expor a chave privada mestra em nenhum momento.

Assim, o ciclo de vida do ransomware, da infecção à descriptografia, termina aqui. Para ver o código do KMike, visite este repositório.

Nenhum item encontrado.

Blogs relacionados