A Netskope amplia a liderança em proteção de dados com a aquisição da Dasera. Leia o comunicado de imprensa

fechar
fechar
  • Por que Netskope divisa

    Mudando a forma como a rede e a segurança trabalham juntas.

  • Nossos clientes divisa

    A Netskope atende a mais de 3.400 clientes em todo o mundo, incluindo mais de 30 das empresas da Fortune 100

  • Nossos parceiros divisa

    Fazemos parceria com líderes de segurança para ajudá-lo a proteger sua jornada para a nuvem.

Um Líder em SSE.
E agora Líder em Single-Vendor SASE.

Descubra por que a Netskope estreou como líder no Quadrante Mágico™ do Gartner® para Single-Vendor SASE

Obtenha o Relatório
Destaques de clientes visionários

Leia como os clientes inovadores estão navegando com sucesso no cenário atual de mudanças na rede & segurança por meio da plataforma Netskope One.

Baixe o eBook
Destaques de clientes visionários
A estratégia de comercialização da Netskope, focada em Parcerias, permite que nossos Parceiros maximizem seu crescimento e lucratividade enquanto transformam a segurança corporativa.

Saiba mais sobre os parceiros da Netskope
Grupo de diversos jovens profissionais sorrindo
Sua Rede do Amanhã

Planeje seu caminho rumo a uma rede mais rápida, segura e resiliente projetada para os aplicativos e usuários aos quais você oferece suporte.

Receba o whitepaper
Sua Rede do Amanhã
Apresentando a plataforma Netskope One

O Netskope One é uma plataforma nativa da nuvem que oferece serviços convergentes de segurança e rede para permitir sua transformação SASE e zero trust.

Saiba mais sobre o Netskope One
Abstrato com iluminação azul
Adote uma arquitetura Secure Access Service Edge (SASE)

O Netskope NewEdge é a maior nuvem privada de segurança de alto desempenho do mundo e oferece aos clientes cobertura de serviço, desempenho e resiliência inigualáveis.

Conheça a NewEdge
NewEdge
Netskope Cloud Exchange

O Cloud Exchange (CE) da Netskope oferece aos clientes ferramentas de integração poderosas para tirar proveito dos investimentos em estratégias de segurança.

Saiba mais sobre o Cloud Exchange
Vista aérea de uma cidade
A plataforma do futuro é a Netskope

Intelligent Security Service Edge (SSE), Cloud Access Security Broker (CASB), Cloud Firewall, Next Generation Secure Web Gateway (SWG) e Private Access for ZTNA integrados nativamente em uma única solução para ajudar todas as empresas em sua jornada para o Secure Access Service Arquitetura de borda (SASE).

Vá para a plataforma
Vídeo da Netskope
Next Gen SASE Branch é híbrida — conectada, segura e automatizada

Netskope Next Gen SASE Branch converge o Context-Aware SASE Fabric, Zero-Trust Hybrid Security e SkopeAI-Powered Cloud Orchestrator em uma oferta de nuvem unificada, inaugurando uma experiência de filial totalmente modernizada para empresas sem fronteiras.

Saiba mais sobre Next Gen SASE Branch
Pessoas no escritório de espaço aberto
Desenvolvendo uma Arquitetura SASE para Leigos

Obtenha sua cópia gratuita do único guia de planejamento SASE que você realmente precisará.

Baixe o eBook
Mude para serviços de segurança na nuvem líderes de mercado com latência mínima e alta confiabilidade.

Conheça a NewEdge
Rodovia iluminada através de ziguezagues na encosta da montanha
Permita com segurança o uso de aplicativos generativos de IA com controle de acesso a aplicativos, treinamento de usuários em tempo real e a melhor proteção de dados da categoria.

Saiba como protegemos o uso de IA generativa
Ative com segurança o ChatGPT e a IA generativa
Soluções de zero trust para a implementação de SSE e SASE

Conheça o Zero Trust
Passeio de barco em mar aberto
Netskope obtém alta autorização do FedRAMP

Escolha o Netskope GovCloud para acelerar a transformação de sua agência.

