Udostępnij za pośrednictwem


"Blue Pill"

Há duas semanas atrás, no Black Hat Briefings em Las Vegas, a pesquisadora polonesa Joanna Rutkowska apresentou um novo tipo de rootkit: o "Blue Pill", o primeiro rootkit que utiliza os recursos de virtualização  para ficar "absolutamente invisível" no computador infectado. É um ataque extremamente interessante e poderoso, mesmo ainda estando em fase de protótipo, e que na minha opinião pode mudar fundamentalmente a forma como os softwares maliciosos trabalham.

Já vimos em um post anterior como os softwares de virtualização atuais trabalham e o impacto disso na segurança. Vimos que na virtualização feita com ring compression, sem auxílio específico do hardware, o sistema rodando na máquina virtual sempre vai ter como saber que está sendo virtualizado.

A nova arquitetura de virtualização assistida por hardware, presente nos novos processadores Intel e AMD, torna desnecessário se fazer ring compression e faz com que as máquinas virtuais rodem em ring 0, como fariam se não estivessem sendo virtualizados. Esta e outras mudanças feitas em hardware torna possível em tese esconder totalmente do sistema operacional o fato de ele estar rodando em uma máquina virtual, e é essa propriedade que é usada no "blue pill".

O ataque é feito executando um código que atua como um gerenciador de máquinas virtuais (o "blue pill"), e move o sistema operacional que estava rodando nativamente para dentro de uma máquina virtual, sem que ele perceba. O  " blue pill"passa então a fica ativo e no controle do sistema, monitorando se desejar todas as atividades que forem feitas dentro da máquina virtual, sem que possa ser detectado.

Joanna Rutkowska mostrou um protótipo deste ataque em sua palestra, usando o Windows Vista Beta 2 rodando em cima do processador AMD x64 com suporte a virtualização. O ataque pode ser feito no entanto sobre qualquer sistema operacional, e no Vista ele exige privilégios de administrador.

O "blue pill" é realmente indetectável? Na minha opinião não totalmente. Eu vejo três caminhos por onde ele poderia ser detectado:

1. Um bug no hardware de virtualização ou no próprio "blue pill". Para ser totalmente indetectável a virtualização teria que ser perfeita e absolutamente igual ao hardware nativo, e mesmo pequenas diferenças na implementação poderiam ser usadas para detectar o ataque.

Este caminho no entanto vai ser tornar cada vez mais difícil à medida em que os softwares que usem o "blue pill" forem se aperfeiçoando.

2. Mesmo na virtualização por hardware algumas instruções ainda tem que ser emuladas por software (por exemplo, caso você queira ter uma máquina virtual dentro de outra máquina virtual) e isso causa diferenças de performance em relação a instruções executadas nativamente.

Mas isto é mais fácil falar do que fazer. Para fazer a medição e detectar o "blue pill" uma fonte externa de tempo precisa ser usada - o relógio do próprio computador pode ser manipulado pelo "blue pill" para esconder os eventuais atrasos.

3. Usar um software de detecção como o Strider Ghostbuster para encontrar diferenças entre o sistema rodando virtualizado, e o mesmo sistema quando bootado por um sistema operacional "limpo" via CD. Ao fazer esta comparação é possível descobrir o que o rootkit estava escondendo.

O Strider Ghostbuster no entanto trabalha com a premissa que o rootkit tenha que deixar algum código no sistema operacional "limpo" para que ele seja recarregado após um reboot. Se no entanto o atacante não se preocupar sem ser removido pelo reboot - como na prova de conceito mostrada no BlackHat - esse método não irá funcionar.

Como se proteger então do "blue pill"? A forma mais óbvia é desabilitar na BIOS a virtualização por hardware se você não for utilizá-lo (mais um passo para os checklists de hardening!). Onde você for usar virtualização via hardware, instalar o hypervisor a partir de uma mídia confiável e mantê-lo atualizado com as correções de segurança.

Comments