XSEC: Como aprender o controle de acesso do Windows em duas horas

Quer aprender o subsistema de controle de acesso do Windows em duas horas? Além do mais, saber desse assunto como nenhum de seus professores conhece? Quer saber como usar a função de API do Windows com o nome mais longo - AccessCheckByTypeResultListAndAuditAlarmByHandle? E vê o código que cria estruturas não documentadas do Windows? Então você está aqui!





O artigo apresenta uma descrição da biblioteca e um conjunto de testes que permitirão a qualquer usuário estudar o subsistema de controle de acesso do Windows da forma mais completa possível com um conhecimento inicial relativamente pequeno. Os problemas de trabalhar com DACL, SACL, ACE condicional, verificação de integridade obrigatória e muitos outros são considerados. Os testes permitem que o usuário altere arbitrariamente os dados de entrada e os modifique de forma independente para um estudo mais detalhado dos tópicos necessários para um determinado usuário. A biblioteca apresentada permitirá que você analise e crie todas as estruturas internas do subsistema de segurança do Windows, e também permite que você crie "tokens de acesso" com dados iniciais arbitrários.





Há muito tempo, comecei a aprender sobre o subsistema de segurança do Windows. Eu li livros excelentes, mas cada livro deve ser apoiado antes de tudo pela prática. Foi assim que comecei meus experimentos práticos. Em primeiro lugar, comecei com uma técnica padrão: criar uma certa estrutura de arquivo com vários níveis aninhados (diretórios). Nos estágios iniciais do estudo, esse "local experimental" era suficiente. No entanto, quando passei a aprender sobre DAC (Dynamic Access Control), o "site" de teste ficou muito mais complicado: já tive que implantar várias máquinas virtuais, uma das quais era o Windows Server e a outra era um sistema operacional cliente regular . Aqui já foi necessário estudar o processo de configuração de muitos subsistemas do Windows Server, o que um tanto desviou da tarefa original: o estudo do subsistema de segurança.No final, eu tinha uma biblioteca bastante desenvolvida escrita que me permitiu obter de uma forma conveniente para mim todos os valores de várias estruturas relacionadas ao subsistema de segurança do Windows, e para a maioria deles - também criá-los a partir de valores salvos anteriormente . Mas um dia tive uma ideia que mudou radicalmente (e simplificou muito) toda a minha abordagem para estudar este tópico.





, , , , , . Microsoft .





, Windows – : «» (access token) « » (security descriptor a.k.a. SD). , , – . /, Windows , . : 1) ; 2) ; 3) . , - – . , , .





- . , «Run As Administrator». Visual Studio. , - : SeCreateTokenPrivilege (Create a token object), SeTcbPrivilege (Act as part of the operating system), SeImpersonatePrivilege (Impersonate a client after authentication).





C++. « » , . . . , , « , , copyright». – - , Windows Access Control, , , .





, :





1. Windows ?





. . , -. – . ( ) – . ​





2. Windows API - AccessCheckByTypeResultListAndAuditAlarmByHandle?





, AccessCheckByTypeResultListAndAuditAlarmByHandle. , . AccessCheckByTypeResultListAndAuditAlarmByHandle . , , , .





3. , Windows?





Aqui neste link você pode encontrar uma função que cria uma "representação binária" para o tipo de dados CLAIM_SECURITY_ATTRIBUTE_V1. A estrutura em si está documentada em [MS-DTYP], mas não há descrição de como ela é representada em dados binários. Essa estrutura é necessária para definir os "atributos de recursos" (o conceito se refere a DAC, Controle de Acesso Dinâmico) para o descritor de segurança (por exemplo, para definir os recursos de um arquivo).








All Articles