Gerenciamento de Segurança - Setembro de 2005

Como Dar um Tiro no Próprio Pé com Segurança, Parte 1

Publicado em: 9 de agosto de 2005


Por Jesper M. Johansson

Arquiteto de Segurança Corporativa
Microsoft Corporation
Veja outras colunas de Gerenciamento de Segurança (em inglês).

Algum tempo atrás, dei uma pausa nestes artigos. Agora estou de volta e pensei que seria divertido retomar o tema das fraudes, que havíamos abordado na série de mitos de segurança (em inglês) e escrever a respeito das coisas bem intencionadas que as pessoas fazem para obter mais segurança, mas que acabam piorando a situação. Se os mitos fossem conceitos de alto nível, esta série seria mais técnica. O objetivo é ajudá-lo a entender melhor algumas das coisas que fazemos para oferecer segurança, e como elas podem prejudicar outras coisas se não tivermos muito cuidado em relação à sua aplicação.

Eu não sei a esta altura quantos artigos como este haverá, mas esta é a parte 1. Este artigo aborda algo que geralmente é bom, mas que pode causar sérios problemas porque as pessoas geralmente o implementam incorretamente: a assinatura de mensagens Server Message Block (SMB). Por padrão, como veremos mais tarde, os únicos problemas que podem ser causados pela assinatura de mensagens SMB são que sistemas mais antigos executando o Windows 9x não podem se conectar a um controlador do domínio (DC) do Windows Server 2003. (O Windows 98 Second Edition e o Windows Me suportam a assinatura de mensagens SMB por padrão, e sistemas antigos não.) Mesmo que isso afete ambientes que ainda não substituíram suas máquinas que executam Windows 9x, a assinatura de mensagens SMB representa cerca de 25% de todas as chamadas suportadas para os serviços de suporte (PSS) da Microsoft relacionados com a política de segurança. Esta configuração pode obviamente ser confusa para algumas pessoas, o que a torna um bom exemplo para ser explicado nesta série.

Os futuros artigos nesta série abordarão diversas questões que parecem relevantes no momento. Se você tiver algum pedido para um tópico a ser abordado, uma estória engraçada que você não se importaria de divulgar (anonimamente, se quiser) sobre um tiro que deu no próprio pé, ou algo diferente que gostaria que fosse abordado, clique em "Comentários", logo abaixo, e envie uma mensagem.

Assinatura de Mensagem SMB (Message Signing)

O protocolo SMB, ou Server Message Block, é o que suporta uma rede baseada no Microsoft Windows. O SMB é na verdade a versão da Microsoft de um padrão da Internet conhecido como Common Internet File System (CIFS). Outros sistemas implementam o mesmo padrão, incluindo, notavelmente, o SAMBA e diversos dispositivos de hardware como sistemas de armazenamento anexos à rede. O SMB é a base de todo o serviço de rede do Windows é o protocolo usado para compartilhamento de impressoras e arquivos, da maioria do tráfego do domínio, e um host de outras coisas indispensáveis nas redes do Windows. Alguns anos atrás, o SMB era para um modelo de ameaça que é muito diferente do que consideramos hoje em dia. Portanto ele tem poucas construções de segurança embutidas. Não foi nenhuma surpresa, portanto, a Hobbit publicou um documento em 1997 chamado Common Insecurities Fail Scrutiny (em inglês), destacando questões de segurança no SMB. As ferramentas de ataque logo se tornaram disponíveis e tiraram vantagem destes problemas, incluindo o agora infame SMB Reflection Attack.

Muitos dos problemas com o CIFS/SMB (de agora em diante, usarei SMB para me referir ao protocolo) eram ataques do tipo man-in-the-middle, onde um invasor consegue se inserir numa conversa e espioná-la ou mudar seu contexto. Por exemplo, um agressor invasor pode ouvir a instalação de uma sessão de SMB entre um cliente legítimo e um servidor, capturar os pacotes, e mais tarde passá-los novamente para o servidor para fazer sua própria conexão com ele. O SMB Reflection Attack é um tipo especial de ataque man-in-the-middle onde o invasor e o servidor são a mesma máquina. No artigo Proteja Sua Rede Windows (em inglês), explicamos o SMB Reflection Attack desta maneira:

1.

A máquina A se conecta a máquina B.

2.

A máquina B envia um desafio para a máquina A.

3.

A máquina A computa a respostas para o desafio e a envia para a máquina B.

4.

A máquina B, tendo feito os mesmos cálculos que a máquina A usando as credenciais que ela armazenou, agora compara a resposta com o seu próprio valor calculado. Se forem iguais, a conexão é um sucesso.

Agora considere um fluxo inverso. Para que funcione, o invasor precisa convencer a vitima a iniciar uma conexão SMB com o invasor. Este e-mail pode ser parte de um ataque de engenharia social.

1.

A vítima inicia uma conexão com o invasor.

2.

Neste ponto, o sistema do invasor deve enviar um desafio para a vítima autenticar. Ao invés disso, o invasor inicia uma nova conexão com a vítima.

3.

A vítima gera um desafio para a conexão de entrada a partir do invasor e a envia para o invasor.

4.

O invasor pega o desafio recebido na etapa 3 e o envia para a vítima como o desafio para a conexão iniciada na etapa 2.

5.

A vítima computa a resposta para o desafio e a envia para o invasor.

6.

O invasor pega a resposta recebida na etapa 5 e a retorna para a vítima como a resposta para a conexão que ela iniciou na etapa 2.

Para mais detalhes sobre as etapas e como o invasor as utiliza, veja o artigo Proteja Sua Rede Windows, de Johansson e Riley (em inglês).

Em resposta ao documento da Hobbit, a Microsoft adicionou alguns recursos ao SMB. Um dos recursos adicionados projetados para limitar estes ataques man-in-the-middle foi a assinatura de mensagens (message signing) SMB. A assinatura de mensagens SMB Message assina pacotes SMB para garantir que eles não possam ser passados novamente sobre um sistema diferente. A assinatura SMB Message trata-se na verdade de quatro configurações diferentes. Novamente, Proteja Sua Rede Windows:

Cliente de rede da Microsoft: Assina comunicações digitalmente (se o servidor concorda) - Programa o serviço da estação de trabalho para solicitar a assinatura de mensagens de saída para os servidores SMB. Esta é a única configuração das quatro que é acionada por padrão. Esta configuração é armazenada no registro no HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanworkstation\parameters\EnableSecuritySignature. Se esta configuração não estiver acionada, a assinatura de mensagem no cliente é inabilitada. Se estiver acionada, a assinatura é habilitada.

O cliente de rede Microsoft: Assina comunicações digitalmente (sempre) - Programa o serviço da estação de trabalho para exigir assinatura de mensagens nas solicitações de saída para os servidores SMB. Esta configuração está armazenada no registro no HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanworkstation\parameters\RequireSecuritySignature. Se a configuração estiver acionada, o cliente exige que todo o tráfego SMB seja assinado. Se não estiver acionada, a configuração EnableSecuritySignature no serviço da estação de trabalho orienta o comportamento do cliente.

Servidor de rede Microsoft: Assina comunicações digitalmente (se o cliente concordar) - Programa o serviço do servidor para exigir assinatura de mensagens nas solicitações de entrada de clientes SMB. Esta configuração está armazenada no registro no HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters\EnableSecuritySignature. Se a configuração não estiver acionada, a assinatura de mensagens no servidor é inabilitada. Se estiver acionada, ela é habilitada.

Servidor de rede Microsoft: Assina comunicações digitalmente (sempre) - Programa o serviço do servidor para exigir assinatura de mensagens nas solicitações de entrada de clientes SMB. Esta configuração está armazenada no registro no HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters\RequireSecuritySignature.

Se a configuração estiver acionada, o servidor exige que todo o tráfego SMB seja assinado. Se não estiver acionada, o a configuração EnableSecuritySignature no serviço do servidor orienta o comportamento do cliente.

