728x90
윈도우의 권한상승 케이스 분석 - Fodhelper UAC Bypass
학습 목표
- Fodhelper UAC Bypass 공격을 통한 권한상승 기술에 대한 이해
(User Account Control, UAC)
주요 내용
- Fodhelper 프로그램의 일반적인 동작과정
- Fodhelper 프로그램이 권한을 상승하는 이유와 윈도우 운영체제의 권한상승 조건
- Fodhelper UAC Bypass 증명을 위한 윈도우 쉘 실행 예시
주문형 기능(Features on Demand) 개요
- 윈도우 주문형 기능(FoD, Features on Demand)은 사용자가 필요할 때 선택적으로 프로그램을 설치하거나 활성화할 수 있는 기능을 의미합니다.
- 해당 기능을 사용하기 위해서는 Fodhhelper.exe(C:\\Windows\System32)바이너리를 실행해야 합니다.
- Fodhelper.exe 파일은 최근 운영체제에는 기본 내장된 실행파일이며, Microsoft에 의해 디지털 서명되어 있습니다.

주문형 기능(Features on Demand)의 일반적인 동작 과정 요약
| 순서 | 구분 | 내용 |
| 1 | 사용자의 실행 요청 | 사용자가 FodHelper.exe 프로그램을 실행하거나 별도의 윈도우 구성요소에서 해당 프로그램을 실행합니다. |
| 2 | 매니페스트 검사 (원도우의 로더) |
윈도우는 실행파일(FodHelper.exe) 내에 있는 매니페스트 설정을 확인하여 "autoElevate=true", "requireAdministrator", "highestAvaulable" 등의 권한 상승 관련 속성을 확인합니다. 해당 속성은 실행파일이 운영체제에게 권한 상승을 요청한다는 의미입니다. 해당 내용이 확인되면 AppInfo 서비스에게 자격요건 검증을 요청합니다. |
| 3 | 자격요건 검증 (윈도우의 AppInfo) |
윈도우의 "AppInfo" 서비스가 권한 상승 요청을 처리합니다. 해당 서비스가 실행파일의 서명 및 무결성을 검증합니다. 해당 서비스는 자동권한 상승을 허용하기에 앞서 다음 요건이 만족되는지 확인합니다. 1. 실행파일의 디지털 서명이 MS가 서명한 것인지 확인 2.파일의 위치가 보호되고 있는 폴더인 C:\Windows\System32인지 확인 3.파일의 버전, 정품 여부 등을 확인 4.프로그램(FodHelper.exe)을 실행한 계정이 "Adminstrators" 그룹인지 확인 |
| 4 | 권한상승 처리 (윈도우의 AppInfo) |
자격요건 검증을 모두 했다면 윈도우 "AppInfo" 서비스는 IL(Integrity Level)이 "High"로 설정되어있으며 관리자 수준의 토큰으로 설정된 신규 프로세스를 (FoldHelper.exe) 생성합니다. |
| 5 | 레지스트리 참조 (FodHelper.exe) |
권한 상승된 FodHelper.exe 프로세스는 "ms-settings:optionalfeatures" 프로토콜 스키마를 이용하여 윈도우 설정 앱(SystemSettings.exe)을 호출해야 합니다. FodHelper.exe 프로그램은 별도로 GUI가 존재하지 않으며 윈도우 설정 앱을 통해 "Optional feature" 메뉴를 활성화 시키는 것입니다. 이때 해당 프로토콜 스키마와 연 결된 핸들러 으용프로그램 연결정보를 |
| 6 | 윈도우 설정앱 실행 (SystemSetting.exe) |
FodHelper.exe 프로그램에 의해 윈도우 설정 앱이 실행되면 사용자는 GUI가 존재하지 않으며 윈도우 설정 앱을 통해 "Optional features" 메뉴를 활성화 시키는 것입니다. 이때 해당 프로토콜 스키마와 연결된 핸들러 응용프로그램 연결정보를 레지스트리키를(HKEY_CLASSES_ROOT 혹은 HKCU\Software\Classes) 통해 확인하는데, 기본적으로는 설정되어 있지 않습니다. |

Fodehelper.exe 실행파일의 매니패스트 설정에 있는 권한상승 내용
- Fodhelper.exe 실행파일은 윈도우의 UAC에 의한 프롬프트 인터럽트 없이 자동권한 상승을 하기위해 실행파일 내부의 매니패스트 환경설정에 자동권한 상승을 위한 지시자들이 있습니다.
- "autoElevate=true", "requireAdministrator" 설정은 관리자 수준으로 자동 권한상승을 하겠다는 의미입니다.
- 물론 응용프로그램이 이렇게 요청한다해도 운영체제(정확히는 AppInfo 프로그램)가 자격을 검증합니다.
autoElevate=true 자동 권한 상승 속성
requireAdministrator 애플리케이션은 관리자 권한 을 사용하여 실행

FodHelper.exe 실행파일의 버전 및 서명 정보
- FodHelper.exe 프로그램은 관리자 수준의 자동권한 상승을 위한 요건들을 모두 갖추고 있습니다.
- 핵심적인 4가지
- 1. 실행파일의 디지털 서명이 MS가 서명한 것인지 확인
- 2.파일의 위치가 보호되고 있는 폴더인 C:\Windows\System32 인지 확인
- 3. 파일의 버전, 정품 여부 등을 확인
- 4.프로그램(FodHelper.exe)을 실행한 계정이 "Administraotrs" 그룹인지 확인
- FodHelper.exe 파일은 다음과 같이 "Microsoft Corporation"에 의해 서명되었음을 알 수 있습니다.