Saiba mais sobre o Netskope GovCloud
Netskope GovCloud
  • Recursos divisa

    Saiba mais sobre como a Netskope pode ajudá-lo a proteger sua jornada para a nuvem.

  • Blog divisa

    Saiba como a Netskope permite a transformação da segurança e da rede por meio do serviço de acesso seguro de borda (SASE)

  • Eventos e workshops divisa

    Esteja atualizado sobre as últimas tendências de segurança e conecte-se com seus pares.

  • Security Defined divisa

    Tudo o que você precisa saber em nossa enciclopédia de segurança cibernética.

Podcast Security Visionaries

O futuro da segurança: mudança quântica, inteligência artificial e macropolítica
Emily Wearmouth e Max Havey conversam com o CEO da Netskope, Sanjay Beri, e o CTO Krishna Narayanaswamy sobre o futuro da segurança.

Reproduzir o podcast Navegue por todos os podcasts
O futuro da segurança: mudança quântica, inteligência artificial e macropolítica
Últimos blogs

Leia como a Netskope pode viabilizar a jornada Zero Trust e SASE por meio de recursos de borda de serviço de acesso seguro (SASE).

Leia o Blog
Nascer do sol e céu nublado
SASE Week 2024 On-Demand

Aprenda a navegar pelos últimos avanços em SASE e confiança zero e explore como essas estruturas estão se adaptando para enfrentar os desafios de segurança cibernética e infraestrutura

Explorar sessões
SASE Week 2024
O que é SASE?

Saiba mais sobre a futura convergência de ferramentas de redes e segurança no modelo predominante e atual de negócios na nuvem.

Saiba mais sobre a SASE
  • Empresa divisa

    Ajudamos você a antecipar os desafios da nuvem, dos dados e da segurança da rede.

  • Carreira divisa

    Join Netskope's 3,000+ amazing team members building the industry’s leading cloud-native security platform.

  • Customer Solutions divisa

    Estamos aqui junto com você a cada passo da sua trajetória, assegurando seu sucesso com a Netskope.

  • Treinamento e credenciamentos divisa

    Os treinamentos da Netskope vão ajudar você a ser um especialista em segurança na nuvem.

Apoiando a sustentabilidade por meio da segurança de dados

A Netskope tem o orgulho de participar da Visão 2045: uma iniciativa destinada a aumentar a conscientização sobre o papel da indústria privada na sustentabilidade.

Saiba mais
Apoiando a sustentabilidade por meio da segurança de dados
Ajude a moldar o futuro da segurança na nuvem

Na Netskope, os fundadores e líderes trabalham lado a lado com seus colegas, até mesmo os especialistas mais renomados deixam seus egos na porta, e as melhores ideias vencem.

Faça parte da equipe
Vagas na Netskope
Netskope dedicated service and support professionals will ensure you successful deploy and experience the full value of our platform.

Ir para Soluções para Clientes
Netskope Professional Services
Proteja sua jornada de transformação digital e aproveite ao máximo seus aplicativos de nuvem, web e privados com o treinamento da Netskope.

Saiba mais sobre Treinamentos e Certificações
Grupo de jovens profissionais trabalhando

REPLAY: Revisitando as técnicas de anti-análise do Play Ransomware

08 de agosto de 2024

Sumário

O ransomware Play, também conhecido como PlayCrypt, é um ransomware que surgiu pela primeira vez em junho de 2022. O ransomware tem como alvo setores como saúde e telecomunicações, bem como uma ampla variedade de regiões, como América Latina, Europa e América do Norte. O ransomware Play é conhecido por obter acesso às redes por meio de contas válidas comprometidas ou pela exploração de vulnerabilidades específicas. Uma vez dentro da rede, ele usa um grande conjunto de ferramentas conhecidas de pós-exploração para continuar seu ataque. Ferramentas como Bloodhound, PsExec, Mimikatz e AdFind são alguns exemplos de ferramentas usadas anteriormente em ataques envolvendo esse ransomware.

Outro aspecto do malware que o torna famoso é a quantidade de técnicas anti-análise que ele usa em suas cargas, como abusar do SEH e usar o ROP para redirecionar o fluxo de execução. Ao empregar técnicas para retardar o processo de engenharia reversa, os agentes de ameaças dificultam a detecção e a prevenção do malware. 

