Incident Response

Fodhelper를 이용한 UAC bypass

수업을 진행하면서 UACME를 이용하여 UAC bypass를 한 흔적을 분석해본 시간이 있었다. 이 떄 UACME에서 Fodhelper를 이용하였는데 이 과정이 궁금해서 한번 개인적으로 정리해보았다.

UAC

가장 먼저 UAC에 대하여 한번 알아보자.

사용자 계정 컨트롤(User Account Control, UAC)은 마이크로소프트의 윈도우 비스타 운영 체제에서 처음 선보인 보안 기술이다. 윈도우 서버 2008과 윈도우 7에도 도입되었다. 관리자가 권한 수준을 높이는 것을 허용할 때까지 응용 프로그램들은 표준 사용자 권한으로 제한을 둠에 따라 운영 체제의 보안을 개선하는 데 중점을 두었다.

[사용자 계정 컨트롤 예시]

 

UACME

UACME는 위와 같은 UAC를 우회 할 수 있는 즉, UACbypass를 할 수 있는 opne source tool이다. 우회에는 주로 윈도우 내에 프로그램을 이용하여 진행을 한다. 이번에 소개하는 우회 방법은 33번에 해당한다.

Link : https://github.com/hfiref0x/UACME

 

Fodhelper

우회의 사용할 Fodhelper를 먼저 알아보자.

Fodhelper라는 이름 자체는 대부분이 들어본적이 없지만 아마 한번쯤은 사용해봤을 기능이다.

Fodhelper는 앱 및 기능 탭에서 선택적 기능을 누르게 되면 사용하게 된다.

[앱 및 기능 모습]

 

[선택적 기능 모습]

실제 Fodhelper의 경로는 C:\Windows\System32\fodhelper.exe 에 위치한다.

추가로 CMD에 해당 경로를 입력해도 선택적 기능이 실행되는 것을 확인할 수 있다.

 

UAC bypass

Fodhelper에 대해 알아보았다. 그렇다면 실제 우회는 어떻게 진행되는지 한번 알아보자.

  1. 먼저 Fodhelper가 저장된 경로의 의미를 알 필요가 있다. Fodhelper와 같이 System32 폴더 내부에 저장된 프로그램은 Microsoft가 신뢰하는 파일로 자동으로 권한 상승이 되어 실행된다. (auto-elevated executable)
  2. Fodhelper는 실행시 HKCU:\Software\Classes\ms-settings\shell\open\command 키의 기본값에 저장된 명령도 실행하게 된다.

즉, command에 저장된 키 값을 특정 프로그램 경로로 설정을 해준 뒤 Fodhelper를 실행하게 되면 자동으로 권한 상승이되어 UAC bypass를 할 수 있게되는 것이다.

다음은 command에 저장된 기본키 셋팅과 셋팅 후 사진이다.

[command 기본 셋팅]
[command 셋팅 후]

 

증거 수집

그렇다면 포렌식 관점에서 Fodhelper를 이용하여 UACbypass를 했다는 증거를 어떻게 확인할 수 있는지 알아보자.

Prefetch

실제 Fodhelper를 사용하여 UACbypass를 사용한 환경의 Prefetch를 WinPrefetchView로 확인하면 다음과 같다.

[WinprefetchView로 확인한 모습]

 

위 사진을 살펴보면 AKAGI64 -> FODHELPER -> PDUMP -> PDUMP64 가 순서대로 실행되었으며 마지막으로 실행된 시간을 살펴보면 오차가 1초 내외로 즉, 이들은 연쇄적으로 실행된 것을 확인할 수 있다.

 

추가로 레지스터 값을 확인하면 더 정확하지 않냐? 라고 생각 할 수 있지만 실제 레지스터 값은 다음과 같이 초기화 되어 있다.

[Rega를 통해 레지스터값을 확인한 모습]

이는 akagi 도구 소스코드를 보면 확인할 수 있었다.

[enigma0x3.c 소스코드 651번째 줄]

위와 같이 UAC bypass 이후 해당 레지스트리를 삭제하는 것을 확인할 수 있다. (thanks to choi)

 

Reference

'Incident Response' 카테고리의 다른 글

Incident Response  (0) 2020.05.13
Amcache 수집 및 분석  (0) 2020.05.01
Windows Artifacts  (0) 2020.04.06
ATT&CK Attack Framework  (2) 2020.04.02
Initial Access  (0) 2020.03.31