Platão Inteligência de Dados.
Pesquisa Vertical e AI.

Sneaky Shellcode: Windows Fibers oferece execução de código à prova de EDR

Data:

As fibras do Windows, componentes pouco conhecidos do sistema operacional Windows, representam um caminho de execução de código amplamente não documentado que existe exclusivamente no modo de usuário – e, portanto, é amplamente ignorado pelos plataformas de detecção e resposta de endpoint (EDR). Como tal, é possível que os invasores os explorem para chegar furtivamente aos PCs e implantar cargas maliciosas.

Isso é de acordo com Daniel Jary, pesquisador de segurança independente, que apresentou dois novos ataques de prova de conceito (PoC) usando fibras em uma sessão na Black Hat Asia na quinta-feira.

As fibras são uma alternativa aos “threads” padrão que o Windows usa para executar código do sistema operacional ou de um aplicativo, explica ele.

“Threads são como trabalhadores, essencialmente, dentro de um processo ou aplicativo do Windows e, tradicionalmente, sempre foram a forma como você executa código e realiza tarefas”, diz ele à Dark Reading. “Mas há uma maneira mais específica de fazer isso, por meio de fibras.”

Fibras: um caminho esquecido e negligenciado do sistema operacional Windows

As fibras, quando usadas, existem dentro dos fios – são essencialmente versões menores e mais leves do conceito de fio maior. As fibras foram inicialmente desenvolvidas numa época em que as CPUs tinham menos núcleos disponíveis e só podiam acomodar um determinado número de threads. Em um nível mais alto, os menores eram uma forma de expandir a capacidade, permitindo que os desenvolvedores dividissem as cargas de trabalho em um único thread e tornassem os processos mais eficientes.

“Mas à medida que os computadores se tornaram mais poderosos, com mais memória para usar, as fibras tornaram-se um tanto redundantes na grande maioria dos cenários”, explica Jary. “E é por isso que muitas pessoas realmente não ouviram falar deles e eles são um pouco obscuros, mas eles servem a alguns propósitos para alguns aplicativos legados antigos e uma forma de portar programas de outros sistemas operacionais para o Windows. E alguns processos do Windows ainda usam fibras.”

Assim, as fibras desfrutam da duvidosa honra de ser uma função central do Windows e negligenciada pelas equipes de segurança. E para começar, Jary observa que os mecanismos tradicionais de detecção em plataformas EDR e mecanismos antivírus tendem a ignorá-los – tornando-os um caminho furtivo perfeito para executar códigos maliciosos.

“Os threads são fortemente monitorados por agentes EDR, que analisam syscalls e retornos de chamada no modo kernel para capturar telemetria e enviá-la a um mecanismo de regras para gerar detecção”, explica Jary. “Mas as fibras existem puramente no modo de usuário e não aparecem na coleção do kernel; portanto, a telemetria deles não está sendo realmente registrada pelos EDRs.”

Já existem algumas técnicas de código aberto para aproveitar o status despercebido das fibras. Um PoC de 2022, por exemplo, detalha um método para escondendo código shell malicioso dentro de uma fibra, evitando assim a maioria dos mecanismos AV.  

Outros criaram métodos para mascaramento de pilha de chamadas, que permite que os invasores ocultem um caminho de execução malicioso dentro de um thread (nesse caso, uma fibra) atrás de uma fibra diferente e inativa que seja benigna, evitando também a detecção. A técnica tira vantagem do fato de que, se houver fibras em uso, há sempre uma fibra ativa e, em seguida, uma fibra dormente com a qual ela é desligada. Este recurso de mascaramento foi adicionado ao Artefact Kit do Cobalt Strike em 2022.

Novas fronteiras na execução maliciosa de fibra

Jary começou a explorar se era possível melhorar as técnicas de fibra maliciosa existentes e criou dois novos PoCs, chamados Phantom Thread e Poison Fiber.

Os métodos de fibra adversários existentes têm certas desvantagens para os invasores: alguns indicadores ainda podem ser usados ​​para detecção de EDR; e a maldade não fica oculta na coleção de pilhas de chamadas baseadas em eventos in-line. E qualquer coleção de fibras dormentes, para a qual existem diversas técnicas, removeria o mascaramento da pilha de chamadas.

Phantom Thread é uma abordagem de mascaramento de pilha de chamadas de última geração que remove a capacidade de varreduras de memória para direcionar fibras, fazendo com que essas fibras sejam mascaradas como threads. Isso envolve criar uma fibra e, em seguida, corrigi-la para que ela se identifique como um thread. Então, torna-se possível remover quaisquer indicadores de pilha de chamadas de fibra e, essencialmente, ocultar completamente as fibras de qualquer varredura.

O segundo PoC, Poison Fiber, enumera todos os processos do Windows em execução, observando os threads em uso e se algum desses threads está usando fibras. Então, “ele apresenta a oportunidade de injetar sua carga útil ou seu código shell em uma fibra inativa”, explica Jary.

“Você só pode operar uma fibra por thread por vez, o que significa que você sempre terá outra fibra inativa estacionada em algum outro lugar da pilha”, diz ele. “Quando executamos nosso código usando Poison Fiber, isso injeta nosso código em uma fibra inativa, então não precisamos suspender o thread para injetar o shellcode, que é um grande indicador de atividade maliciosa. E, como injetamos a carga útil em uma fibra inativa, o aplicativo aciona a execução para nós e não iniciamos a execução nós mesmos.” A técnica tem o benefício adicional de permitir também a execução remota de código (RCE).

Acorde para o potencial adversário da fibra

Embora permaneçam um tanto obscuras, as fibras devem estar na lista de vetores de ataque das equipes de segurança, alerta Jary, que ainda não divulgou publicamente seus PoCs evoluídos ou detalhes granulares sobre os métodos. Ele raciocina que é apenas uma questão de tempo até que outros encontrem maneiras de superar as desvantagens dos métodos existentes de execução de fibra de código aberto.  

“O método de execução alternativo do Fiber é valioso para os invasores porque nos ajuda a evitar fontes de telemetria tradicionais que obtemos com threads, em particular retornos de chamada de kernel”, diz ele. “As fibras não são uma tática de aumento de privilégios; e eles não são um desvio de controle de acesso do usuário (UAC). Mas permite uma entrega de carga útil que recebe muito menos destaque e atenção da comunidade de segurança. As fibras são realmente simples de implementar, mas são mais difíceis de detectar. Isso os torna perfeitos para qualquer script kiddie usar para atacar empresas.”

Jary aconselha a implementação produtos EDR maduros que pode ser continuamente testado em relação a técnicas emergentes como essas.

“Converse com seus red teamers sobre métodos de fibra de código aberto que estão sendo usados ​​na natureza”, diz ele. “Faça alguma pesquisa para ver o que os invasores estão gostando, o que é popular no mundo e, em seguida, forneça isso à sua equipe de pesquisa e aos desenvolvedores de produtos de EDR. Isso ajudará a construir melhores defesas e provavelmente tornará a vida dos caçadores de ameaças um pouco mais fácil também.”

local_img

Inteligência mais recente

local_img

Fale Conosco

Olá! Como posso ajudá-lo?