단일 UAC 바이너리가 있습니까?


27

System32 폴더에 Windows UAC 기능을 담당하는 이진 (.exe)이 있습니까? (예 uac.exe). 해당 파일을 강제로 삭제하면 어떻게됩니까? Windows가 중단되거나 부팅되지 않습니까?

XY 문제는 없습니다. UAC가 PC에서 강제로 제거되면 어떻게 될지 궁금합니다.


1
UAC를 쉽게 비활성화 할 수 있습니다. UAC는 커널의 기능입니다. 당신이 원하는 것은 불가능하다
Ramhound

win32k.sys technize.net/… 파일이 있으며 미리 패치 된 창에있는 해당 파일을 조작 / 변경하여 UAC를 비활성화 할 수 있습니다. 또는 EXE 파일이 아니지만 일반적인 방식으로 UAC를 비활성화 할 수 있습니다.
barlop

다양한 방법 (예 : superuser.com/questions/1013702/… )을 사용하여 UAC를 비활성화 할 수 있습니다 . 다른 해킹 방식을 제거하면 누락 된 바이너리에 대한 아래 답변의 오류가 있지만 대부분 동일한 효과를 얻을 것이라고 생각합니다.
YetAnotherRandomUser

@barlop, win32k.sys는 Windows 하위 시스템의 커널 쪽입니다. 즉, 모든 것이 사용하는 핵심 코드입니다. 변경을 시도하지 않는 것이 좋습니다. pasotech.altervista.org/windows_internals/Win32KSYS.pdf
다크 팔콘

@DarkFalcon 아마도 "윈도우 서브 시스템의 커널 쪽"보다 더 많을 것입니다. 그리고 나는 그 하나의 "변경"을 조언하지 않았다! 누군가가 무엇을 할 것이라고 생각하십니까? 메모장에서여시겠습니까? 나는 그런 것을 제안하지 않았다! 16 진 편집기를여시겠습니까? 더 나은,하지만 나도 제안하지 않았다! 그리고 그들이 바꾸고 자하는 것을 전혀 알지 못한다면 어느 누구도 그렇게하지 않고 어떤 것도 바꾸지 않을 것입니다.
barlop

답변:


56

UAC는 여러 바이너리로 구현 된 다중 구성 요소 아키텍처입니다.

UAC ( 사용자 계정 컨트롤 )는 UAC 아키텍처 를 함께 구성하는 여러 구성 요소를 말합니다 . 구현을 담당하는 바이너리와 함께 이들 중 일부를 간단히 검토하지만 먼저 Microsoft Docs 기사 사용자 계정 컨트롤 작동 방식 에서 UAC 아키텍처에 대한 개요를 살펴 보겠습니다 .

여기에 이미지 설명을 입력하십시오

로컬 보안 기관 (LSA) / 필터링 된 토큰

개념적으로 UAC의 "첫 번째"구성 요소 는 로그온 과정 에서 사용자의 액세스 토큰 생성을 처리 하는 로컬 보안 기관 하위 시스템에 의해 구현됩니다 . Windows Vista부터는 로그온 프로세스가 수정되어 관리자가 UAC를 활성화 한 상태에서 로그온 할 때 LSA 하위 시스템이 사용자에 대해 두 개의 개별 액세스 토큰을 생성합니다.

  1. 하나는 전체 관리자 액세스 권한이 있으며
  2. 표준 사용자 액세스 권한이있는 두 번째 "필터링 된 토큰"

여기에 표시된 것처럼이 프로세스는 표준 사용자 로그온 프로세스와 다릅니다.

여기에 이미지 설명을 입력하십시오

LSA 하위 시스템 서비스는 lsass.exe프로세스 중에 있습니다.

가상화

Windows 7에서 추가, 파일 및 레지스트리 가상화는 UAC의 구성 요소입니다 하지-UAC를 준수하지만 파일 시스템이나 레지스트리의 접근 특정 보호 지역을 위해 관리자 권한이 필요한 경우에만 기존 응용 프로그램 :