Em 2022, outros pesquisadores publicaram uma excelente postagem no blog analisando o malware em si e algumas das técnicas anti-análise que ele usava. Nesta postagem do blog, revisaremos as técnicas de anti-análise empregadas pelas variantes recentes do ransomware Play, explicando como elas funcionam e também como podemos derrotar algumas delas usando scripts de automação.

Programação orientada ao retorno (ROP)

Ao fazer engenharia reversa de malware, garantir que o fluxo de controle não seja ofuscado é uma das primeiras coisas que precisamos fazer para entender adequadamente o malware. 

Como uma tentativa de ofuscar seu fluxo de controle, o ransomware Play geralmente usa uma técnica de ROP em sua carga útil. Ele faz isso chamando mais de uma centena de funções que corrigem o valor no topo da pilha e, em seguida, redirecionam o fluxo de execução para ele. Antes de falarmos sobre como o malware faz exatamente isso, vamos dar uma olhada em como as instruções de montagem CALL e RET funcionam em geral.

Quando ocorre uma CHAMADA (neste caso, uma chamada próxima, para ser mais específica), o processador envia o valor do registrador do ponteiro de instrução (EIP neste caso) na pilha e, em seguida, ramifica para o endereço especificado pelo operando de destino da chamada, que nesse caso é um deslocamento em relação ao ponteiro de instrução. O endereço no ponteiro de instrução, mais esse deslocamento, resultará no endereço da função a ser chamada.

A instrução RET, por outro lado, indica o fim de uma chamada de função. Essa instrução é responsável por transferir o fluxo de controle do programa para o endereço no topo da pilha. E sim, esse é exatamente o endereço enviado inicialmente pela instrução de chamada!

Considerando o que foi mencionado, em um cenário ideal, o endereço destacado na imagem abaixo seria a próxima instrução a ser executada após uma chamada para a função de destino (sub_42a4b9):

Exemplo de chamada de função

O que o malware faz para abusar do funcionamento das instruções CALL e RET pode ser observado na imagem a seguir:

Exemplo de uma técnica ROP usada para redirecionar o fluxo do programa

Depois que a função é chamada, o endereço 0x42a4b4 é colocado na pilha, então o ESP apontará para ele. A função chamada então adiciona o valor 0xA ao endereço apontado pelo ESP e retorna usando a instrução RET. Essas operações resultam no redirecionamento do fluxo de controle para 0x42a4be (0x42a4b4 + 0xa) em vez de 0x42a4b4.

Ao aplicar essa técnica, o malware torna não apenas a análise estática mais complexa, já que o fluxo do programa não será trivial, mas também pode dificultar a depuração, pois se você passar por cima desse tipo de função, muitas coisas podem acontecer antes que a “próxima instrução” regular seja executada.

Outra maneira pela qual o malware implementa essa técnica de ROP é usando a abordagem mostrada no código abaixo, que é muito comum em códigos de shell. O deslocamento especificado pelo operando de destino da instrução de chamada é zero, resultando no endereço da função a ser chamada exatamente como o endereço da próxima instrução. Esse endereço é então colocado no topo da pilha e o resto das operações são exatamente iguais às do exemplo anterior:

Outro exemplo da técnica ROP usada

Para ajudar na análise do ransomware Play, o Netskope Threat Labs desenvolveu um script, com base no trabalho anterior de outros pesquisadores, para corrigir a ofuscação ROP empregada.

O script procura possíveis candidatos ao ROP, coleta o deslocamento a ser adicionado ao topo da pilha e corrige os endereços que executam as chamadas de ROP com um salto absoluto, em que o alvo é o endereço de transferência modificado calculado em tempo de execução.

Veja a seguir um exemplo de como seria a carga útil do malware antes e depois da execução do script:

Antes:

Exemplo de instruções da carga útil do malware antes da execução do script de correção

Depois de:

Exemplo de instruções da carga útil do malware após a execução do script de correção

Anti-desmontagem

Uma técnica antidesmontagem usada para enganar analistas e desmontadores é transferir o fluxo de execução para alvos localizados no meio de outras instruções válidas.

Vamos usar a chamada de função em 0x42a4af usada na seção ROP acima como exemplo. Os opcodes para essa instrução CALL são “E8 05 00 00 00”. O byte 0xE8 é o opcode da própria instrução CALL e os outros 4 bytes representam o operando de destino (o deslocamento em relação ao EIP).