권한 상승 자격증명을 수행하는 AppInfo(Application Information) 서비스
- AppInfo 서비스는 동작중인 응용프로그램을 관리자 수준으로 권한 상승 시킬 때 사용되는 서비스이며 "svchost.exe" 프로세스에 의해 구현됩니다.(권한 상승 자격증명을 수행하는 주체)
- 해당 프로세스는 로컬 윈도우 시스템의 최상위 Integrity Level인 "system" 수준으로 동작합니다.
- FodHelper.exe 프로그램의 Integrity Level을 "system" 보다 더 낮은 "high" 수준으로 설정하여 실행할 수 있는 자격이 있는 프로세스입니다.

FodHelper.exe 프로그램의 자동권한 상승요건 중 하나인 "Administrators"그룹
- Fodhelper.exe 프로그램을 실행하는 계정이 Administrators 그룹에 포함되어 있지 않다면 자동권한상승에 실패하게 되며 권한 상승 확인을 위한 대화상자 GUI(어두워 지면서 권한상승 확인요청을 하는 체크박스 활성화)가 보여지게 됩니다.
- 대화상자가 보여지는 조건은 운영체제의 UAC설정 등급에 따라 달라질 수 있으며 기본등급으로 설정되었고 권한상승 요건을 만족한다면 대화상자를 보지 않을 것입니다.
- 참고로 권한상승 확인을 위한 대화상자 GUI는 consent.exe 프로세스가 담당하며 AppInfo 서비스에 의해서 실행됩니다.

Fodhelper.exe 프로그램이 사용하는 URL 스키마와 참조하는 레지스트리의 키
- 윈도우 운영체제는 특정 확장자, URI 스키마 등을 처리할 때 실행될 핸들러(응용 프로그램, 라이브러리 등)를 레지스트리 내에 지정할 수 있습니다. 해당 레지스트리 경로는 다음과 같습니다.
- 1.HKEY_CLASSES_ROOT
- 2.HKCU\Software\Classes
- 해당 레지스트리 키는 잘 알려진 EXE, DLL, PDF, ZIP, JAR 등의 확장자를 처리하는 응용프로그램 정보가 존재하며 "ms-settings:", "ms-windows-store", "file"//", "http://" 등과 같은 URL 스키마들을 처리하기 위한 핸들러도 등록되어 있습니다.
- PDF문서를 탐색기에 실행했을 때 특정 응용프로그램이 문서를 로딩하는 이유도 위의 키에 해당 확장자에 핸들러(응용프로그램)가 등록되어 있기 때문입니다.
- Fodhelper.exe 프로그램은 윈도우 설정 앱을 호출하기 위해 "ms-settings:"형태의 URI스키마를 사용하는데 이때도 위의 레지스트리 키를 참조합니다.(기본적으로 해당 레지스트리 키는 존재하지 않습니다.)

권한이 상승된 명령 쉘 실행 예
- 윈도우 설정 앱 프로그램을 호출할 때 사용되는 "ms-settings:" URL 스키마의 핸들러를(예시에서는 cmd.exe) 레지스트리에 등록한 후 fodhelper.exe 프로그램을 실행시키는 스크립트를 실행해 보았습니다.
- IL(Integrity Level)이 High(관리자) 수준으로 실행되는 윈도우 쉘이 실행되었습니다.

강의 요약
- 윈도우 운영체제는 사용자가 필요할 경우 운영체제의 빌트인 프로그램들을 설치하거나 제거할 수 있도록 하는 FoD(Features on Demand) 기능을 제공하며 해당 기능은 FodHelper.exe 프로그램이 담당합니다.
- FodHelper.exe 프로그램은 기능의 특성상(프로그램 설치 및 제거) 권한 상승된 상태로 동작하며 리눅스 SetUID/SetGID 기능이 가진 목적과 유사하다고 볼 수 있습니다.
- FodHelper.exe 프로그램은 실행하는 과정에서 레지스트리의 특정 키에 등록된 명령어를 참조하여 실행하는데 만약 공격자가 악성코드를 해당 레지스트리 키에 등록할 수 있는 권한을 가지게 되면 권한 상승된 악성코드가 실행될 수 있습니다.
출처: KISA 정보보호제품군 실습 훈련 기초2
728x90
반응형
'cs > sec' 카테고리의 다른 글
| [인프라와 웹의 위협기술]22. LFI와 RFI 개요 (0) | 2025.12.19 |
|---|---|
| 웹 서비스 해킹을 위한 버프스위트 활용 가이드 (1) | 2025.12.19 |
| [인프라와 웹의 위협기술]6. 포트 포워딩을 이용한 피버팅 환경 구성 (0) | 2025.12.16 |
| [인프라와 웹의 위협기술]5. 전송계층 프로토콜 기반 포트 스캐닝 실습 - 메타스플로잇 모듈 활용 (0) | 2025.12.16 |
| [인프라와 웹의 위협기술]4. ARP 기반 라이브 호스트 스캐닝 실습 - 파워쉘 스크립트 활용 (1) | 2025.12.11 |