UAC를 준수하지 않는 관리 응용 프로그램이 프로그램 파일과 같은 보호 된 디렉터리에 쓰려고하면 UAC는 응용 프로그램에 변경하려는 리소스에 대한 자체 가상화 된보기를 제공합니다. 가상화 된 사본은 사용자의 프로필에서 유지 관리됩니다.

출처

이러한 액세스 시도를 관리자 권한이 필요없는 영역으로 리디렉션하면 시스템에서 UAC가 활성화되어 있어도 이러한 응용 프로그램이 계속 작동합니다.

이 가상화는 커널에서 구현됩니다 .

응용 정보 서비스

AIS (Application Information Service)는 응용 프로그램의 매니페스트를 읽고 UAC 동의 프롬프트와 함께 작동하여 응용 프로그램이 높은 권한으로 실행될 수 있는지 확인합니다 (예 : 로그온시 생성 된 필터링되지 않은 관리 수준 액세스 토큰의 컨텍스트에서 시작) . 이 블로그 게시물 은 UAC 프로세스에서의 역할에 대한 개요를 제공합니다.

AIS 추가 관리 권한으로 대화 형 응용 프로그램을 쉽게 실행할 수 있습니다. 이 서비스가 중지되면 사용자는 필요한 추가 관리 권한으로 응용 프로그램을 시작할 수 없습니다. 응용 프로그램을 시작할 때 셸에서이 서비스를 확인합니다. AIS는 매니페스트와 'requestedExecutionLevel'에 대한 요구 사항이있는 'trustInfo'xml 섹션을 읽는 것입니다.

다음은 UAC 동의 프롬프트 프로세스에서 AIS의 역할을 자세히 설명하는 위의 인용문을 따르는 그래픽입니다.

여기에 이미지 설명을 입력하십시오

AIS는에 의해 실행되는 DLL에서 구현appinfo.dll 됩니다 svchost.exe.

동의 프롬프트

@BenN의 답변 은 유명한 UAC 동의 프롬프트의 주요 역할을 설명합니다. 이는 consent.exe관리자 권한이 필요한 응용 프로그램을 시작하기 위해 사용자의 동의 또는 관리 사용자의 자격 증명을 구현하고 구현 합니다.

안전한 데스크탑

보안 데스크탑은 UAC 동의 프롬프트가 기본적으로 표시되는 곳입니다. Microsoft의 UACBlog 는 사용자 데스크탑과 비교하여이 데스크탑의 고유 한 사항을 알려줍니다.

로그온 UI가 보안 데스크톱에서 실행되므로 Windows에 로그온 할 때 가장 일반적으로 [보안 데스크톱]과 상호 작용합니다. Secure Desktop과 User Desktop의 주요 차이점은 SYSTEM으로 실행되는 신뢰할 수있는 프로세스 만 여기에서 실행할 수 있으며 (예 : 사용자의 권한 수준으로 실행되지 않는 것) 사용자 데스크탑에서 Secure Desktop으로가는 경로도 신뢰할 수 있어야한다는 것입니다 전체 체인.

높은 권한으로 응용 프로그램을 실행하는 사용자의 동의를 요청할 때이를 사용하는 아이디어는 이미 관리자 권한이 없는 한 맬웨어가 Secure Desktop을 모방 할 수 없다는 것입니다.


결론 : UAC는 단지 하나의 이진이 아닙니다. 직조 서브 시스템의 패브릭입니다.

여기에서 다루지 않은 UAC 아키텍처의 다른 측면이 있지만, 다음과 같은 사실에 대한 충분한 증거를 제공해야합니다.

  1. UAC는 단일 바이너리로 구현되지 않습니다.
  2. 활성화 된 경우 관리 작업 수행에 없어서는 안될 부분입니다.