As duas primeiras configurações, aquelas estipuladas com o cliente de rede Microsoft, afetam o serviço da estação de trabalho; o serviço do cliente de compartilhamento de arquivos do Windows. As duas últimas, estipuladas com o servidor de rede Microsoft afetam o serviço do servidor; o serviço do servidor de compartilhamento de arquivos do Windows. Este é um ponto importantíssimo: As configurações não têm nada a ver com o sistema estar agindo primeiramente como um servidor ou um cliente na rede. Todos os sistemas possuem tanto um serviço de servidor quanto uma estação de trabalho. Isto significa que ambas configurações afetam todos os sistemas baseados no Windows e é preciso analisar cuidadosamente como eles interagem. Portanto, de agora em diante usaremos o termo "servidor" para nos referimos a maquina que está agindo como um servidor numa transação SMB, e o termo "cliente" para nos referirmos a máquina que está agindo como um cliente na mesma transação.

As configurações padrões para cada uma delas são relativamente simples e objetivas:

O serviço da estação de trabalho é programado para habilitar a assinatura em todos os sistemas do Windows 2000 e superiores.

O serviço do servidor é programado para inabilitar a assinatura em todos os sistemas do Windows 2000 e superiores.

DCs do Windows 2000 são programados para habilitar assinatura no serviço do servidor.

DCs do Windows Server 2003 são programados para exigir assinatura no serviço do servidor.

O Windows 9x não suporta a assinatura de mensagens SMB fora da caixa, nem de clientes e parceiros SMB de terceiros.

A interação entre estas configurações é bastante complicada. Se o serviço no servidor, por exemplo, é programado para exigir assinatura (a configuração "Servidor de rede Microsoft: Assina comunicações digitalmente (sempre)" acionada), o serviço da estação de trabalho deve ter assinatura habilitada ou a comunicação irá falhar. A seguinte tabela mostra a interação entre as configurações no servidor e no cliente:

Início da páginaInício da página

Como Dar um Tiro no Próprio Pé

Está claro que já temos um problema. Os DCs do Windows Server 2003 exige a assinatura de mensagens, enquanto o Windows 9x não suporta a assinatura, então uma forma de dar um tiro no próprio pé é usar o Windows 9x. Mas nós já sabíamos disso.

Se você simplesmente deixar os padrões como estão você não terá problemas (exceto o problema previamente mencionado com o Windows 9x). Apesar disso, muitas pessoas parecem ter problemas com a assinatura de mensagens SMB. Claramente, as pessoas estão alterando os padrões. Uma forma muito fácil de dar um tiro no próprio é seguir todas as orientações de segurança disponíveis que dizem que você deve exigir assinatura de mensagens SMB no serviço da estação de trabalho. Isto é, na verdade, uma bondade generalizada. Ele bloqueia SMB Reflection Attack. Infelizmente, a não ser que você habilite a assinatura de mensagens SMB em todos os servidores ao mesmo tempo, ela também o coloca no quadro acima Estação de Trabalho/Exigida-Servidor/Inabilitado, onde todas as conexões falham. Muitas pessoas não percebem que se elas simplesmente exigirem a assinatura no cliente, ele não poderá mais se comunicar com qualquer servidor com as configurações padrões. Esta é a primeira maneira de atirar no próprio pé com esta configuração.

A segunda maneira de fazer isso parece ocorrer quando as pessoas percebem que não conseguem se conectar com seus servidores. Como não existe um jeito fácil de reverter para as configurações padrões, parece que muitas pessoas desligam a assinatura de mensagens no serviço da estação de trabalho. Isto restabelece a conectividade com os servidores, mas quebra a conectividade com os DCs do Windows Server 2003, já eles exigem a assinatura. Na verdade, ele faz um cliente moderno agir como um sistema do Windows 9x, que não suporta assinatura por padrão e não consegue se comunicar com um DC do Windows Server 2003. Para funcionar adequadamente com um DC do Windows Server 2003, todos os clientes devem suportar e ter uma assinatura de mensagens SMB habilitada. Em outras palavras, eles precisam ter pelo menos a configuração "Cliente de rede Microsoft: Assina comunicações digitalmente (se o servidor concordar)" acionada.

