<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: BIOS Rootkit Attacks: What&#8217;s the Real Risk?</title>
	<atom:link href="http://adventuresinsecurity.com/blog/index.php/2006/02/01/bios-rootkit-attacks-whats-the-real-risk/feed/" rel="self" type="application/rss+xml" />
	<link>http://adventuresinsecurity.com/blog/2006/02/01/bios-rootkit-attacks-whats-the-real-risk/</link>
	<description>Information Security Management for Business Managers</description>
	<lastBuildDate>Wed, 05 Mar 2008 23:20:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Segurança na Microsoft : Seguran&#231;a com USB, Firewire e PCMCIA</title>
		<link>http://adventuresinsecurity.com/blog/2006/02/01/bios-rootkit-attacks-whats-the-real-risk/comment-page-1/#comment-303</link>
		<dc:creator>Segurança na Microsoft : Seguran&#231;a com USB, Firewire e PCMCIA</dc:creator>
		<pubDate>Sun, 18 Feb 2007 17:11:17 +0000</pubDate>
		<guid isPermaLink="false">http://adventuresinsecurity.com/blog/?p=28#comment-303</guid>
		<description>[...] Seguran&#231;a com USB, Firewire e PCMCIA Law #3 - If a bad guy has unrestricted physical access to your computer, it&#039;s not your computer anymore. Ao fazer análise de riscos ou definir uma estratégia de segurança, a maioria de nós foi treinada para assumir que&#160;o hardware é confiável. Afinal de contas&#160;o hardware&#160;é uma entidade física e&#160;imutável, em contraste com a natureza abstrata e volátil do software.&#160;Daí vem por exemplo a recomendação de após um incidente recomeçar tudo do zero reinstalando os softwares a partir de uma mídia confiável - quanto ao hardware se assume que ele sempre permaneceu sadio. Já comentei aqui anteriormente sobre como essa premissa é falsa. Muito do que chamamos genericamente de hardware na verdade é feita de software, e software que é&#160;bastante mutável. A BIOS, o firmware nas placas PCI e até mesmo o microcódigo dos processadores podem ser comprometidos por um atacante, algo possível não só na teoria&#160;quanto na prática. A única coisa que impede que ataques desse tipo sejam mais comuns é não existir uma padronização na forma de acesso a estes locais: para ataques de chance como vírus e worms você precisa ter uma plataforma popular que tenha massa crítica para ser explorada, e no caso do hardware cada dispositivo ou fabricante tem sua própria forma de atualização. No entanto para ataques direcionados vamos ver cada vez&#160; a BIOS e dispositivos PCI sendo usados para persistir malware. Mas a premissa é falsa também sobre outro aspecto: o hardware do seu PC não é imutável. Ao contrário, ele pode ser facilmente estendido&#160;hoje em dia usando&#160;interfaces como USB, Firewire ou PCMCIA. Basta conectar o cabo e voilà! o seu PC ganhou um novo disco, uma nova interface de rede ou um dispositivo de entrada, graças às maravilhas do Plug´n´Play.  No entanto ao fazer isso o usuário está também implicitamente tomando uma decisão de segurança, e escolhendo confiar no dispositivo - a mesma decisão que ele faz por exemplo ao instalar um software no seu PC. A arquitetura dos PCs foi desenhada para tratar estes periféricos como intrinsecamente confiáveis, e não existe uma fronteira de&#160;confiança definida entre os diversos componentes de hardware dentro de um sistema. Da mesma forma que um software rodando com privilégios administrativos, se um&#160;dispositivo de hardware&#160;tiver um comportamento malicioso o sistema inteiro&#160;estará comprometido. Muitas organizações ainda não atentaram para este risco, e enquanto tomam todas as medidas para impedir usuários de instalar softwares não-autorizados, ao mesmo tempo permitem que eles conectem qualquer dispositivo nos seus PCs. A situação é ainda pior em PCs com acesso público como ATMs, quiosques, etc. onde em muitos casos é trivial para um terceiro qualquer plugar um dispositivo e comprometer o sistema. Tipos de Interface O potencial de comprometimento e as medidas de proteção que podem ser tomadas para mitigar este risco variam de acordo com o tipo de interface utilizado. Como preâmbulo, precisamos entender que existem dois tipos de interface no seu PC: as que se conectam via peripheral bus e as que usam o expansion bus. Interfaces ligadas ao bus de periféricos trabalham em um modelo cliente-servidor, onde o PC envia comandos para o dispositivo plugado na interface e este responde através de um protocolo previamente definido. Os dispositivos nestes casos estão restritos&#160;a fazer ações&#160;que o protocolo permite, o que limita bastante o que um dispositivo malicioso pode fazer. Exemplos de interfaces ligadas via peripheral bus são as portas seriais e paralelas, as interfaces de teclaro e mouse padrão PS2 e as portas USB. Já as interfaces que se conectam em um bus de expansão trabalham em um modelo peer-to-peer, e tem acesso direto ao bus principal do sistema e por conseqüência também a memória principal (via DMA). Um dispositivo neste caso não tem nenhuma restrição sobre o que ele pode fazer no sistema: alterar diretamente a memória, executar instruções no processador principal, enviar comandos para outros dispositivos, etc. Exemplos de interface ligadas via expansion bus são PCI, ISA, AGP, Firewire e PCMCIA. Destas interfaces todas as que estão expostas externamente nos PCs e que portanto apresentam maior risco são a USB, Firewire e PCMCIA.  USB A interface USB trabalha ligada ao peripheral bus e um dispositivo conectado nesta porta está limitada ao protocolo definido de comunicação USB e às capacidades definidas pelo driver do dispositivo. Isto no entanto não torna a interface completamente inofensiva. Um dispositivo pode usar uma falha no driver de dispositivo para executar código malicioso, ou por exemplo utilizar engenharia social para iludir o usuário a carregar o código fornecido pelo dispositivo. O primeiro caso é possível pelo fato do próprio dispositivo enviar para o sistema&#160;a identificação do seu tipo. Por exemplo, um pen-drive USB pode dizer para o sistema que é um teclado ou uma interface de rede, e utilizar o driver deste dispositivo para enviar informações para o sistema ou explorar um bug. Um cenário de ataque seria o seguinte: o atacante descobre um buffer overrun em um determinado driver de dispositivo que venha por default no Windows. O atacante programa o pen-drive para enviar o Device ID específico daquele dispositivo,&#160;fazendo com que o sistema ao detectar o pen-drive&#160;automaticamente carregue o driver e inicie a comunicação com o dispositivo.&#160;Nesta hora o dispositivo pode enviar os dados para explorar&#160;a vulnerabilidade e executar código&#160;malicioso dentro do kernel. Já a engenharia social pode ser feita facilmente usando o recurso de AutoRun habilitado por default no Windows. Ao conectar um dispositivo USB que se identifique como disco (USB storage), o Windows vai procurar um arquivo autorun.inf na pasta raiz e executar o comando que for especificado como default, ou apresentar como opção para ser selecionada pelo usuário. Note que neste caso o impacto é muito menor que o ataque anterior, já que o comando é executado com os privilégios do usuário logado e não dentro do kernel, mas a facilidade de exploração é muito maior e não depende da existência de um driver vulnerável. Firewire A interface Firewire (ou IEEE 1394) é&#160;se tornou muito popular com o advento do iPod e é frequentemente encontrada em notebooks e desktops de ponta, apesar de estar sendo gradativamente substituída pelo USB 2.0. Ao contrário do USB, as portas Firewire se conectam ao expansion bus do sistema e suportam a capacidade de bus mastering: podem solicitar o controle do bus do sistema e se comunicar diretamente com qualquer outro dispositivo ligado ao bus, ou usar o recurso de DMA para ler ou escrever diretamente na memória principal.  Isso mesmo - ler ou escrever diretamente na memória principal. Ao ser plugado, o dispositivo Firewire pode solicitar acesso como bus master ao OHCI e por default vai obtê-lo. A partir daí o dispositivo pode ler segredos e qualquer outra informação que estiver em memória, alterar qualquer parâmetro em qualquer processo ou no kernel, ou simplesmente injetar código. E o pior é que a sua CPU nem se dá conta disso - nem qualquer software que ela esteja executando. As possibilidades de ataque portanto aqui são infinitas.&#160;Demos onde um dispositivo Firewire convenientemente disfarçado de iPod era plugado e imediatamente comprometia um PCs foram feitas por Maximilian Dornseif na CanSecWest 2005&#160;e&#160;depois por Adam Boileau na Ruxcon 2006. PCMCIA Se você acho que a vulnerabilidade com Firewire já era ruim, com PCMCIA (ou PC Card)&#160;é ainda pior. Além de estar ligada ao expansion bus e ter capacidade de acesso ao bus, dispositivos PCMCIA sequer precisam solicitar bus mastering a um OHCI como&#160;Firewire - eles simplesmente&#160;podem entrar&#160;direto no bus principal do sistema sem qualquer solicitação especial. &#160;Neste ponto eles são praticamente iguais a um dispositivo PCI comum. Os ataques PCMCIA só são menos comuns porque muito código customizado tem que ser desenvolvido e porque interfaces PCMCIA são normalmente só encontradas em notebooks, enquanto que para Firewire os drivers estão prontos e a interface é mais universal. Mas como vamos ver daqui a pouco é virtualmente impossível se defender por software de um ataque via PCMCIA - nesse caso somente epoxy resolve ;). Defesas e Mitigações O caminho mais óbvio para mitigar estas vulnerabilidades é prover segurança física ao sistema e não permitir o acesso físico a pessoas não-autorizadas. Mas&#160;nem sempre isso é possível - por exemplo em ATMs ou kiosks -&#160;e&#160;uma pessoa autorizada inserindo um dispositivo trojan continua sendo uma ameaça. Abaixo estão listados alguns outros controles que podem ser utilizados: ■&#160; Os ataques contra drivers vulneráveis via USB podem ser mitigados usando o recurso de Device Installation Policy do Windows Vista. Via política de grupo ou local os administradores podem especificar quais são os dispositivos que podem ser utilizados pelos usuários, e/ou bloquear dispositivos específicos. O mesmo recurso pode controlar a permissão de escrita ou leitura nos dispositivos, impedindo também ataques de vazamento de informação. ■&#160; O uso de AutoRun&#160; pode ser desabilitado,&#160;o que&#160;provavelmente deve ser feito em qualquer PC corporativo para impedir ataques de engenharia social usando USB. ■&#160; Para dispositivos Firewire infelizmente é impossível restringir o acesso&#160;somente a determinados&#160;tipos de hardware, já que o bus mastering permite ao dispositivo ultrapassar qualquer driver e ir diretamente à memória. O único controle possível é desabilitar totalmente o Firewire, o que pode ser feito via BIOS ou desabilitando o driver sbp2port.sys que controla o OHCI. ■&#160; Para PCMCIA nem isso é possível já que estes dispositivos&#160;não passam por um OHCI.&#160;Neste caso a única mitigação possível é fechar fisicamente as portas PCMCIA usando epoxy, o que provavelmente deve ser feito também nas portas USB e Firewire em equipamentos de maior risco como ATMs e kiosks. A mitigação destas ameaças complementa a proteção dada pelo BitLocker e o chip TPM contra ataques offline. Uma configuração que combine portas Firewire fechadas com epoxy, portas USB protegidas via política de instalação de devices, e BitLocker usando TPM impede tanto ataques online quanto offline, e fornece um nível de proteção física extremamente alto por exemplo para ATMs e servidores em filiais.&#160; &#160;  Published Sunday, February 18, 2007 9:43 AM by fcima [...]</description>
		<content:encoded><![CDATA[<p>[...] Seguran&#231;a com USB, Firewire e PCMCIA Law #3 &#8211; If a bad guy has unrestricted physical access to your computer, it&#8217;s not your computer anymore. Ao fazer análise de riscos ou definir uma estratégia de segurança, a maioria de nós foi treinada para assumir que&nbsp;o hardware é confiável. Afinal de contas&nbsp;o hardware&nbsp;é uma entidade física e&nbsp;imutável, em contraste com a natureza abstrata e volátil do software.&nbsp;Daí vem por exemplo a recomendação de após um incidente recomeçar tudo do zero reinstalando os softwares a partir de uma mídia confiável &#8211; quanto ao hardware se assume que ele sempre permaneceu sadio. Já comentei aqui anteriormente sobre como essa premissa é falsa. Muito do que chamamos genericamente de hardware na verdade é feita de software, e software que é&nbsp;bastante mutável. A BIOS, o firmware nas placas PCI e até mesmo o microcódigo dos processadores podem ser comprometidos por um atacante, algo possível não só na teoria&nbsp;quanto na prática. A única coisa que impede que ataques desse tipo sejam mais comuns é não existir uma padronização na forma de acesso a estes locais: para ataques de chance como vírus e worms você precisa ter uma plataforma popular que tenha massa crítica para ser explorada, e no caso do hardware cada dispositivo ou fabricante tem sua própria forma de atualização. No entanto para ataques direcionados vamos ver cada vez&nbsp; a BIOS e dispositivos PCI sendo usados para persistir malware. Mas a premissa é falsa também sobre outro aspecto: o hardware do seu PC não é imutável. Ao contrário, ele pode ser facilmente estendido&nbsp;hoje em dia usando&nbsp;interfaces como USB, Firewire ou PCMCIA. Basta conectar o cabo e voilà! o seu PC ganhou um novo disco, uma nova interface de rede ou um dispositivo de entrada, graças às maravilhas do Plug´n´Play.  No entanto ao fazer isso o usuário está também implicitamente tomando uma decisão de segurança, e escolhendo confiar no dispositivo &#8211; a mesma decisão que ele faz por exemplo ao instalar um software no seu PC. A arquitetura dos PCs foi desenhada para tratar estes periféricos como intrinsecamente confiáveis, e não existe uma fronteira de&nbsp;confiança definida entre os diversos componentes de hardware dentro de um sistema. Da mesma forma que um software rodando com privilégios administrativos, se um&nbsp;dispositivo de hardware&nbsp;tiver um comportamento malicioso o sistema inteiro&nbsp;estará comprometido. Muitas organizações ainda não atentaram para este risco, e enquanto tomam todas as medidas para impedir usuários de instalar softwares não-autorizados, ao mesmo tempo permitem que eles conectem qualquer dispositivo nos seus PCs. A situação é ainda pior em PCs com acesso público como ATMs, quiosques, etc. onde em muitos casos é trivial para um terceiro qualquer plugar um dispositivo e comprometer o sistema. Tipos de Interface O potencial de comprometimento e as medidas de proteção que podem ser tomadas para mitigar este risco variam de acordo com o tipo de interface utilizado. Como preâmbulo, precisamos entender que existem dois tipos de interface no seu PC: as que se conectam via peripheral bus e as que usam o expansion bus. Interfaces ligadas ao bus de periféricos trabalham em um modelo cliente-servidor, onde o PC envia comandos para o dispositivo plugado na interface e este responde através de um protocolo previamente definido. Os dispositivos nestes casos estão restritos&nbsp;a fazer ações&nbsp;que o protocolo permite, o que limita bastante o que um dispositivo malicioso pode fazer. Exemplos de interfaces ligadas via peripheral bus são as portas seriais e paralelas, as interfaces de teclaro e mouse padrão PS2 e as portas USB. Já as interfaces que se conectam em um bus de expansão trabalham em um modelo peer-to-peer, e tem acesso direto ao bus principal do sistema e por conseqüência também a memória principal (via DMA). Um dispositivo neste caso não tem nenhuma restrição sobre o que ele pode fazer no sistema: alterar diretamente a memória, executar instruções no processador principal, enviar comandos para outros dispositivos, etc. Exemplos de interface ligadas via expansion bus são PCI, ISA, AGP, Firewire e PCMCIA. Destas interfaces todas as que estão expostas externamente nos PCs e que portanto apresentam maior risco são a USB, Firewire e PCMCIA.  USB A interface USB trabalha ligada ao peripheral bus e um dispositivo conectado nesta porta está limitada ao protocolo definido de comunicação USB e às capacidades definidas pelo driver do dispositivo. Isto no entanto não torna a interface completamente inofensiva. Um dispositivo pode usar uma falha no driver de dispositivo para executar código malicioso, ou por exemplo utilizar engenharia social para iludir o usuário a carregar o código fornecido pelo dispositivo. O primeiro caso é possível pelo fato do próprio dispositivo enviar para o sistema&nbsp;a identificação do seu tipo. Por exemplo, um pen-drive USB pode dizer para o sistema que é um teclado ou uma interface de rede, e utilizar o driver deste dispositivo para enviar informações para o sistema ou explorar um bug. Um cenário de ataque seria o seguinte: o atacante descobre um buffer overrun em um determinado driver de dispositivo que venha por default no Windows. O atacante programa o pen-drive para enviar o Device ID específico daquele dispositivo,&nbsp;fazendo com que o sistema ao detectar o pen-drive&nbsp;automaticamente carregue o driver e inicie a comunicação com o dispositivo.&nbsp;Nesta hora o dispositivo pode enviar os dados para explorar&nbsp;a vulnerabilidade e executar código&nbsp;malicioso dentro do kernel. Já a engenharia social pode ser feita facilmente usando o recurso de AutoRun habilitado por default no Windows. Ao conectar um dispositivo USB que se identifique como disco (USB storage), o Windows vai procurar um arquivo autorun.inf na pasta raiz e executar o comando que for especificado como default, ou apresentar como opção para ser selecionada pelo usuário. Note que neste caso o impacto é muito menor que o ataque anterior, já que o comando é executado com os privilégios do usuário logado e não dentro do kernel, mas a facilidade de exploração é muito maior e não depende da existência de um driver vulnerável. Firewire A interface Firewire (ou IEEE 1394) é&nbsp;se tornou muito popular com o advento do iPod e é frequentemente encontrada em notebooks e desktops de ponta, apesar de estar sendo gradativamente substituída pelo USB 2.0. Ao contrário do USB, as portas Firewire se conectam ao expansion bus do sistema e suportam a capacidade de bus mastering: podem solicitar o controle do bus do sistema e se comunicar diretamente com qualquer outro dispositivo ligado ao bus, ou usar o recurso de DMA para ler ou escrever diretamente na memória principal.  Isso mesmo &#8211; ler ou escrever diretamente na memória principal. Ao ser plugado, o dispositivo Firewire pode solicitar acesso como bus master ao OHCI e por default vai obtê-lo. A partir daí o dispositivo pode ler segredos e qualquer outra informação que estiver em memória, alterar qualquer parâmetro em qualquer processo ou no kernel, ou simplesmente injetar código. E o pior é que a sua CPU nem se dá conta disso &#8211; nem qualquer software que ela esteja executando. As possibilidades de ataque portanto aqui são infinitas.&nbsp;Demos onde um dispositivo Firewire convenientemente disfarçado de iPod era plugado e imediatamente comprometia um PCs foram feitas por Maximilian Dornseif na CanSecWest 2005&nbsp;e&nbsp;depois por Adam Boileau na Ruxcon 2006. PCMCIA Se você acho que a vulnerabilidade com Firewire já era ruim, com PCMCIA (ou PC Card)&nbsp;é ainda pior. Além de estar ligada ao expansion bus e ter capacidade de acesso ao bus, dispositivos PCMCIA sequer precisam solicitar bus mastering a um OHCI como&nbsp;Firewire &#8211; eles simplesmente&nbsp;podem entrar&nbsp;direto no bus principal do sistema sem qualquer solicitação especial. &nbsp;Neste ponto eles são praticamente iguais a um dispositivo PCI comum. Os ataques PCMCIA só são menos comuns porque muito código customizado tem que ser desenvolvido e porque interfaces PCMCIA são normalmente só encontradas em notebooks, enquanto que para Firewire os drivers estão prontos e a interface é mais universal. Mas como vamos ver daqui a pouco é virtualmente impossível se defender por software de um ataque via PCMCIA &#8211; nesse caso somente epoxy resolve <img src='http://adventuresinsecurity.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Defesas e Mitigações O caminho mais óbvio para mitigar estas vulnerabilidades é prover segurança física ao sistema e não permitir o acesso físico a pessoas não-autorizadas. Mas&nbsp;nem sempre isso é possível &#8211; por exemplo em ATMs ou kiosks -&nbsp;e&nbsp;uma pessoa autorizada inserindo um dispositivo trojan continua sendo uma ameaça. Abaixo estão listados alguns outros controles que podem ser utilizados: ■&nbsp; Os ataques contra drivers vulneráveis via USB podem ser mitigados usando o recurso de Device Installation Policy do Windows Vista. Via política de grupo ou local os administradores podem especificar quais são os dispositivos que podem ser utilizados pelos usuários, e/ou bloquear dispositivos específicos. O mesmo recurso pode controlar a permissão de escrita ou leitura nos dispositivos, impedindo também ataques de vazamento de informação. ■&nbsp; O uso de AutoRun&nbsp; pode ser desabilitado,&nbsp;o que&nbsp;provavelmente deve ser feito em qualquer PC corporativo para impedir ataques de engenharia social usando USB. ■&nbsp; Para dispositivos Firewire infelizmente é impossível restringir o acesso&nbsp;somente a determinados&nbsp;tipos de hardware, já que o bus mastering permite ao dispositivo ultrapassar qualquer driver e ir diretamente à memória. O único controle possível é desabilitar totalmente o Firewire, o que pode ser feito via BIOS ou desabilitando o driver sbp2port.sys que controla o OHCI. ■&nbsp; Para PCMCIA nem isso é possível já que estes dispositivos&nbsp;não passam por um OHCI.&nbsp;Neste caso a única mitigação possível é fechar fisicamente as portas PCMCIA usando epoxy, o que provavelmente deve ser feito também nas portas USB e Firewire em equipamentos de maior risco como ATMs e kiosks. A mitigação destas ameaças complementa a proteção dada pelo BitLocker e o chip TPM contra ataques offline. Uma configuração que combine portas Firewire fechadas com epoxy, portas USB protegidas via política de instalação de devices, e BitLocker usando TPM impede tanto ataques online quanto offline, e fornece um nível de proteção física extremamente alto por exemplo para ATMs e servidores em filiais.&nbsp; &nbsp;  Published Sunday, February 18, 2007 9:43 AM by fcima [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>
