
Meu caminho para a segurança da informação começou com uma descoberta surpreendente: “criptografado com segurança”. Essa afirmação agora parece simples e óbvia e, no primeiro ano, a conscientização desse fato produziu um efeito comparável à bomba atômica mental. A segurança da informação foi atacada pela expansão dos limites da área de assunto: verificou-se que a criptografia é apenas uma linha de defesa e também existem legais, organizacionais e simplesmente físicas no final. Um dos aspectos teóricos foi "Todas as questões de segurança da informação são descritas pelo acesso dos sujeitos aos objetos". Ele memorizou, desenhou os modelos de acesso credencial e discricionário, contou, passou e esqueceu.
Sou especialista em análise de segurança de aplicativos Windows. Muitas vezes, o estudo de direitos de acesso precisamente diferentes ocupa uma parte significativa do estudo. Para automatizar o processo de busca por direitos de acesso estranhos ou incorretos, tive que entender o SDDL (Security Descriptor Definition Language). Quem está interessado em aprender a ler direitos na forma de SDDL (por exemplo, algo como
O: SYG: SYD: (A; CCLCSWLOCRRC ;;; UI) (A ;; CCLCSWLOCRRC ;;; SU) (A ;; CCLCSWRPWPDTLOCRRC ;;; SY) (A; CCDCLCSWRPWPDTLOCRSDRCWDWO ;; BA) ) e familiarize-me com meu utilitário para trabalhar com descritores nesse formato, bem-vindo ao gato.
Formato SDDL
SDDL é uma sequência com descrições de direitos de acesso em forma de texto. Na maioria das vezes consiste em três partes: proprietário, grupo e direitos de acesso DACL. Às vezes, a parte SACL é adicionada - a parte de auditoria (se as ações com o objeto se ajustarem às regras da SACL, será criado um evento do sistema que será fácil de rastrear por vários sistemas). O descritor fica assim:
O: <proprietário> G: <grupo> D: <regras de acesso DACL> S: <regras de auditoria SACL>

Assim, o exemplo acima pode ser decomposto da seguinte maneira:
- O: SY
- G: SY
- D: (A ;; CCLCSWLOCRRC ;;; UI) (A ;; CCLCSWLOCRRC ;;; SU) (A; CCLCSWRPWPDTLOCRRC ;;; SY) (A ;; CCDCLCSWRPWPDTLOCRSDRCWDWO ;; BA)
O proprietário e o grupo podem ser indicados como o SID do usuário ou grupo do SO, ou como abreviações especiais. Por exemplo, nesse caso, o proprietário e o grupo SY é a conta do sistema local (NT AUTHORITY \ SYSTEM). A lista de abreviações (infelizmente, não exaustiva) pode ser encontrada
aqui .
As regras de acesso consistem na enumeração de sinalizadores DACL e seqüências de caracteres ACE (Entradas de Controle de Acesso). Uma análise detalhada do ACE é apresentada
aqui , consideraremos o mais importante. Cada linha ACE é colocada entre parênteses dentro dos quais os dados são separados por ponto e vírgula.
De maior interesse são o primeiro, o terceiro e o último grupos. Este é o tipo de acesso (permitido "A", proibido "D"), uma lista de ações e o nome do sujeito do acesso. A primeira regra DACL do exemplo acima: (A ;; CCLCSWLOCRRC ;;; UI), consideraremos em detalhes.

- "A" - a regra permite ações ao sujeito;
- "CC", "LC", "SW", "LO", "CR", "RC" - uma lista de ações permitidas;
- "UI" - essa abreviação significa o grupo Usuários conectados interativos.
Resta entender o que exatamente é permitido. O que significam esses misteriosos “CC”, “LC”, “SW”, “LO”, “CR”, “RC”?
Aqui estamos aguardando outra armadilha - nem sempre é possível indicar com precisão a ação por redução. Eles são, por assim dizer, específicos ao contexto. Por exemplo, se estivermos falando sobre os direitos de trabalhar com serviços, WP significa "interromper o serviço", se for sobre arquivos, depois "execução" e se for sobre pastas, e "atravessar" (acesso aos arquivos em uma pasta pelo nome, se não for possível conteúdo da lista). Algumas descrições estão
aqui , outras
aqui , com o mundo em um fio.
Ei, você perdeu muito dos sinalizadores DACL, sinalizadores ACE, herançaSim, é verdade, tudo isso é muito importante e interessante, mas não é tão comum. Eu me concentro na massa. No caso de manifestações únicas de sinalizadores incomuns, será mais fácil entender no modo manual.
Automação
Os utilitários da Sysinternals realmente me ajudam, a saber
, Monitor de processo e
Verificação de acesso (também conhecidos como procmon e accesschk). O primeiro permite examinar os acessos a arquivos e registros em tempo real, e o segundo permite coletar informações do sistema operacional nos descritores de segurança.
A propósito, no próprio sistema operacional, a janela com os direitos fica assim se alguém não tiver visto:

Infelizmente, a saída do accesschk não pode ser filtrada restringindo a solicitação de direitos a ações específicas. O Process Monitor mostra apenas as chamadas reais em um momento específico e você obtém uma solicitação muito precisa que não é diretamente afetada. Além disso, eu gostaria de ter um memorando sobre que tipo de grupo de usuários é
NO ou
NS e que tipo de ação está oculto por trás do CC e do RC.
Assim, nasceu um utilitário simples para visualizar e filtrar registros SDDL.
Como usar
Trabalhar com o utilitário é simples, apenas três etapas:
- Obter registros SDDL.
- Defina filtros de regras.
- Ver relatório.

Leia mais sobre cada etapa.
Obtendo SDDL. Para obter registros SDDL, você pode usar as funções incorporadas ao utilitário (botões 1, 2, 3 ou 4) ou fazer o download da lista que você recebeu anteriormente (botão 5). Observe que a solicitação de direitos de acesso é feita em nome do usuário que iniciou o SDDL Viewer; portanto, em algumas situações, vale a pena executar o programa não apenas como um usuário comum, mas também como administrador. Bem, em geral, o próprio campo com linhas SDDL é editável - você pode pelo menos reescrevê-lo manualmente.
A filtragem ocorre de acordo com dois parâmetros: grupos de usuários e direitos de acesso. A lista de grupos e usuários é baseada em todos os usuários mencionados no SDDL. Preste atenção à caixa de seleção Traduzir SIDs (6) - se estiver instalado, o SID de usuários e grupos será convertido em nomes relativos ao computador atual, se possível. A lista de direitos é organizada um pouco mais complicada - você precisa selecionar a categoria de direitos (se o SDDL for preenchido com o próprio utilitário, a categoria necessária será selecionada automaticamente) Além disso, os direitos presentes no SDDL serão destacados mais claramente na lista de direitos.
O relatório é simplesmente o resultado da descriptografia da SDDL e da aplicação de filtros. Você pode encontrar informações mais detalhadas sobre cada linha, se você selecioná-las na lista (sim, foi com essa função que recebi uma mordaça, o que deu origem a uma
pequena pesquisa sobre os componentes internos do .NET ).
Sumário
O código fonte está disponível no
github . Arquivos binários também estão na seção
Versão .
Meus planos de serviços públicos:
- Adicione uma pesquisa aos campos de entrada do SDDL - ainda assim, apenas a filtragem não é suficiente.
- Adicione parâmetros de inicialização que permitiriam criar relatórios sem uma parte visual.
- Talvez você deva adicionar preenchimento SDDL de processos, pastas compartilhadas e impressoras?
Ficarei feliz em ouvir sugestões nos comentários.