Segurança em ambientes Windows NT
Fernando Antonio M. Cima
Via Internet Informática
CC UNICAMP 08-10-1998
Segurança em ambientes Windows NT
• Objetivos da segurança no Windows NT
• Usuários, prvilégios e grupos
• Processo de validação (login)
• Auditoria
• Segurança na rede
• Ataques e defesas
• Futuro: Service Pack 4 e Windows NT 5.0
Prólogo
Segurança no Windows NT: isto é possível?
• Sistema operacional recente (5 anos)
• Código-fonte proprietário, pouca (e péssima) documentação
• Má fama dos outros produtos da MS
• Pouca preocupação da MS com segurança
• Desconhecimento
Objetivos
• Preocupação com a segurança durante o projeto
• Controle de acesso aos recursos (user-level)
• Auditabilidade
• Padronização na segurança
• Segurança de rede integrada no SO
Certificação C2
• Avaliação da segurança do sistema segundo pelo National Computer Security Center da NSA, segundo os critérios do TCSEC (“Orange Book”).
• O Windows NT 3.5 Service Pack 3 certificado em Jul/1995 (sem rede).
• Windows NT 4.0 certificado preliminarmente em Set/1998 (com rede).
Critérios para Certificação C2
• Logon seguro
• Controle de acesso discricionário
• Auditoria
• Não-reutilização de objetos
– Diferença entre rating e certificação
Contas e usuários
• O NT controla o acesso aos seus recursos em nível de usuário.
• Base de usuários pode ser local ou pertencer a um domínio (mantida nos Controladores de Domínio)
• Cada usuário tem uma senha única associada, utlizada para a autenticação.
SIDs
• Cada conta de usuário tem associado um SID (Security Identifier) que a identifica unicamente.
• Estrutura do SID:
S-1-5-21-2313843232-6739283392-1020
– Revision Number
– Identifier Authority
– Autoridade (identificador da máquina local ou domínio) - 48 bits
– Relative Identifier (RID) - 32 bits
SIDs• Cada grupo (local ou global) também tem seu SID único
de identificação.
• Cada Windows NT pertencente a um domínio tem uma conta no domínio, onde consta o seu SID.– Senha trocada automaticamente a cada semana (configurável).
• Informação guardada no Security Account Database (HKEY_LOCAL_MACHINE\SAM\SAM) com acesso restrito mesmo aos administradores.
Security Account Database
SIDs
• Na instalação do NT, é criado um SID para o computador. Apenas uma reinstalação altera este SID.
• Os domínios tem SID e são únicos para todos os DCs.
• O SID do computador é utilizado como base para os SID dos usuários
– User SID = Computer SID + RID
• RIDs iniciam em 1000 e vão sendo incrementados.
Privilégios• Permissão para usuários realizarem determinadas ações no
sistema.
• Ações pré-definidas pelo sistema operacional.
• Escopo do privilégio: válido para para a máquina local ou para os controladores de domínio.
• Armazenados na Security Account Database (HKEY_LOCAL_MACHINE\SECURITY), com acesso restrito.
Exemplos de privilégios
— Acessar o computador pela rede
— Logar localmente
— Alterar a hora do sistema
— Carregar e descarregar drivers
— Tomar posse de arquivos
— Desviar verificação transversal
• Cada privilégio tem um identificador (LUID), que é o mesmo em todos os NTs (ao contrário da documentação).
Privilégios na SAM
Processo de logon
• Logon: identificação e autenticação do usuário para uso dos recursos do sistema.
• Basicamente pode ser local (uso da console), pela rede ou por serviço.
• Após o processo de logon o usuário recebe um token, que o identifica e valida o acesso aos recursos.
• O LSA (Local Security Authority) é o responsável pela validação e geração dos tokens.
Logon local
Copyright 1998, Mark Russinovitch.
Logon com conta na rede
Copyright 1998, Mark Russinovitch.
Tokens de Acesso
Componentes:– SID do usuário
– SIDs dos grupos a que o usuário pertence.
– Privilégios atribuídos ao usuário
– SID do Owner
– Grupo primário (apenas no subsistema POSIX)
– ACL default
Segurança dos Objetos
• Todo objeto do sistema (arquivo, chave da registry, impressora, driver, compartilhamento, etc.) tem um associado a ele um descritor de segurança.
Acesso aos objetos
• Todo processo tem um token associado, e todo objeto um descritor de segurança.
• O Security Reference Monitor (SRM) compara a ACL do objeto com a informação do token, e valida ou não o acesso.
O SRM também compara o token com o SACL e registra o acesso ou não na auditoria do sistema.
Auditoria
• Registra as atividades do sistema, incluindo o acesso aos
objetos (requisito C2).
• Vem por default desabilitada.
• Nível de auditoria é configurável por máquina ou por
controladores de domínio.
• Os registros são gravados no Visualizador de Eventos, na
fila de Segurança.
• Envolve um gasto em performance.
AuditoriaUser Manager
Auditoria
• Objetos auditáveis:
– Arquivos e diretórios (NTFS apenas)
– Registry
– Impressoras
– Remote Access Services
• O sistema pode ser configurado para parar quando o registro de auditoria chegou ao limite (requisito C2).
Segurança de rede
• Como o NT armazena as suas senhas
• Compartilhamento de arquivos - SMB e NetBIOS
• Validação pela rede
• Acesso anônimo
Senhas
• O Windows NT armazena um hash da senha, resultado de uma transformação de mão-única (OWF).
• Por compatibilidade, dois hashes são armazenados:
– LAN Manager
– Windows NT
• Estes dados ficam na Security Account Database, no arquivo %systemroot%\config\SAM.
Hash LAN Manager
• LAN Manager
– Senhas case-insensitive são convertidas para 14 bytes e divididas em duas entidades de 7 bytes (56 bits).
– Cada parte é usada para encriptar um número conhecido de 8 bytes.
– Os resultados são concatenados gerando um hash de 16 bytes.
Hash Windows NT
• Windows NT
– Senhas são convertidas para Unicode (mantendo o case).
– É gerado um hash de 16 bytes utilizando o algoritmo MD4.
SMB
• Shared Message Block.
• Protocolo utilizado pelo compartilhamento de recursos na Rede Microsoft.
• Utiliza NetBIOS como API de comunicação.
• Independente do protocolo de transporte (funciona sobre TCP/IP, IPX/SPX e NetBEUI).
• Utilizado por todos os SOs da Microsoft e por outras plataformas (Digital Pathworks, SAMBA).
Acesso via SMB
• Determinação do nome da máquina e do serviço (UDP
137)
• Abertura da conexão de dados (TCP 139), informando o
nome do servidor
• Negociação do dialeto SMB utilizado*
• Autenticação
• Abertura de compartilhamentos e acesso aos dados
Envio das senhas no SMB
• Dependendo do dialeto, a senha pode ser enviada sem
criptografia ou codificada por desafio e resposta.
• O cliente utiliza os hashes de 16-bytes, com padding de 5
bytes (total 21 bytes), para criar 3 entidades de 7 bytes.
• Cada uma encripta um desafio de 8 bytes, tendo no final
uma resposta de 24 bytes, que é enviada ao servidor.
• O cliente sempre envia os dois desafios (LAN Manager e
Windows NT).
Conexões anônimas (null sessions)
• Serviços podem rodar no contexto da conta pré-definida
LocalSystem, que não possui senha.
• Ao estabelecer uma sessão SMB, estes enviam nome do
usuário e senha vazios (null).
• Permite a comunicação de rede entre serviços do sistema
do NT.
• Exemplo: atribuição de permissões e privilégios após o
estabelecimento de uma relação de confiança.
Ataques e Vulnerabilidades
• Ataques a senhas (crack)
• Ataques ao SMB
• Negação de serviço
• Elevação de privilégios
• Estouro de buffers
• Cavalos de Tróia
Ataques a senhas (crack)
• Obtenção das hashes das senhas do NT e quebra das senhas,
por dicionário ou força bruta.
• Hashes pode ser obtidos:
– Acesso remoto a registry (requer privilégio de administrador)
– Arquivo SAM de senhas, obtido na máquina local ou no Emergency
Repair Disk
– Hashes capturados no tráfego da rede
• Devido a fragilidade da encriptação LAN Manager, o ataque
de força bruta pode ser feito com bastante sucesso.
L0phtCrack
Proteção contra o L0phtCrack
• Uso do utilitário syskey.exe, incluído no Service Pack 3, para criptografia dos hashes de senha.
• Controle do acesso aos diretórios %systemroot%\config e %systemroot%\repair, que contém os arquivos da SAM.
• Acesso restrito aos Emergency Repair Disks.
• Proteção física dos servidores.
Ataques via SMB
• Utilização de conexões anônimas para obter informação sobre usuários e grupos.
• Tentativas de logon utilizando as contas descobertas, com senhas óbvias ou por dicionário.– A auditoria do NT NÃO registra o endereço IP de onde provêm as
tentativas inválidas de logon.
• Acesso a compartilhamentos e a registry, em busca de informação e de outras senhas.
Proteção contra ataques via SMB• Filtragem do tráfego SMB para prevenir acessos externos a
rede (portas UDP 137 e 138, TCP 139).
• Lockout das contas no caso de excesso de tentativas inválidas de logon; utilização de senhas complexas (filtros de senhas).
• Limitar os logons de rede dos usuários privilegiados (utilitário passprop.exe do Resource Kit).
• Ativar a auditoria para logons e gerência de grupos e usuários.
Negação de Serviço
• Não causam acesso indevido, mas interrompem o funcionamento da máquina ou de serviços.
• Grande aumento com a utilização maciça na Internet.
• Bastante utilizados entre usuários de IRC, ambientes estudantis e pelos “wannabe hackers”.
• Qualquer componente do sistema acessível pela rede pode estar sujeito a um ataque deste tipo.
Negação de Serviço
• Ataques a pilha TCP/IP:– Land
– Teardrop
– Ping of Death/Boink
• Ataques ao NETBIOS sobre TCP/IP– Win Nuke
• Ataques contra RPC:– Snork
• Outros serviços (Simple TCP/IP services, IIS, WINS, DNS)
Estouro de buffers
• Envio de dados inválidos a um programa, com o intuito de ultrapassar os buffers de entrada e sobrescrever o código em execução com outro código.
Este código é então executado com o mesmo privilégio do código original.
• Extremamente comum em ambientes Unix; raro (por enquanto) em ambientes Windows NT.
Elevação de privilégios
• Permite a um usuário comum obter privilégios a que não tinha direito, normalmente via estouro de buffers em processos com privilégios.
• Exemplos:
– GETADMIN
– GETPRIV
• Podem ser executados diretamente pelo usuário localmente na máquina ou remotamente via web (CGI) ou outras formas.
Proteção contra DoS e estouro de buffers
• Colocar o menor quantidade possível de serviços e programas rodando em modo privilegiado.
• Auditar o código privilegiado; desenvolver o código com preocupação com a segurança.
• Instalar o Service Pack e Hotfixes mais recentes.
Cavalos de Tróia
• Trojan horses - Programas que alegam ou aparentam ser inofensivos mas executam tarefas maliciosas.
• Podem estar disfarçados em utilitários, arquivos attachados em mensagens de correio eletrônico e controles ActiveX, entre outros.
• Extremamente disseminados: BackOrifice e NetBUS.
• Única solução: educação do usuário.
Outras Medidas
• Permissões adequadas em arquivos, diretórios e compartilhamentos.
– Checklists da Microsoft e da NSA
• Política de senhas:
– expiração
– prazo mínimo para a troca
– memória das últimas senhas
– bloqueio da conta após vários logons inválidos
Futuro
• Novas features de segurança:– Security Configuration Editor (Service Pack 4)
• Novos ataques:– Trojans
– Kernel-mode Drivers
Security Configuration Editor
• Ferramenta de análise e configuração de segurança,
disponível no futuro Service Pack 4.
• Definição de templates de segurança, com configuração de
privilégios, permissões e auditoria associada.
• Análise da configuração atual em relação ao template.
• Implementação das recomendações do template na
máquina.
Security Configuration Editor
Novos Ataques
• Novos Trojans– Netbus provavelmente apenas o primeiro de uma série.
– Trojans mais invisíveis e mais letais.
• Kernel-mode Drivers– Ainda relativamente desconhecidos.
– Execução em modo privilegiado, acessíveis em modo de usuário.
– Ataques de negação de serviço e estouro de buffer.
Apêndice
Material utilizado na elaboração desta palestra:
• Windows NT 3.5 Guidelines for Security, Audit and Control. Microsoft Corp., Microsoft Press, 1994.
• Windows NT Security. Mark Russinovich, Windows NT Magazine, Maio e Junho de 1998.
• Windows NT 4.0 Server Resource Kit. Microsoft Corp., Microsoft Press, 1994.
• NT Vulnerabilities and Defenses. Dominique Brezinski, Windows NT Magazine, Agosto 1998.
Apêndice
Material utilizado na elaboração desta palestra (cont.):
• CIFS - Common Insecurities Fail Scrutiny. *hobbit*, http://avian.org
• On NT Password Security. Jos Visser, http://www.osp.nl.
• Mensagens da lista NT-Security (http://www.iss.net), por Paul Leach, Jeremy Allison e Paul Ashton.
• Security Configuration Editor. Documentação do Service Pack 4 Beta 1.43, Microsoft Corp.