Divulgado Código Fonte do Novo "Blue Pill"


Joanna Rutkowska fez esta semana a sua apresentação na Black Hat 2007, onde apresentou a nova versão do seu rootkit e respondeu aos métodos de detecção propostos por outros pesquisadores. A apresentação em si mostrou pouca coisa (comentarei em seguida), e a novidade mesmo ficou por conta da divulgação do código fonte do novo Blue Pill, hospedado em um site chamado Blue Pill Project.


(Obs: este é o *novo* Blue Pill porque não se trata do mesmo rootkit apresentado na Black Hat do ano passado, que continua propriedade da COSEINC e cujo fonte permanece fechado. O novo Blue Pill foi reescrito do zero pela Joanna Rutkowska e Alex Tereschkin, e tem algumas novidades como o suporte a plataforma Intel VT-x.)


A própria Joanna comenta a sua apresentação em uma nota no seu blog, e aqui vão os meu comentários. A palestra foi dividida em duas partes: a primeira sobre a proteção do kernel do Vista e a segunda sobre o Blue Pill em si.


Proteção de Kernel do Vista


Na primeira parte não tivemos nada de novo. Joanna diz que o modelo de assinatura de código de kernel do Vista não funciona, porque existem vários drivers assinados, escritos por terceiros, com bugs de segurança que permitiriam que malware entrasse no kernel (eu apontei a mesma coisa aqui). Ela diz também que os drivers de usuário introduzidos no Vista são um bom começo, mas a solução definiva seria os sistemas operacionais adotarem um modelo de micro-kernel onde todos os drivers estariam isolados do kernel.


Vamos ficar somente neste ponto aqui. É estranho a Joanna querer ressuscitar agora os micro-kernels quando basicamente as mesmas vantagens de isolamento são fornecidas pela... virtualização! Ninguém precisa ir muito longe para vislumbrar um mundo onde aplicações rodarão em sua própria máquina virtual e com os próprios drivers, isolados das demais apliações e drivers através do hypervisor. Todos os principais fabricantes de sistema operacional estão trabalhando para se adaptar a este futuro, e ninguém cogita a essa altura do campeonato adotar um modelo de micro-kernel. 


Malware Baseado em Virtualização


Joanna chega finalmente no Blue Pill, e aqui o conteúdo para mim foi decepcionante. Na prática, ela admitiu que o método de detecção do rootkit baseado nas variações de comportamento que o rootkit causa cache do processador (usando a Translation Lookaside Buffer ou TLB) pode mesmo ser utilizado de forma confiável para detectar o Blue Pill, e também não ofereceu resposta para o método usando multiprocessamento proposto pelo Edgar Barbosa. Em resumo, o Blue Pill é detectável.


Para salvar a face, Joanna saca da cartola um argumento que diz mais ou menos o seguinte: "vocês não estão detectando o Blue Pill, estão detectando um hypervisor qualquer! No futuro todo mundo vai usar hypervisor, como vocês vão saber que é o Blue Pill?" O Gustavo comprou essa conversa, mas eu não. Por dois motivos:


¦ Primeiro, o próprio hypervisor pode rodar as rotinas de detecção do Blue Pill. Por que não? Joanna diz no seu blog que isso vai contra a idéia do hypervisor ser simples e não conter código de terceiros, opinião que eu simpatizo mas que na prática não vai ocorrer. A Intel já está fazendo isso, com virtual appliances já anunciadas por exemplo pela Symantec, e depois do episódio do PatchGuard não me surpreenderia se a própria Justiça americana não obrigasse a Microsoft a permitir código de terceiros no hypervisor.


¦ Segundo, se todo mundo vai estar rodando um hypervisor, como é que o Blue Pill vai se instalar? Além de um exploit para o kernel da máquina virtual, seria necessário ter também um exploit para o hypervisor existente. Mas ele não seria simples e não conteria código de terceiros? Como dizem os gringos, Joanna não pode comer o bolo e também guardá-lo para depois.


Para mim o "hype" do Blue Pill nasceu na Black Hat 2006 e morre agora na Black Hat 2007. Rootkits usando virtualização continuam sendo uma das áreas mais interessantes de pesquisa mas daqui para frente sem as alegações de "100% indetectável".


 


Comments (3)
  1. Anonymous says:

    All non-trivial abstractions, to some degree, are leaky. – Joel Spolsky, The Law of Leaky Abstractions

  2. fcima says:

    Oi Gustavo,

    Ao que eu saiba qualquer tentativa de iniciar a virtualização por hardware vai ser interceptada por um hypervisor já existente. Não acho que seja possível trocar o hypervisor “on-the-fly” sem o conhecimento (e a concordância) do hypervisor existente.

    Seu ponto sobre a troca de hypervisor em um boot procede se o atacante tiver acesso físico ao sistema. No entanto ataques deste tipo são bloqueados por exemplo por um chip TPM validando o hypervisor – um caminho que está sendo seguido já pela Intel (http://www.intel.com/technology/security/downloads/LT_Arch_Overview.htm).

    Abracos!

  3. Gustavo Bittencourt says:

    Cima,

    Imaginando o cenário que a Joanna colocou onde muitos sistemas vão funcionar abaixo de um hypervisor válido.

    Não sei se o AMD-V e o Vanderpool permitem trocar o hypervisor "on-the-fly", mas se for possível, um código no ring 0 poderia sobrepor o hypervisor válido por um rootkit.

    Se não for possível trocar o hypervisor "on-the-fly", o rootkit pode preparar o sistema para carregá-lo no próximo boot antes da carga do hypervisor válido.

    Nessas situações (se realmente forem possíveis), um anti-rootkit teria problemas para detectar a troca do hypervisor válido por um rootkit utilizando as técnicas até então apresentadas.

    Me corrija se escrevi alguma besteira acima, minhas funções hoje estão cada vez mais longe dos bits e bytes e fica difícil manter se tecnicamente atualizado com assuntos como hardware supported virtualization.

    []s

Comments are closed.

Skip to main content