Como discutimos anteriormente, o endereço da função a ser chamada seria o valor de EIP (0x42a4b4) + o deslocamento (0x5) e isso resultaria no endereço 0x42a4b9. No entanto, esse valor cai no último byte de outra instrução válida em 0x42a4b5:

Exemplo de endereço de função no meio de uma instrução válida

Em termos de execução, esse tipo de comportamento não muda nada porque o processador entenderá as instruções corretamente. No entanto, um desmontador pode não apresentar as instruções corretamente, dependendo da abordagem usada (por exemplo. varredura linear), tornando a análise estática um pouco complicada.

O script que fornecemos para corrigir as chamadas de ROP também lida com esse cenário para os alvos de ROP. Considerando que usamos uma instrução JMP para corrigir as chamadas, acabamos também forçando o desmontador a entender o fluxo correto a seguir.

Código inútil

Embora essa seja uma técnica muito simples, ainda vale a pena mencioná-la, pois ela pode definitivamente retardar a análise do malware. A técnica de inserção de código inútil ou lixo é exatamente o que o nome sugere: a inserção de instruções desnecessárias no binário. 

Diferentemente das técnicas apresentadas até agora, a inserção de código inútil não enganaria o desmontador, mas pode fazer com que se perca tempo analisando códigos desnecessários e o ransomware Play o usa com bastante frequência, especialmente nos alvos de chamadas ROP.

Exemplo de instruções inúteis

Tratamento estruturado de exceções (SEH)

Outra técnica anti-análise usada pelo malware é abusar de um mecanismo do Windows chamado Tratamento Estruturado de Exceções, usado para lidar com exceções.

No sistema operacional Windows, cada thread tem uma estrutura chamada Thread Environment Block (TEB). Em um ambiente x86, o endereço do TEB está localizado no registro FS e contém informações úteis para o próprio thread e reside no espaço de endereço do processo. O primeiro campo dessa estrutura é outra estrutura chamada Thread Information Block (TIB) e o primeiro item dessa estrutura contém uma lista do que é chamado de “registros de registro de exceções”.

Cada um desses registros é composto por uma estrutura que contém dois valores. O primeiro é um ponteiro para o “próximo” registro na lista e o segundo é um ponteiro para o manipulador responsável por lidar com a exceção.

Em termos simples, quando ocorre uma exceção, o último registro adicionado à lista é chamado e decide se ele tratará a exceção acionada ou não. Se esse não for o caso, o próximo manipulador na lista é chamado e assim por diante até que o final da lista seja alcançado. Nesse caso, o manipulador padrão do Windows é chamado.

A forma como o Play abusa desse recurso é inserindo seu próprio manipulador de exceções na lista de tratamento de exceções e, em seguida, forçando uma exceção. No exemplo abaixo, o registro EBX contém o endereço do manipulador de exceções de malware e, uma vez inserido como o primeiro elemento da lista (as quatro instruções destacadas na parte superior), o malware zera o EAX e o divide por zero, causando uma exceção (as duas instruções destacadas na parte inferior):

Manipulador de exceções de malware sendo inserido na lista de exceções

Depois que a exceção é acionada, o último manipulador registrado é chamado. O malware usa esse primeiro manipulador para registrar e chamar um segundo, forçando uma segunda exceção, mas agora, por meio da instrução INT1, para gerar uma exceção de depuração. O segundo manipulador registrado é o responsável por avançar na execução “normal” do malware.

Essa técnica pode ser muito irritante ao depurar o malware, pois o depurador interrompe a execução quando a exceção ocorre, forçando-nos a encontrar o manipulador de exceções e garantindo que tenhamos controle sobre ele de antemão.

Ofuscação de cordas

Todas as strings relevantes usadas pelo malware são ofuscadas, dificultando a sinalização estática de qualquer string relevante. Para desofuscar suas strings em tempo de execução, o malware gera uma chave de 8 bytes e a usa como entrada para o algoritmo de desofuscação.

O algoritmo para gerar a chave é bem simples. Ele recebe um valor inicial codificado e executa algumas operações aritméticas básicas dentro de um loop. O contador de ciclos também é um valor codificado que costumava ser muito grande nas amostras analisadas (por exemplo. 0x20c87548). 

