Existe um único binário do UAC?

27

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.

Kathy
fonte
1
Você pode desativar facilmente o UAC. UAC é uma função do kernel. O que você quer não é possível
Ramhound
Existe um arquivo win32k.sys technize.net/… e aparentemente esse arquivo em uma janela pré-corrigida pode ser manipulado / alterado .. para desativar o UAC. Alternativamente pode-se desabilitar o UAC de forma normal, embora não seja um arquivo EXE
barlop
Você pode desativar o UAC usando vários métodos, por exemplo superuser.com/questions/1013702/… . Eu estou pensando que se você removê-lo de alguma outra maneira hack-ish, você obterá o mesmo efeito, embora com os erros nas respostas abaixo sobre binários ausentes.
YetAnotherRandomUser
@barlop, win32k.sys é apenas o lado do kernel do subsistema Windows. Em outras palavras, o código principal usado por tudo. Eu não recomendaria tentar mudar isso. pasotech.altervista.org/windows_internals/Win32KSYS.pdf
Dark Falcon
@DarkFalcon Provavelmente há mais do que "o lado do kernel do subsistema Windows". E eu não estava aconselhando que alguém "mudasse"! O que você acha que alguém vai fazer? Abri-lo no bloco de notas? Eu nunca sugeri uma coisa dessas! Abrir um editor hexadecimal? melhor, mas também não sugeri isso! E ninguém faria isso e mudaria nada, a menos que eles tivessem alguma idéia do que queriam mudar, o que exigiria um certo nível de habilidade!
barlop

Respostas:

56

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 :

insira a descrição da imagem aqui

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:

  1. Um com acesso total de administrador e
  2. Um segundo "token filtrado" com acesso de usuário padrão

Como mostrado aqui, esse processo é diferente daquele de um logon de usuário padrão:

insira a descrição da imagem aqui

O serviço do subsistema LSA vive no lsass.exeprocesso.

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:

Quando um aplicativo administrativo que não é compatível com o UAC tenta gravar em um diretório protegido, como Arquivos de Programas, o UAC fornece ao aplicativo sua própria exibição virtualizada do recurso que está tentando alterar. A cópia virtualizada é mantida no perfil do usuário.

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:

AIS Facilita a execução de aplicativos interativos com privilégios administrativos adicionais. Se esse serviço for interrompido, os usuários não poderão iniciar aplicativos com os privilégios administrativos adicionais que possam exigir .... O shell verifica esse serviço quando lança um aplicativo. AIS é aquele que lê o manifesto e a seção xml 'trustInfo' que possui os requisitos para o 'requestExecutionLevel' ...

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:

insira a descrição da imagem aqui

O AIS é implementado na DLLappinfo.dll que é executada por svchost.exe.

Prompt de consentimento

A resposta de @ BenN explica o papel principal do (in) famoso Prompt de Consentimento do UAC. Isso é implementado consent.exee é 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:

Você costuma interagir com [o Secure Desktop] quando faz logon no Windows, pois a interface do usuário de logon é executada no Secure Desktop. A principal diferença do Secure Desktop em relação à Área de trabalho do usuário é que apenas processos confiáveis ​​executados como SYSTEM podem ser executados aqui (ou seja, nada em execução como nível de privilégio do usuário) e o caminho para chegar à Área de trabalho segura a partir da Área de trabalho do usuário também deve ser confiável através toda a cadeia.

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 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:

  1. O UAC não é implementado em um único binário.
  2. Se ativado, é parte integrante da execução de tarefas administrativas.

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.

Eu digo Restabelecer Monica
fonte
1
FWIW technize.net/… com base nesse link, parece que o arquivo win32k.sys parece desempenhar um papel, noto que o arquivo.exe o identifica como "PE32 + executável (nativo) x86-64, para MS Windows"
barlop
O win32k.sys é - essencialmente - uma grande parte do kernel. Obviamente, ele desempenha um papel no UAC. Ele é o Windows.
Roger Lipscombe
25

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:

não encontrado

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:

nenhum aplicativo associado

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.

Ben N
fonte
3
@ muru, eu acho que consent.exe não apenas retorna verdadeiro ou falso, mas o token a ser executado. O que significa que você não pode passar de um usuário normal para um token de administrador sem realmente se autenticar como administrador.
Joey
6
@muru O Windows verifica e substitui muitos arquivos do sistema, não tendo certeza se este está incluído ou não. No entanto, do ponto de vista da segurança, o ponto é discutível - para substituir o consent.exe, você precisa de privilégios de administrador em primeiro lugar, para que não haja escalação de privilégios, mesmo que fosse possível substituir a maneira que você imagina.
Luaan 19/03/19
3
Só para incluí-lo desde que o pensamento veio à minha mente. Você ainda pode inicializar a máquina no Linux ou algo assim para substituir o arquivo. Mas isso requer acesso físico à máquina, que também é basicamente acesso administrativo. Por isso ainda não é uma preocupação de segurança
DeadChex
1
@EricTowers Sim, mas como os privilégios administrativos precisam ser alterados 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.
19718 Ben N
1
@TwistyImpersonator Pergunta interessante! A elevação silenciosa parece também acionar uma execução de Consentimento (por monitoramento de início do processo ) quando realizada em uma conta de administrador normal. A conta de administrador interna não está sujeita ao UAC; portanto, todos os seus programas já estão elevados e o consentimento não é envolvido. Você pode alterar esse comportamento usando esta política de segurança .
21718 Ben N