Windows Vista에 도입 된 이후 로 운영 체제의 주요 부분에 깊이 통합되어 다른 기능 (예 : 로그온 기능)을 손상시키지 않으면 서 UAC를 담당하는 모든 코드를 삭제할 수 없게되었습니다.

UAC를 "강제로 삭제"하면 Windows가 중단된다고 말하는 것이 안전하다고 생각합니다.


1
FWIW technize.net/… 해당 링크를 바탕으로 win32k.sys 파일이 file.exe에서 "MS Windows 용 PE32 + 실행 파일 (기본) x86-64"로 식별되는 역할을하는 것으로 보입니다.
barlop

win32k.sys는 본질적으로 커널의 큰 덩어리입니다. 물론 UAC에서 중요한 역할을합니다. 그것은 이다 윈도우.
Roger Lipscombe 11

25

Twisty가 훌륭하게 설명했듯이 UAC를 구현하는 데 도움 이 되는 많은 구성 요소가 있습니다. 사람들이 가장 친숙한 UAC의 부분은 권한 상승 / 동의 대화입니다.

consent.exe"관리 응용 프로그램에 대한 동의 UI"에서 제공 합니다. VM에서 이름을 바꾸고 어떻게되는지 보았습니다. 예상대로 "관리자 권한으로 실행"을 사용할 때 권한 상승 프롬프트가 표시되지 않고 파일을 찾을 수 없다는 오류 메시지가 표시됩니다.

찾을 수 없습니다

관리자로 로그인 한 경우에도 고도가 필요한 (예 : 방패 아이콘이있는) 제어판 UI 요소를 사용하려고하면 비슷한 오류로 실패합니다. 시작 메뉴에서 관리 작업을 시작하려고하면 약간 다른 오류가 발생합니다.

연결된 앱이 없습니다

모든 이름을 변경 한 이름 바꾸기를 수행 할 때 ACL 세트에 따라 파일 작업이 권한 상승을 요구할 수 있기 때문에 (일반적으로 동의 대화 상자를 생성하지 않더라도) OS 내에서이를 수정하는 것이 불가능할 수 있습니다. 그러나 일반 사용자와 유사한 활동은 저하되지 않는 것 같습니다.


3
@muru, consent.exe는 true 또는 false를 반환하는 것이 아니라 실행할 토큰을 반환합니다. 즉, 실제로 관리자로 인증하지 않으면 일반 사용자에서 관리자 토큰으로 갈 수 없습니다.
Joey

6
@muru Windows는 많은 시스템 파일을 확인하고 대체하지만이 파일이 포함되어 있는지 확실하지 않습니다. 그러나 보안의 관점에서, 요점은 무의미합니다-consent.exe를 대체하려면 먼저 관리자 권한이 필요하므로 상상의 방식을 바꿀 수는 있어도 권한 상승이 없습니다.
루안

3
생각이 떠오른 이후에 포함시키기 만하면됩니다. 여전히 머신을 Linux로 부팅하거나 파일을 대체 할 수 있습니다. 그러나 기본적으로 관리 액세스 인 머신에 대한 물리적 액세스가 필요합니다. 따라서 여전히 보안 문제는 아닙니다
DeadChex

1
@EricTowers 예. 그러나 관리 권한이 변경되어야하므로이를 consent.exe수행 할 수있는 공격자는 이미 기밀 해치의 반대편에 있으며 나쁜 일을하는보다 직접적인 방법이 있습니다.
Ben N

1
@TwistyImpersonator 재미있는 질문! 자동 관리자 권한은 일반 관리자 계정으로 수행 될 때 프로세스 시작 모니터링 당 동의 실행을 트리거하는 것으로 보입니다 . 기본 제공 관리자 계정에는 UAC가 적용되지 않으므로 모든 프로그램이 이미 상승했으며 동의가 없습니다. 이 보안 정책을 사용하여 해당 동작을 변경할 수 있습니다 .
Ben N
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.