/
Contenção de ransomware

Desmistificando técnicas de ransomware usando assemblies.Net: 5 técnicas principais

Os ataques de ransomware prosperam ao evitar a detecção e, em seguida, criptografar os dados em um sistema. Na análise após um ataque de ransomware, muitas vezes lemos sobre como o ataque usou uma combinação de diferentes tipos de arquivos com uma variedade de técnicas.

Então, o que tudo isso realmente significa? Nesta série, vamos detalhar tudo usando o .Net estrutura de software para mostrar como esses recursos do ransomware são possíveis.

Na minha série anterior de três partes sobre cargas úteis e beacons de malware, o foco estava no Metasploit Estrutura de teste de penetração. Usamos seu produto pronto medidor carga útil de malware para mostrar várias técnicas do invasor. O primeiro artigo examinou como as comunicações maliciosas começam, a infraestrutura do atacante e a análise forense de um ataque. O segundo artigo analisou categorias e tipos de cargas úteis junto com algumas técnicas de manipulação na memória. O parte final dessa série focada em técnicas de evasão e mitigação.

Nesta série, criaremos nossos próprios arquivos de carga útil individuais (também conhecidos como assemblies) aproveitando o .Net estrutura de software, mas com foco em ransomware. Começaremos dividindo os recursos de ransomware e malware em exemplos de técnicas individuais para entender como eles funcionam sozinhos. Em última análise, algumas dessas técnicas individuais são combinadas em uma única carga útil de ransomware malicioso, com efeitos muitas vezes devastadores.

Técnica 1: Downloaders, droppers e loaders

Começamos analisando como o ransomware ou o malware podem se conectar a uma rede infectada. Essa é a capacidade de se conectar a um sistema remoto, baixar cargas adicionais, colocá-las no sistema comprometido e executá-las (ou seja, carregá-las na memória).

Abaixo está um exemplo de .Net aplicativo de linha de comando (console) que:

  • Atua como um downloader baixando outro aplicativo executável remoto (putty.exe) da Internet
  • Coloca o aplicativo baixado em um temperatura pasta em disco no computador
  • Renomeia o aplicativo para putty_new.exe
  • Executa automaticamente o aplicativo baixado no computador para que ele seja carregado na memória

Quando o armazenamento de carga útil é usado, o que significa ter vários arquivos maliciosos fazendo coisas diferentes, o Stager (pequena carga útil inicial) pode se tornar o baixador e também, vagamente, o conta-gotas para o Stage (carga útil principal maior). Também pode ser o carregador do palco. As técnicas empregadas dependerão da avaliação do risco de detecção pelo agente da ameaça, também conhecida como considerações de segurança operacional.

UM baixador é responsável por retirar uma carga útil de uma fonte remota, como um servidor web ou servidor FTP. Isso geralmente é feito pela Internet. Portanto, um downloader exigirá que alguma conexão de rede seja tentada para acessar a fonte remota.

UM conta-gotas, por outro lado, é o principal responsável por entregar ou descartar uma carga útil no sistema da vítima. Portanto, um downloader também pode ser um dropper, mas um dropper pode não necessariamente ser um downloader porque um dropper já pode ter a carga maliciosa incorporada como arquivos executáveis portáteis (PE) ou DLLs. Esses tipos de arquivo serão discutidos posteriormente. Os droppers são comumente usados em ataques; exemplos populares são os ataques à cadeia de suprimentos da Solarwinds e da Kaseya. Ambos envolveram o uso de um software de agente fornecedor comprometido usado como conta-gotas para cargas maliciosas. Este último sendo usado pelo Ransomware maligno grupo.

UM carregador é responsável por configurar o sistema da vítima para executar outra carga maliciosa, especialmente no caso de cargas úteis somente de memória. Aqui, configurar significa garantir a alocação de espaço de memória necessária, geralmente injetando uma DLL no espaço de memória de outro processo e, em seguida, configurando as permissões de memória corretas. Em seguida, o carregador inicia a carga útil ou executa os threads necessários.

Técnica 2: EXE carregando um arquivo DLL

As cargas de ransomware podem estar na forma de um arquivo EXE ou DLL. A seguir, veremos como um arquivo executável do Windows, também conhecido como arquivo EXE, pode carregar o que é conhecido como arquivo DLL (biblioteca de vínculo dinâmico) para aproveitar o código que ele contém.

