부동산, 채권, 주식, 경제흐름 자료를 모아 보는 블로그입니다.

UAC( User Account Control ) 본문

Study

UAC( User Account Control )

runardor 2016. 3. 30. 16:29

UAC( User Account Control )


VISTA 이후 윈도우 사용자는 자주 아래와 같은 박스를 자주 볼 수 있습니다.


< UAC 동작 >



What is UAC ??


MS에서 정의한 UAC는 아래와 같습니다.


UAC( 사용자 계정 컨트롤 )는 Window Vista이후 나온 보안기능으로 보안 토큰을 이용하여 컴퓨터를 무단으로 변경하지 못하게 하도록 한다.


만약 관리자 수준의 작업을 하기위해 프로그램을 실행할 경우 프로그램의 실행여부를 사용자에게 확인 이후 실행하게 된다.





UAC는 어떻게 동작하는것일까?


위와 같이 박스창이 뜰 경우 쉘이 비활성화 되며 해당 박스창만 활성화 되며, 해당 박스창만 사용이 가능합니다.


Window에서 UAC가 동작하는 과정은 아래와 같습니다.





사용자가 윈도우 쉘로 특정 프로그램을 실행할 경우 Appinfo 서비스에서 해당 프로그램이 관리자 권한으로 돌아가야하는 프로그램인지 서드파티 프로그램인지에 대한 정보를 확인하게 됩니다.


이후 Consent.exe를 이용하여 윈도우를 비활성화 하고 사용자에게 변경허용할지에 대한 대화 상자를 띄우게 됩니다.


이때 사용자가 허용을 누를 경우 해당 프로그램을 CreateProcessAsUser함수로 관리자 권한으로 실행하고, 허용을 하지 않을 경우 프로그램은 종료됩니다.



UAC 동작과정에 대한 Flow는 아래와 같다. ( 해당 그림은 외국 블로그에서 가져왔으나 출처가 남아있지 않아 남기지 못했습니다. )




UAC 대화창 발생 조건은 아래와 같습니다.


1. 사용자가 유저레벨에서 프로그램 실행시 해당 프로그램이 Admin 권한 레벨의 작업이 필요한 경우

2. 서드파티 어플리케이션인 경우(Microsoft가 아닌 프로그램)

3. MS 프로그램이지만 Menifest의 Auto Elevation Option이 No인 경우



UAC 예외사항

1.애플리케이션이 이미 관리자 권한으로 실행되고 있는 경우
2.작업이 커널 모드 호출자로부터 발생한 경우
3.호출자가 자격 변경 중인 동안에 수행되는 작업인 경우
4.프로세스 실행 파일이 UAC에 호환되는 매니페스트 파일을 갖고 있는 경우 ( Third Party 프로그램 제외 )

5.관리자가 파일이나 레지스트리 키에 쓰기 권한을 갖고 있지 않는 경우 ( 하위 호환성을 강제하기 위해 존재 )


추가적으로 UAC와 관련된 Menifest 정보는 아래와 같습니다.


Description

Comment

asInvoker

The application runs with the same access token as the parent process.

Recommended for standard user applications. Do refractoring with internal elevation points, as per the guidance provided earlier in this document.

highestAvailable

The application runs with the highest privileges the current user can obtain.

Recommended for mixed-mode applications. Plan to refractor the application in a future release.

requireAdministrator

The application runs only for administrators and requires that the application be launched with the full access token of an administrator.

Recommended for administrator only applications. Internal elevation points are not needed. The application is already running elevated. Value


출처 : https://msdn.microsoft.com/en-us/library/bb756929.aspx


특정 어플리케이션 개발시 Admin권한이 필요한 작업을 하는 프로그램의 경우 UAC 실행수준을 설정해주어야 한다. 해당 실행수준을 설정하지 않고 Admin권한이 필요한 작업을 수행하려고 할 경우 Error를 발생시키므로 각별하게 주의가 필요합니다.


아래 프로그램의 설정은 MBR 분석 프로그램을 설정한 화면으로 MBR을 읽기 위해서는 반드시 Admin권한이 필요하므로 반드시 UAC 사용 및 실행수준을 requireAdministrator를 주어야 합니다.




해당 프로그램을 빌드시 PE Format 내부 Menifest 정보가 업그레이드 되며 프로그램 실행시 윈도우에서는 해당 Menifrest 정보를 참고하여 UAC 실행여부를 확인하여 유저에게 박스창을 띄우게 됩니다.


'Study' 카테고리의 다른 글

Cmdlet(Power Shell)  (0) 2016.12.21
WMI (Windows Management Instrumentation)  (0) 2016.08.22
PowerShell을 이용한 다운로더  (0) 2016.08.22
PowerShell 에서 사용할 수 있는 환경 변수  (0) 2016.08.21
간단한 ShellCode Loader 만들기  (0) 2016.04.02
Comments