보안정보
전문화된 보안 관련 자료, 보안 트렌드를 엿볼 수 있는
차세대 통합보안관리 기업 이글루코퍼레이션 보안정보입니다.
윈도우 운영체제 권한 상승 공격과 이벤트 로그 분석 방법
2018.12.05
15,743
1. 개요
침해사고가 발생할 경우, 분석가들은 대개 공격자가 시스템 내부에서 어떤 행위를 하였는지 확인하기 위해 시스템에 기록된 로그를 중심으로 분석을 한다. 따라서 이번 Tech Note에서는 윈도우 운영체제에서 권한 상승 공격 시나리오를 통해 각 공격 단계별 시스템에 기록되는 이벤트 로그를 확인해보고자 한다.
2. 공격 시나리오
공격 시나리오 및 테스트 환경은 다음과 같다.
<시나리오>
1) 공격자가 Reverse TCP Session 기능을 하는 익스플로잇 파일 제작 2) 피해자 PC에서 익스플로잇 파일 실행, 공격자와 Reverse TCP Session 연결 3) 사용자 계정 컨트롤(UAC) 기능 우회 공격 4) 시스템 권한 획득 5) 원격 데스크톱 기능 활성화 6) 계정 생성 및 원격 데스크톱 연결 |
[그림 1] 시나리오 프로세스
공격자 |
피해자 |
- 운영체제 : kali Linux 4.3.0 - IP : 192.168.211.129 |
- 운영체제 : Windows 7 Professional K (32bit) - IP : 192.168.211.131 |
[표 1] 테스트환경 설명
1) 공격자가 Reverse TCP Session 기능을 하는 익스플로잇 파일 제작
공격자 PC에서 Reverse TCP 연결을 위한 익스플로잇 파일을 생성한다.
추가로 공격자는 자신의 PC를 TCP 연결 리스닝 상태로 만들어 피해자 PC에서 익스플로잇 파일이 실행된 후 TCP 연결이 맺어지는지 확인한다.
2) 피해자 PC에서 익스플로잇 파일 실행 및 TCP 연결 확인
피해자 PC에서 익스플로잇 파일이 실행되면 공격자는 아래와 같이 세션이 맺어진 것을 확인 할 수 있으며, 세션 번호를 통해 접속할 수 있다.
- show sessions 명령어를 통해 연결 가능한 대상을 확인하고, session –i [번호] 명령어로 세션에 접속한다.
[그림 2] 세션 연결 시도
3) 사용자 계정 컨트롤(UAC) 기능 우회 공격
① TCP 연결이 맺어지면 현재 로그인된 사용자 계정 및 권한을 확인한다.
- meterpreter shell에서 getuid 명령어를 통해 한 결과 “TEST”라는 일반 계정으로 로그인되어 있음
[그림 3] getuid 명령어 실행 결과
② 시스템 권한 획득을 시도 및 UAC 설정을 확인한다.
- getsystem 명령어를 통해 시스템 권한 획득을 시도한 결과, 권한 획득 실패
- win_priv 모듈을 통해 UAC 기능 확인한 결과, UAC가 활성화되어 있음
[그림 4] getsystem 명령어 실행 결과
[그림 5] win_priv 모듈을 통해 확인 한 UAC 작동 여부
③ 사용자 계정 컨트롤(UAC) 기능 우회 공격을 시도한다.
- Bypassuac 모듈을 이용하여 공격한 결과, 정상적으로 연결 및 접속이 되어 UAC 우회 공격 성공
※ 사용자 계정 컨트롤(UAC: User Account Control)
프로그램에서 관리자 수준의 권한이 필요한 작업을 수행할 때 이를 사용자에게 알려 제어할 수 있도록 도와주는 윈도우 운영체제 기능으로 악성 프로그램이 자동으로 설치되는 것을 방지하여 시스템을 손상시키지 않도록 도움을 준다.
4) 시스템 권한 획득
사용자 계정 컨트롤(UAC) 우회 공격 성공으로 새로 연결된 세션에서 getsystem 명령어를 통해 시스템 권한 획득을 시도한다. 그 결과 getuid 명령어로 시스템 계정에 접속 된 것을 확인할 수 있다.
[그림 6] getsystem으로 시스템 권한 획득 확인
또한, win_priv 모듈을 통해 UAC 기능이 비활성화된 것을 확인할 수 있다.
[그림 7] win_priv 모듈을 통해 확인 한 UAC 작동 여부 확인
5) 원격 데스크톱 기능 활성화
공격자는 피해자 PC에 원격 접속을 하기 위해서 meterpreter shell을 이용하여 원격 데스크톱 기능을 활성화 하는 레지스트리 구문을 실행한다.
6) 계정 생성 및 원격 데스크톱 연결
아래의 명령어를 실행하여 계정 생성하여 해당 계정을 Administrators 그룹과 Remote Desktop Users 그룹에 추가시킨다.
계정 생성 및 그룹 추가 작업이 완료된 후 공격자는 rdesktop을 이용해 원격 데스크톱 연결을 시도한다.
원격 데스크톱 연결 시도 시 피해자 PC에는 알림창이 팝업되고, 공격자는 원격접속을 성공하게 된다.
[그림 8] 원격 접속 과정
3. 윈도우 이벤트 로그 분석
윈도우 이벤트 로그는 대표적으로 응용 프로그램(Application), 보안(Security), 시스템(System) 로그가 있으며, C:WindowsSystem32winevtLogs 디렉토리에 각각의 이벤트 로그가 저장된다.
[그림 9] logs 디렉토리 화면
이벤트 로그 |
설명 |
응용 프로그램 로그 |
응용 프로그램이 기록한 다양한 이벤트가 저장되며, 기록되는 이벤트는 소프트웨어 개발자에 의해 결정된다. |
보안 로그 |
유효하거나 유효하지 않은 로그온 시도 및 파일 생성, 열람, 삭제 등의 리소스 사용에 관련된 이벤트를 기록한다. 감사로그 설정을 통해 다양한 보안 이벤트 저장이 가능하다. |
시스템 로그 |
Windows 시스템 구성요소가 기록하는 이벤트로 시스템 부팅 시 드라이버가 로드 되지 않는 경우와 같이 구성요소의 오류를 이벤트에 기록한다 |
[표 2] 로그 설명
1) Reverse TCP Session 연결 확인
Timeline |
설명 |
로그파일 |
13:06:45 |
익스플로잇 파일(trojan.exe) 실행 |
보안(Security) |
13:06:45 |
공격자(192.168.211.129)와 TCP 연결 |
보안(Security) |
“보안(Security)” 로그를 보면, 13:06:45에 공격자가 만든 익스플로잇 파일(trojan.exe)이 실행된 것을 [그림 10]을 통해 확인할 수 있으며 공격자(192.168.211.129)와 TCP Session 연결(port 22222)이 맺어진 것을 [그림 11]을 통해 알 수 있다.
[그림 10] 익스플로잇 파일(trojan.exe) 실행
[그림 11] 공격자 PC와 TCP Session 연결
2) 사용자 계정 컨트롤(UAC) 기능 비활성화
Timeline |
설명 |
로그파일 |
13:07:20 |
uZRTUnVxk.exe 실행 |
보안(Security) |
13:07:20 |
사용자 계정 컨트롤 기능 비활성화 |
보안(Security) |
공격자와 TCP 연결이 맺어진 이후 13:07:20에 용도를 알 수 없는 의심스런 파일(uZRTUnVxk.exe)이 실행되고 해당 시간대에 아래 [그림 4-13]과 같이 토큰 상승 유형이 “3”에서 “1”로 변경된 것으로 보아 사용자 계정 컨트롤(UAC) 기능이 비활성화된 것을 확인할 수 있으며 실행된 의문의 파일은 Bypass UAC 공격 명령어가 삽입된 악성파일이라는 것을 유추할 수 있다.
[그림 12] Bypass UAC 공격 파일 실행
[그림 13] 토큰 상승 유형 변경
3) SYSTEM 권한 획득
Timeline |
설명 |
로그파일 |
13:07:21 |
vRFzFcNyNa.exe 실행 |
보안(Security) |
13:07:21 |
192.168.211.129:4444 네트워크 연결 맺음 |
보안(Security) |
13:07:31 |
SYSTEM 권한 획득 |
보안(Security) |
UAC 기능이 비활성화된 이후 13:07:21에 vRFzFcNyNa.exe 파일에 의해 공격자(192.168.211.129)와 새로운 TCP 연결(포트 4444)을 맺으며 13:07:31에 [그림 14]와 같이 SYSTEM 계정(TEST-PC$)으로 새로운 로그온 프로세스가 실행된다. 이는 시스템 권한을 획득하기 위해 UAC 기능이 꺼진 상태의 새로운 TCP 연결이 필요한 것으로 판단되며, 앞서 UAC 권한이 비활성화되어 결국 시스템 권한이 탈취된 것을 알 수 있다.
[그림 14] SYSTEM 권한 로그인 프로세스
4) 원격 데스크톱 기능 활성화
Timeline |
설명 |
로그파일 |
13:07:34 |
reg.exe 실행 |
보안(Security) |
13:07:34 |
원격 데스크톱 연결 서비스 실행 |
시스템(System) |
13:07:36 |
3389 포트 수신 허용 |
보안(Security) |
시스템 권한을 획득한 다음 13:07:34에 레지스트리 편집기(reg.exe)가 실행되고 원격 데스크톱 연결 서비스가 활성화되고 13:07:36에 3389 포트가 열린 것으로 보아 공격자가 원격에서 피해자 PC로 접근하기 위한 목적으로 원격 데스크톱 연결 서비스의 레지스트리 값을 변경한 것으로 판단할 수 있다.
[그림 15] reg.exe 파일 실행
[그림 16] 원격 데스크톱 서비스 실행
[그림 17] 3389 포트 수신 대기
5) 계정 생성
Timeline |
설명 |
로그파일 |
13:07:53 |
net.exe 실행 |
보안(Security) |
13:07:54 |
계정 생성 |
보안(Security) |
13:08:03 |
그룹 추가 정책 적용 |
보안(Security) |
계정을 생성하는 프로세스(net.exe)가 13:07:53에 실행되고 1초 후 계정 생성(CreateUser) 이벤트 로그 및 계정 그룹추가(AddMember) 이벤트 로그가 발생한 것으로 보아 공격자로부터 윈도우 계정 생성하여 특정 그룹 구성원으로 추가된 것을 확인할 수 있다.
[그림 18] net.exe 실행
[그림 19] 계정 생성
[그림 20] Addmember 이벤트
6) 원격 데스크톱 연결
Timeline |
설명 |
로그파일 |
13:08:26 |
원격 데스크톱 연결 |
보안(Security) |
13:08:26 |
winlogon.exe 실행 |
보안(Security) |
13:08:31 |
igloo 계정으로 로그인 시도 |
보안(Security) |
13:08:45 |
userinit.exe (사용자 로그온 응용프로그램) |
보안(Security) |
13:08:26에 공격자 PC에서 원격 데스크톱 연결을 시도한 것을 확인할 수 있으며, 13:08:31에 ‘igloo’라는 계정으로 원격 로그인(로그인 유형 10) 된 것을 확인 할 수 있으며 13:08:45에 사용자 로그온 성공 시 실행되는 응용프로그램(userinit.exe)이 확인됨에 따라 공격자가 ‘igloo’ 계정으로 원격 로그인 접속에 성공한 것을 유추할 수 있다.
[그림 21] 원격 데스크톱 연결
[그림 22] winlogon.exe 실행
[그림 23] igloo 계정 로그인 시도
[그림 24] userinit.exe 실행
4. 마무리
윈도우 이벤트 로그는 [시작] - [실행] – [secpol.msc] – [로컬 보안 정책] 에서 [보안 설정] – [로컬 정책] – [감사 정책]의 감사 설정에 따라 로그가 기록된다. 감사 설정이 구성되어 있지 않거나 감사 설정 수준이 너무 낮으면 침해사고 발생 시 원인을 파악하기 어려우며 법적 대응을 위한 충분한 증거로 사용될 수도 없다. 하지만 반대로 감사 설정이 너무 높으면 보안 로그에 불필요한 항목이 많이 기록되므로 매우 중요한 항목과 혼동할 수 있으며 시스템 성능에도 심각한 영향을 줄 수 있다. 따라서 시스템 영향도와 서버 가용성을 파악하여 법적 요구 사항과 조직의 정책에 맞게 로그를 기록하도록 설정하는 것을 권고한다.
[그림 25] 로컬 보안 정책
5. 참고 자료
[1] Metasploit - Reverse TCP를 이용한 PC원격 조종
https://kkamikoon.tistory.com/112
[2] Bypass UAC and get admin privilege in windows 7 using metasploit
https://sathisharthars.com/2014/06/19/bypass-uac-and-get-admin-privilege-in-windows-7-using-metasploit/
[3] [METASPLOIT] Meterpreter를 이용한 Windows7 UAC 우회하기
https://www.hahwul.com/2017/08/metasploit-meterpreter-windows7-uac.html
[4] Windows Gather Privileges Enumeration
https://vulners.com/metasploit/MSF:POST/WINDOWS/GATHER/WIN_PRIVS
[5] 윈도우 로그 관리 및 분석 방법
http://egloos.zum.com/chunhk00/v/4839399