EXE e uma DLL são dois tipos de .Net montagens que contêm instruções de código de programação de computador e informações associadas (metadados). Essas instruções e metadados são reunidos em um único arquivo resultante — EXE ou DLL .Net montagem. Esses dois tipos de arquivos permitem que o código de programação do computador seja executado (EXE) em um sistema Windows ou armazenado como um arquivo de biblioteca (DLL), que pode então ser “emprestado” e lido por outros arquivos. No caso de uma DLL, esse processo é muito parecido com o modo como várias pessoas podem pegar o mesmo livro emprestado de uma biblioteca em momentos diferentes para ler seu conteúdo. Na segunda parte desta série, exploraremos essas duas montagens com mais detalhes em relação ao .Net. estrutura de software.

Por enquanto, aqui está um exemplo muito simples para demonstrar o uso desses dois tipos de .Net assemblies — um executável (EXE) que executa seu próprio código e depois carrega e lê o código externo de um arquivo DLL. O executável então passa alguma entrada para o código DLL carregado. Finalmente, a DLL usa a entrada recebida do EXE para exibir uma mensagem de volta para o usuário que executa o aplicativo. Abaixo está o código em ação:

Este aplicativo simples também demonstra a relação entre EXE e uma DLL .Net montagens. Esse tipo de relacionamento é usado legitimamente por muitos aplicativos e sistemas operacionais (bibliotecas compartilhadas), incluindo o próprio sistema operacional Windows. O Windows empacota grande parte de seu próprio código como DLLs para que ele possa ser compartilhado por diferentes aplicativos.

A imagem abaixo mostra o código de programação do EXE e da DLL no exemplo anterior. O código é escrito usando a linguagem de programação C#, que é uma das linguagens suportadas pelo .Net. Na imagem, as referências do código DLL são destacadas para dar ênfase:

As DLLs são um meio eficaz de escrever um trecho de código uma vez, de forma que possa ser usado várias vezes por diferentes executáveis como uma biblioteca compartilhada ou dinâmica. Como resultado disso, ele também é muito usado por muitas famílias de malware e ransomware. Técnicas como carregamento lateral de DLL e sequestro de DLL são técnicas maliciosas comuns que aproveitam a relação entre elas. .Net montagens.

Técnica 3: Reconhecer e lançar binários vivos fora da terra

Continuamos com uma combinação de técnicas importantes: a capacidade de reunir informações úteis sobre um sistema alvo (Discovery) e, ao mesmo tempo, lançar outros binários ou executáveis nesse sistema (Spawning). Na imagem aqui, nosso executável personalizado inicial lança um executável ou binário nativo no sistema Windows de destino, mostrando um ataque Living Off the Land (LoTL).

O exemplo mostra nosso aplicativo C# inicial em execução e, em seguida, coletando algumas informações úteis sobre o sistema de destino, mostradas pelo texto verde na saída. Observe as informações da unidade coletadas. Essas informações podem ser aproveitadas pelo ransomware para direcionar arquivos nessas unidades e, em seguida, serem exfiltradas antes da criptografia para uma demanda de resgate geralmente pesada.

O aplicativo continua lançando um executável externo do sistema — o prompt de comando do Windows (cmd.exe) executável. Em seguida, o aplicativo personalizado passa alguns comandos do Windows para o Windows. cmd.exe processo a ser exibido (mostrado em texto vermelho), neste caso, informações da versão do sistema Windows. Para o benefício deste artigo, o aplicativo C# personalizado exibe a saída das ações que executa, bem como informações sobre o processo iniciado. Essa capacidade de iniciar outros aplicativos externos também é útil para iniciar processos de vítimas para, eventualmente, injetar código malicioso.

Técnica 4: Codificação de dados

Outra técnica útil é a codificação de dados. Esse é o processo de usar um algoritmo para representar dados de uma forma diferente. Por exemplo, um tipo de codificação, base64, é usado legitimamente em algumas solicitações da Web para transmitir dados de um lado para o outro, como autorização HTTP e autenticação básica em chamadas de API. No entanto, o mesmo exemplo de codificação base64 também pode ajudar a ocultar certos textos e comandos usados por um programa malicioso ou carga útil. Ele pode ser usado para ofuscar partes do código, como URLs de retorno de chamada ou um arquivo. Essa técnica é mostrada abaixo em nosso programa C# autônomo.