Em terceiro lugar, uma maneira muito fácil de atirar no próprio pé é inabilitar a assinatura de mensagens SMB. A assinatura de mensagens SMB realmente mitiga questões sérias de segurança ao validar todos os pacotes numa troca de SMB. Na verdade você pode usar o Internet Protocol security (IPSec) sobre o SMB para alcançar um efeito similar, mas diferentemente da assinatura de mensagens SMB, o IPSec não bloqueia ataques. Ele simplesmente garante que você seja atacado apenas pelas pessoas que conhece. Sendo assim, nós realmente recomendamos que você acione a assinatura de mensagens SMB para tráfego crítico como o tráfego do DC.

O acionamento da assinatura de mensagens na verdade nos leva a maneira final de atirar no próprio pé, a e a razão pela qual é inabilitada nos servidores por padrão. Existe um overhead para o desempenho associado com a assinatura de mensagens. Acionar a assinatura de mensagens na verdade modifica a forma como os dados são transmitidos. Isto significa que o overhead provavelmente será negligenciado para transações pequenas como a transferência de arquivos pequenos. No entanto, para transferências de arquivos muito grandes o overhead poderia ficar muito alto - até 40 % em algumas situações. Portanto, é preciso pensar sobre onde irá acioná-lo.

Claramente, a assinatura de mensagens SMB oferece valor de segurança significativo. No entanto, como discutimos no primeiro artigo da série sobre gerenciamento de segurança, este valor tem um custo; neste caso, principalmente em termos de desempenho mas também em compatibilidade. Ninguém pode dizer que "você precisa exigir assinatura de mensagens SMB em todos os locais" sem antes fazer um analise detalhada dos riscos. O custo pode ser significativo, mas existe o risco das credenciais de usuário serem roubadas ou repassadas para um servidor posteriormente. Se o risco estimado supera o custo, você deve solicitar a assinatura de mensagens SMB em todos os locais. Nem eu e nem ninguém pode, sem antes fazer uma analise, aconselhá-lo a fazer isto. O objetivo deste artigo é oferecer as informações necessárias para que você tome uma decisão consciente, e ajudá-lo a evitar atirar no próprio pé fazendo as configurações incorretamente.

Início da páginaInício da página

Saiba mais (em inglês)

Existem diversos recursos disponíveis sobre a assinatura de mensagens SMB, incluindo:

Guia de Segurança do Windows Server 2003

Guia de Segurança do Windows XP

Guia de Endurecimento da Segurança do Windows 2000

Ameaças e Contra-medidas: Configurações de Segurança no Windows Server 2003 e Windows XP

Artigo 555038 da Base de Conhecimento da Microsoft: "Como habilitar clientes Windows 98/ME/NT para fazer o logon nos domínios de base Windows 2003"

Artigo 325379 da Base de Conhecimento da Microsoft: "Como atualizar os controladores de domínio do Windows 2000 para o Windows Server 2003"

Artigo 839499da Base de Conhecimento da Microsoft: "Não é possível abrir compartilhamento de arquivos ou snap-ins de Políticas de Grupo quando a assinatura SMB é inabilitada para o serviço de Estação de Trabalho ou Servidor num controlador de domínio"

Artigo 810907da Base de Conhecimento da Microsoft: "Mensagens de Erro Quando Arquivos da Rede são Abertos ou Copiados nos Clientes Windows XP SP1 que Exigem Assintura SMB"

Artigo 887429da Base de Conhecimento da Microsoft: "Visão Geral da Assinatura de Bloqueio de Mensagem do Servidor (Server Message Block - SMB)"

Como sempre, esta coluna é feita para você. Queremos saber se existe um tópico que você queira abordar, ou como podemos ajudá-lo a melhor proteger os seus sistemas. Clique em "Comentários" e envie-nos uma mensagem.


Início da páginaInício da página