Podemos simplificar as operações usadas para gerar a chave no seguinte trecho de python:

x = seed
y = 0
i = 0

enquanto i < contador:
a = (x * x) > > 32
b = (x * y) + (x * y)
if y:
y = (a + b) & 0xffffffff
else:
y = a
x = (x * x) & 0xffffffff) + i i += 1

key = struct.pack (" <
2I ", * [x, y])

O algoritmo usado para desofuscar as strings envolve mais algumas etapas e algumas outras operações, como AND, OR e NOT. Essas operações são aplicadas na própria string ofuscada e a última etapa do loop de desofuscação é aplicar uma operação XOR de vários bytes usando a chave de 8 bytes gerada anteriormente. As operações podem ser simplificadas no seguinte trecho de python:

i = 0

enquanto i < len (enc_str):
dec_str [i] = enc_str [i]
j = 0
enquanto j < 8:
v1 = (dec_str [i] > > j) & 1
v2 = (dec_str [i] > > (j + 1)) & 1 se v1!
= v2:
se v1 == 0:
dec_str [i] = (dec_str [i] & ~ (1 < < (j + 1))) & 0xFF
senão: dec_str [i] = (
dec_str [i] | (1 < < (j + 1)) & 0xFF
se v2 == 0: dec_str [i] = (dec_str [i] = (dec_str [i] r [i] & ~ (1 < <)
j)) & 0xFF
senão:
dec_str [i] = (dec_str [i] | (1 < < j)) & 0xFF
j += 2

dec_str [i] = ~dec_str [i] & 0xFF dec_str [i] = (dec_str [i] ^ chave [i% len (chave)]) & 0xFF
i += 1

Vale ressaltar que os algoritmos contêm muitas operações inúteis que não são necessárias para a desofuscação em si e que foram removidas nos trechos apresentados.

A equipe do Netskope Threat Labs criou dois scripts para ajudar no processo de desofuscação: um para gerar a chave de 8 bytes automaticamente e outro para realizar a descriptografia da string.

Hash de API

O malware usa a conhecida técnica de hash de API para resolver as funções da API do Windows que usa em tempo de execução. O algoritmo usado é o mesmo sinalizado em 2022, que é xxHash32, com a mesma semente de 1 fornecida à função de hash. 

O algoritmo xxHash32 pode ser facilmente reconhecido devido à quantidade de constantes que ele usa em suas operações:

Exemplo de constantes usadas no algoritmo xxHash32

Como uma tentativa de ofuscar ainda mais as funções com hash, o malware adiciona ou subtrai constantes específicas aos resultados do hash. O valor constante é diferente para cada amostra. Veja a seguir um exemplo em que o malware adicionou o valor 0x4f5dcad4 ao resultado do hash:

Valor constante adicionado ao valor em hash na função de hash da API

Netskope detection

  • Proteção Contra Ameaças Netskope
    • Win32.Ransomware.Playde
  • Netskope Advanced Threat Protection provides proactive coverage against this threat.
    • Gen.Malware.Detect.By.Stheur e Gen:Heur.Mint.Zard.55 indicam uma amostra que foi detectada usando análise estática
    • Gen.detect.by.NSCloudSandbox.tr indica uma amostra que foi detectada pela nossa sandbox na nuvem

Conclusões

Como podemos observar nesta postagem do blog, o ransomware Play emprega várias técnicas de anti-análise como uma tentativa de desacelerar sua análise. Da ofuscação de sequências ao ROP e ao uso do sequestro de SEH, os agentes de ameaças geralmente atualizam seu arsenal e expandem suas técnicas para tornar o impacto de seus ataques ainda mais destrutivo. O Netskope Threat Labs continuará a acompanhar a evolução do ransomware Play e seu TTP.

IOCs

Todos os indicadores de comprometimento (IOCs) relacionados a esta campanha, scripts e regras Yara podem ser encontrados no repositório GitHub da Netskope.

author image
Leandro Fróes
Leandro Fróes é Engenheiro Sênior de Pesquisa de Ameaças na Netskope, onde se concentra em pesquisa de malware, engenharia reversa, automação e aprimoramento de produtos.

Mantenha-se informado!

Subscribe for the latest from the Netskope Blog