Existe um binário (.exe) na pasta System32 responsável pelas funcionalidades do Windows UAC? (por exemplo uac.exe
). O que aconteceria se esse arquivo fosse excluído à força? O Windows quebraria ou falharia ao inicializar?
Não há nenhum problema XY aqui; Estou curioso para saber o que aconteceria se o UAC fosse removido com força de um PC.
Respostas:
O UAC é uma arquitetura de múltiplos componentes implementada por vários binários
O Controle de Conta de Usuário (UAC) refere-se a vários componentes que juntos formam a arquitetura do UAC . Analisarei brevemente alguns deles, juntamente com os binários responsáveis por sua implementação, mas primeiro aqui está uma visão geral da arquitetura do UAC no artigo do Microsoft Docs Como funciona o controle de contas de usuário :
Autoridade de Segurança Local (LSA) / Token Filtrado
Conceitualmente, o "primeiro" componente do UAC é implementado pelo subsistema Local Security Authority, que lida com a criação do Token de Acesso de um usuário durante o processo de logon. A partir do Windows Vista, o processo de logon foi modificado para que, quando um administrador efetue logon com o UAC ativado, o subsistema LSA gere dois tokens de acesso separados para o usuário:
Como mostrado aqui, esse processo é diferente daquele de um logon de usuário padrão:
O serviço do subsistema LSA vive no
lsass.exe
processo.Virtualização
Adicionado no Windows 7, o File and Registry Virtualization é um componente do UAC que calha os aplicativos mais antigos que não são compatíveis com o UAC, mas exigem apenas direitos administrativos para acessar determinadas áreas protegidas do sistema de arquivos ou do Registro:
Fonte
Ao redirecionar essas tentativas de acesso para áreas que não exigem permissões de administrador, esses aplicativos continuam a funcionar, apesar do UAC estar ativado no sistema.
Essa virtualização é implementada no Kernel .
Serviço de Informações do Aplicativo
O Application Information Service (AIS) lê o manifesto de um aplicativo e trabalha com o prompt de consentimento do UAC para determinar se um aplicativo tem permissão para executar com direitos elevados (por exemplo, iniciar no contexto do token de acesso de nível administrativo não filtrado criado no logon) . Esta postagem do blog fornece uma boa visão geral de seu papel no processo do UAC:
Aqui está um gráfico que segue a citação acima, detalhando a função do AIS no processo de solicitação de consentimento do UAC:
O AIS é implementado na DLL
appinfo.dll
que é executada porsvchost.exe
.Prompt de consentimento
A resposta de @ BenN explica o papel principal do (in) famoso Prompt de Consentimento do UAC. Isso é implementado
consent.exe
e é responsável por obter o consentimento do usuário ou as credenciais de um usuário administrativo para permitir o lançamento de um aplicativo que requer direitos de administrador.Área de trabalho segura
A área de trabalho segura é onde o prompt de consentimento do UAC é exibido por padrão. O UACBlog da Microsoft nos diz o que há de exclusivo nesta área de trabalho em comparação com a área de trabalho do usuário:
A idéia por trás do uso ao solicitar o consentimento do usuário para executar um aplicativo com permissões elevadas é que o malware não pode imitar a Área de Trabalho Segura, a menos que já tenha direitos administrativos; nesse caso, enganar um usuário para concedê-lo é discutível.
Conclusão: o UAC não é apenas um binário. É um tecido de subsistemas entrelaçados.
Ainda existem outros aspectos da arquitetura do UAC não abordados aqui, mas isso deve fornecer evidências suficientes para os fatos que:
Desde a sua introdução no Windows Vista, ele foi profundamente integrado às partes principais do sistema operacional, tornando impossível excluir todo o código responsável pelo UAC sem interromper outras coisas (como a capacidade de logon!)
I think it's safe to say that if you "forcefully deleted" UAC you would break Windows.
fonte
Como Twisty explicou excelentemente , existem muitos componentes que ajudam a implementar o UAC. A parte do UAC com a qual as pessoas estão mais familiarizadas é o diálogo de elevação / consentimento:
Isso é fornecido por
consent.exe
, "UI de consentimento para aplicativos administrativos". Tentei renomeá-lo em uma VM e ver o que acontece. Como esperado, nenhuma solicitação de elevação aparece ao usar "executar como administrador". Em vez disso, você recebe um erro de arquivo não encontrado que culpa a coisa que você está tentando elevar:A tentativa de usar qualquer elemento da interface do usuário do Painel de controle que exija elevação (ou seja, possui o ícone de escudo), mesmo se estiver conectado como administrador, falha com erros semelhantes. Tentar iniciar itens administrativos no menu Iniciar produz um erro ligeiramente diferente:
Dependendo da ACL definida ao renomear tudo, pode ser impossível corrigir isso no sistema operacional, pois as operações de arquivo podem exigir elevação (mesmo que geralmente não produzam a caixa de diálogo de consentimento). As atividades normais de usuário não parecem degradadas.
fonte
consent.exe
, um invasor que pode fazer isso já está do outro lado da escotilha hermética e tem maneiras mais simples de fazer coisas ruins.