Neste exemplo de aplicativo específico, o código pega algum texto que, nesse caso, é a URL”https://listener.malware.bad”, o converte em uma matriz de bytes de computador e, em seguida, executa o algoritmo de codificação base64 nos bytes para convertê-lo no texto ASCII alfanumérico de”aHR0cHm6Ly9SaXn0ZW5LCI5tywx3yxjllMJHzA==” mostrado na seção de codificadores da tela do aplicativo acima. Esse processo pode ser revertido programaticamente para recuperar o texto original, conforme mostrado na seção do decodificador. Ao fazer isso, o URL fica oculto à vista de todos e não pode ser imediatamente determinado pelo que é — um URL malicioso.

Técnica 5: Criptografia

Finalmente, analisamos a criptografia. Criptografar arquivos em um sistema comprometido é o que tornou sinônimo de ransomware. Novamente, esse é um recurso legítimo de proteger dados em repouso que, como a maioria das outras técnicas, passou a ser usado para fins maliciosos em ransomware.

No exemplo abaixo, temos um aplicativo de criptografia C#. Primeiro, ele faz uma cópia do arquivo destinado à criptografia e depois criptografa a cópia, deixando o original intacto.

Aqui, o conteúdo original do arquivo original, Data1.txt, são copiados para outro arquivo, Data1-Encrypted.txte, em seguida, esse novo arquivo é criptografado.

A criptografia é uma das principais técnicas usadas pelo ransomware e forma a base para manter os sistemas comprometidos como resgate. Também pode ser útil para ocultar cargas úteis ou carregadores de malware em trânsito ou em repouso para evitar a detecção.

Leia a parte 2 da série em 22 de maio

O próximo artigo explorará os .Net estrutura de software e linguagem de programação C# associada como referência para algumas das táticas e técnicas mostradas aqui e como elas são finalmente facilitadas.

Saiba mais sobre como a segmentação Illumio Zero Trust pode ajudar você a conter violações de ransomware.

Tópicos relacionados

Nenhum item encontrado.

Artigos relacionados

Estudo sobre o custo global do ransomware: o que os números nos dizem
Contenção de ransomware

Estudo sobre o custo global do ransomware: o que os números nos dizem

Saiba como os atacantes estão migrando para a disrupção operacional, por que a prevenção não é suficiente e como o Zero Trust e a microssegmentação contêm o impacto do ransomware.

Como atender às orientações sobre ransomware Phobos da CISA com o Illumio
Contenção de ransomware

Como atender às orientações sobre ransomware Phobos da CISA com o Illumio

Descubra as orientações da CISA para se proteger contra o ransomware Phobos e como a plataforma de segmentação Illumio Zero Trust ajuda a atender a esses padrões.

Como a Brooks usa o Illumio para impedir que o ransomware funcione desenfreadamente
Contenção de ransomware

Como a Brooks usa o Illumio para impedir que o ransomware funcione desenfreadamente

Veja por que a Brooks escolheu a segmentação Illumio Zero Trust para garantir a confiabilidade de seus negócios de varejo e comércio eletrônico.

Cargas úteis e sinalizadores de malware: tipos de cargas maliciosas
Resiliência cibernética

Cargas úteis e sinalizadores de malware: tipos de cargas maliciosas

Compreenda diferentes tipos de cargas úteis e analizar um exemplo de código malicioso que elas podem usar.

Cargas úteis e sinalizadores de malware: como as comunicações maliciosas começam
Resiliência cibernética

Cargas úteis e sinalizadores de malware: como as comunicações maliciosas começam

Os beacons de malware são a forma como um invasor pode executar malware por meio de um script. Reconhecê-los ajuda a desenvolver estratégias de detecção e contenção.

Cargas úteis e beacons de malware: técnicas para mitigar o impacto
Resiliência cibernética

Cargas úteis e beacons de malware: técnicas para mitigar o impacto

Na parte final desta série, nos concentramos em algumas das técnicas de ofuscação usadas para disfarçar cargas úteis de malware e examinamos as técnicas de mitigação que as organizações podem empregar.

Assume Breach.
Minimize Impact.
Increase Resilience.

Ready to learn more about Zero Trust Segmentation?