Site Meter
Welcome to TechNet Blogs Sign in | Join | Help

Processos Protegidos no Windows Vista

O paper da McAfee citado no post anterior faz um belo trabalho em descrever as técnicas usadas pelos rootkits, tanto em modo usuário e em modo kernel. Resumindo, para subverter um processo em modo usuário, os rootkits (e outros malwares) podem:

■ Injetar código usando mecanismos de extensão do Windows ou da própria aplicação, como a chave de registro AppInit_DLLs.

■ Injetar código usando o mecanismo de troca de mensagens entre aplicações, através da API SetWindowsHookEx.

■ Injetar código usando os mecanismos de debugação (API CreateRemoteThread), seja carregando uma bibioteca (LoadLibrary) ou escrevendo conteúdo diretamente no espaço de memória do processo (WriteProcessMemory).

Todos estes são recursos são usados por programas legítimos e por serviços do próprio sistema operacional, e não é nem desejável nem viável eliminá-los para que rootkits e outros tipos de malware não os usem. No entanto, para alguns tipos específicos de aplicação, pode ser desejável que estes recursos não estejam disponíveis. São aplicações não precisam ser debugadas nem estendidas de nenhuma forma, e cujo conteúdo de memória não deva poder ser visto por outros processos.

Para estas aplicações o Windows Vista introduz um novo tipo de processo, chamado de Processo Protegido (protected processes). Um processso protegido é um tipo especial de processo onde não é possível injetar uma nova thread, usar os mecanismos de debugação, inserir hooks de mensagens ou acessar o conteúdo da memória, entre outras proteções. Desta forma um processo protegido não pode ser de forma alguma subvertido por um outro processo - a única forma possível seria através do uso de um componente do kernel.

Atualmente os principal usuários dos processos protegidos são para sistemas de DRM. O processo protegido bloqueia um tipo de ataque trivial: um atacante poderia acessar indevidamente um conteúdo protegido (música, filme, documento, etc.) lendo diretamente a memória virtual do processo. Isso não é o único mecanismo de proteção de um DRM, e sim apenas uma forma de evitar ataques em modo usuário, forçando o atacante a ter que atuar em modo kernel - onde devem estar colocadas outras defesas.

Bypassando a Proteção dos Processos Protegidos

A única forma de ultrapassar a proteção colocada nos processos protegidos é através de um modo kernel. Através do kernel é possível ler o conteúdo da memória nestes processos, injetar threads, ou mesmo retirar totalmente a proteção. Uma das objeções frequentemente colocadas contra a existência de processos protegidos é a de que eles não poderiam ser verificados pelos antivirus, e portanto poderiam ser utilizados para esconder malware. Isso não procede: softwares antivirus usam drivers de kernel para ler a memória e podem tranquilamente verificar processos protegidos.

Há alguns dias Alex Ionescu anunciou com grande fanfarra ter conseguido "quebrar a segurança" dos processos protegidos. Para aumentar ao máximo a repercussão, Ionescu se recusou a descrever a técnica utilizada, e postou um utilitário que faz a quebra para o Vista 32-bits. O que ele faz no entanto não traz nenhuma novidade: rodando com privilégio de administrador, ele instala um driver de kernel que remove o indicador de processo protegido, revertendo-o para um processo normal. No shit, Sherlock! Ionescu infelizmente tem o hábito de exagerar na retórica, como fez quando propagou para a toda a Internet ter conseguido bypassar a exigência de assinatura de código no kernel do Vista x64, para depois ter que admitir que sua técnica não funcionava.

Ainda assim o seu "ataque" é valido para reforçar a real segurança fornecida pelos processos protegidos.Trata-se de uma proteção implementada em modo usuário, válida somente contra ataques em modo usuário. Não é feita e não protege contra ataques executados em modo kernel.

 

Published Wednesday, April 25, 2007 3:42 AM by fcima

Comments

Wednesday, April 25, 2007 5:34 PM by Augusto Paes de Barros

# re: Processos Protegidos no Windows Vista

Cima, você pode implementar um controle Active X como processo protegido?

Seria interessante para as aplicações bancárias...

[]s

Augusto

Wednesday, April 25, 2007 5:45 PM by fcima

# re: Processos Protegidos no Windows Vista

Augusto, infelizmente não. Um ActiveX é ele mesmo apenas uma biblioteca, e sempre roda como extensão de um outro processo, normalmente o IE.

Agora, seria possível rodar o IE como processo protegido, e isso teria algum impacto positivo em relação ao malware? Seria uma boa pergunta. No Vista o IE roda com um label de integridade mais baixo, o que já funciona como uma camada de isolamento, mas colocar como um processo protegido oferece alguns recursos adicionais. Hora de testar...

Wednesday, April 25, 2007 9:20 PM by Edgar

# re: Processos Protegidos no Windows Vista

Cima, realmente foi decepcionante ver que o suposto ataque do Alex utilizava um device driver.

O único ponto interessante deste driver em minha opinião é o fato do mesmo somente precisar setar um bit na estrutura EPROCESS e pronto.

Assustador seria se um malware pudesse setar este bit sem a necessidade de um driver :)

[]'s

Saturday, April 28, 2007 10:27 PM by Vinicius Canto [MVP]

# re: Processos Protegidos no Windows Vista

Olá Cima,

vendo o "trabalho" do Alex voltei a pensar em um detalhe interessante sobre o UAC, do Vista.

Pensa comigo: desabilitar o UAC e rodar com uma conta de usuário comum o tempo inteiro não chega a ser mais seguro do que rodar com o UAC e mandar uma mensagem pro usuário perguntando se ele quer ou não continuar uma ação, alertando ele que a aplicação vai poder usar privilégios administrativos?

Pergunto isso justamente por causa da "técnica": se ele usa um driver e o usuário não tem permissão pra instalar, problema nenhum. Se o usuário não entender a mensagem e clicar onde não deve, lá se vai a segurança embora...

[]s,

Vinicius

New Comments to this post are disabled
 
Page view tracker