UAC - User Account Control
Last updated
Last updated
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Trickest를 사용하여 세계에서 가장 진보된 커뮤니티 도구로 워크플로우를 쉽게 구축하고 자동화하세요. 오늘 액세스하세요:
사용자 계정 컨트롤 (UAC)는 승격된 활동에 대한 동의 프롬프트를 활성화하는 기능입니다. 애플리케이션은 서로 다른 무결성
수준을 가지며, 높은 수준의 프로그램은 시스템을 손상시킬 수 있는 작업을 수행할 수 있습니다. UAC가 활성화되면 애플리케이션과 작업은 항상 비관리자 계정의 보안 컨텍스트에서 실행되며, 관리자가 명시적으로 이러한 애플리케이션/작업이 시스템에 대한 관리자 수준의 액세스를 갖도록 승인하지 않는 한 그렇습니다. 이는 관리자가 의도하지 않은 변경으로부터 보호하는 편의 기능이지만 보안 경계로 간주되지는 않습니다.
무결성 수준에 대한 자세한 정보는 다음을 참조하세요:
Integrity LevelsUAC가 설정되면 관리자는 2개의 토큰을 받습니다: 일반 사용자 키, 일반 수준에서 정기적인 작업을 수행하기 위한 것과 관리자 권한이 있는 하나입니다.
이 페이지에서는 UAC가 어떻게 작동하는지에 대해 깊이 있게 논의하며, 로그인 프로세스, 사용자 경험 및 UAC 아키텍처를 포함합니다. 관리자는 보안 정책을 사용하여 조직의 특정 요구에 맞게 UAC 작동 방식을 구성할 수 있으며, 로컬 수준에서 (secpol.msc 사용) 또는 Active Directory 도메인 환경에서 그룹 정책 개체(GPO)를 통해 구성하고 배포할 수 있습니다. 다양한 설정에 대한 자세한 내용은 여기에서 논의됩니다. UAC에 대해 설정할 수 있는 그룹 정책 설정은 10개가 있습니다. 다음 표는 추가 세부 정보를 제공합니다:
그룹 정책 설정 | 레지스트리 키 | 기본 설정 |
---|---|---|
FilterAdministratorToken | 비활성화 | |
EnableUIADesktopToggle | 비활성화 | |
ConsentPromptBehaviorAdmin | 비윈도우 바이너리에 대한 동의 요청 | |
ConsentPromptBehaviorUser | 보안 데스크탑에서 자격 증명 요청 | |
EnableInstallerDetection | 활성화 (홈 기본값) 비활성화 (기업 기본값) | |
ValidateAdminCodeSignatures | 비활성화 | |
EnableSecureUIAPaths | 활성화 | |
EnableLUA | 활성화 | |
PromptOnSecureDesktop | 활성화 | |
EnableVirtualization | 활성화 |
일부 프로그램은 사용자가 관리자 그룹에 속하는 경우 자동으로 승격됩니다. 이러한 바이너리는 Manifests 내부에 autoElevate 옵션을 True 값으로 가지고 있습니다. 바이너리는 또한 Microsoft에 의해 서명되어야 합니다.
그런 다음, UAC를 우회하기 위해 (무결성 수준 중간에서 높음으로 승격) 일부 공격자는 이러한 종류의 바이너리를 사용하여 임의 코드를 실행합니다. 이는 높은 수준의 무결성 프로세스에서 실행되기 때문입니다.
바이너리의 _Manifest_를 확인하려면 Sysinternals의 sigcheck.exe 도구를 사용할 수 있습니다. 그리고 Process Explorer 또는 Process Monitor (Sysinternals)의 프로세스의 무결성 수준을 확인할 수 있습니다.
UAC가 활성화되어 있는지 확인하려면 다음을 수행하세요:
만약 **1
**이면 UAC가 활성화된 것이고, **0
**이거나 존재하지 않으면 UAC가 비활성화된 것입니다.
그런 다음, 어떤 수준이 구성되어 있는지 확인하십시오:
**0
**이면, UAC가 프롬프트하지 않습니다 (마치 비활성화된 것처럼)
**1
**이면, 관리자가 사용자 이름과 비밀번호를 요청받아야 하며, 높은 권한으로 바이너리를 실행할 수 있습니다 (보안 데스크탑에서)
2
(항상 나에게 알림) UAC는 관리자가 높은 권한으로 무언가를 실행하려고 할 때 항상 확인을 요청합니다 (보안 데스크탑에서)
**3
**은 1
과 같지만 보안 데스크탑에서 필요하지 않습니다
**4
**는 2
와 같지만 보안 데스크탑에서 필요하지 않습니다
5
(기본값)는 관리자가 높은 권한으로 비 Windows 바이너리를 실행하기 위해 확인을 요청합니다
그런 다음 **LocalAccountTokenFilterPolicy
**의 값을 확인해야 합니다
값이 **0
**이면, RID 500 사용자 (내장 관리자)만 UAC 없이 관리 작업을 수행할 수 있으며, 1
이면 "Administrators" 그룹 내의 모든 계정이 이를 수행할 수 있습니다.
마지막으로 FilterAdministratorToken
키의 값을 확인해야 합니다
0
(기본값)이면, 내장 관리자 계정이 원격 관리 작업을 수행할 수 있으며, **1
**이면 내장 관리자 계정은 LocalAccountTokenFilterPolicy
가 1
로 설정되지 않는 한 원격 관리 작업을 수행할 수 없습니다.
EnableLUA=0
또는 존재하지 않으면, 누구에게도 UAC 없음
EnableLua=1
이고 **LocalAccountTokenFilterPolicy=1
**이면, 누구에게도 UAC 없음
EnableLua=1
이고 LocalAccountTokenFilterPolicy=0
및 **FilterAdministratorToken=0
**이면, RID 500 (내장 관리자)에게는 UAC 없음
EnableLua=1
이고 LocalAccountTokenFilterPolicy=0
및 **FilterAdministratorToken=1
**이면, 모두에게 UAC 있음
이 모든 정보는 metasploit 모듈: post/windows/gather/win_privs
를 사용하여 수집할 수 있습니다.
사용자의 그룹을 확인하고 무결성 수준을 얻을 수도 있습니다:
피해자에게 그래픽 접근이 가능하다면, UAC 프롬프트가 나타날 때 "예"를 클릭하면 UAC 우회가 간단합니다.
UAC 우회는 다음 상황에서 필요합니다: UAC가 활성화되어 있고, 프로세스가 중간 무결성 컨텍스트에서 실행되며, 사용자가 관리자 그룹에 속하는 경우.
UAC가 최고 보안 수준(항상)에 있을 때 UAC를 우회하는 것이 다른 수준(기본)에 비해 훨씬 더 어렵다는 점을 언급하는 것이 중요합니다.
UAC가 이미 비활성화된 경우(ConsentPromptBehaviorAdmin
이 0
) 관리자 권한으로 역방향 셸을 실행할 수 있습니다 (높은 무결성 수준) 다음과 같은 방법을 사용하여:
관리자 그룹에 속한 사용자로 쉘을 가지고 있다면 C$ 공유를 SMB(파일 시스템)를 통해 새로운 디스크에 로컬로 마운트할 수 있으며, 파일 시스템 내의 모든 것에 접근할 수 있습니다 (관리자 홈 폴더 포함).
이 트릭은 더 이상 작동하지 않는 것 같습니다
Cobalt Strike 기술은 UAC가 최대 보안 수준으로 설정되어 있지 않을 때만 작동합니다.
Empire와 Metasploit는 UAC를 우회하는 여러 모듈을 가지고 있습니다.
문서 및 도구는 https://github.com/wh0amitz/KRBUACBypass에서 확인할 수 있습니다.
UACME는 여러 UAC 우회 익스플로잇의 컴파일입니다. visual studio 또는 msbuild를 사용하여 UACME를 컴파일해야 한다는 점에 유의하세요. 컴파일은 여러 실행 파일(예: Source\Akagi\outout\x64\Debug\Akagi.exe
)을 생성하며, 어떤 것이 필요한지 알아야 합니다.
일부 우회 방법은 다른 프로그램을 알림하여 사용자에게 무언가가 발생하고 있음을 알릴 수 있으므로 주의해야 합니다.
UACME는 각 기술이 작동하기 시작한 빌드 버전을 가지고 있습니다. 귀하의 버전에 영향을 미치는 기술을 검색할 수 있습니다:
Also, using this page you get the Windows release 1607
from the build versions.
모든 기술은 AUC를 우회하기 위해 전체 대화형 셸이 필요합니다 (일반 nc.exe 셸은 충분하지 않습니다).
meterpreter 세션을 사용하여 얻을 수 있습니다. Session 값이 1인 프로세스로 마이그레이션하세요:
(_explorer.exe_는 작동해야 합니다)
GUI에 접근할 수 있다면 UAC 프롬프트가 나타날 때 그냥 수락하면 됩니다, 우회할 필요가 없습니다. 따라서 GUI에 접근하면 UAC를 우회할 수 있습니다.
게다가, 누군가가 사용 중인 GUI 세션을 얻으면 (잠재적으로 RDP를 통해) 관리자로 실행되는 몇 가지 도구가 있을 수 있습니다. 여기서 cmd를 예를 들어 관리자 권한으로 직접 실행할 수 있습니다. UAC에 의해 다시 프롬프트되지 않습니다. https://github.com/oski02/UAC-GUI-Bypass-appverif와 같은 도구입니다. 이는 좀 더 은밀할 수 있습니다.
시끄러운 것이 신경 쓰이지 않는다면, 다음과 같은 것을 실행할 수 있습니다: https://github.com/Chainski/ForceAdmin 이 사용자가 수락할 때까지 권한 상승을 요청합니다.
UACME를 살펴보면 대부분의 UAC 우회는 Dll Hijacking 취약점을 악용합니다 (주로 _C:\Windows\System32_에 악성 dll을 작성하는 것입니다). Dll Hijacking 취약점을 찾는 방법을 배우려면 여기를 읽으세요.
자동 상승하는 이진 파일을 찾습니다 (실행 시 높은 무결성 수준에서 실행되는지 확인).
procmon을 사용하여 DLL Hijacking에 취약할 수 있는 "NAME NOT FOUND" 이벤트를 찾습니다.
아마도 쓰기 권한이 없는 일부 보호된 경로(예: C:\Windows\System32) 내에 DLL을 작성해야 할 것입니다. 이를 우회할 수 있는 방법은:
wusa.exe: Windows 7, 8 및 8.1. CAB 파일의 내용을 보호된 경로 내에 추출할 수 있습니다 (이 도구는 높은 무결성 수준에서 실행되기 때문입니다).
IFileOperation: Windows 10.
보호된 경로 내에 DLL을 복사하고 취약하고 자동 상승된 이진 파일을 실행하는 스크립트를 준비합니다.
자동 상승 이진 파일이 레지스트리에서 이진 파일 또는 명령의 이름/경로를 읽으려는지 감시하는 것입니다 (이진 파일이 HKCU 내에서 이 정보를 검색하는 경우 더 흥미롭습니다).
Use Trickest to easily build and automate workflows powered by the world's most advanced community tools. Get Access Today:
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)