개요

[Active Directory] 1장(https://mokpo.tistory.com/664)에서 조직이 AD를 필요로 하는 이유에 대해 알아봤다. 규모가 있거나 사용자 단말을 통제해야 하는 조직에서는 Active Directory는 관리자를 위해 꼭 필요한 서비스이다. 

 

AD를 사용하는 환경에서는 일반 사용자는 단말 통제권한이 부여되어 있지 않지만, 실제 단말에서는 관리자 권한으로 실행되는 프로그램들이 있다. 그 예로는 보안솔루션(백신, DRM , 매체제어, NAC 등)과 단말과 상호작용이 필요한 업무용 프로그램(그룹웨어 등)이 있다.

 

관리자 권한이 부여된 프로그램을 제대로 관리하지 못하는 경우에는 사용자 단말에서 관리자 권한이 탈취될 수 있으며, 이는 AD로 연결된 조직 네트워크 전체를 위협할 수 있는 아주 위험한 공격루트가 된다. 이번 장에서는 사용자 단말 환경에서 공격자 관점으로 관리자 권한을 상승시키기 위한 방법을 알아보고 이를 어떻게 대응해야할지 알아보자.

 

사전 정보 수집

1. AD 도메인 그룹 및 계정 정보 확인

net /domain user {내 계정}            # AD 사용자 정보 확인
whoami /all                           # 현재 사용자 계정 정보 확인
net /domain group                     # AD 그룹 정보 확인
net /domain group "Domain Admins"     # "Domain Admins" 그룹 소속 계정 확인

 

먼저 AD단말에 로그온한 사용자의 정보와 권한을 확인해보자.

 

 

현재 사용자는 11111111이며, AD그룹(Domain Users)에 속해있고 사용자가 부여받은 그룹 및 권한 정보를 알 수 있다,

그럼 AD 관리자 그룹이 어떤게 있는지 도메인에 존재하는 전체 그룹 정보를 확인해보자

 

위 그룹은 모두 AD서버에서 제공하는 기본 그룹이기 때문에 최고권한 그룹(Domain Admins) 소속 계정을 확인해보자.

* 관리자 권한은 사용자 정의 그룹에 부여될 수도 있으나, 해당 케이스는 일반 사용자가 세부 권한까지 확인하기 어렵다.

 

Domain Admins 그룹에는 Administrator 계정과 22222222 계정이 속해있음을 알 수 있다.

 

3. 관리자 권한으로 실행 프로그램 파악

1. 실행 프로세스 목록 확인

[작업관리자 > 세부정보]에 들어가면 어떤 프로그램이 어떤 사용자 권한으로 실행되었는지를 확인할 수 있다.

 

 

위 화면에서는 각각 SYSTEM 권한, 22222222 권한, 11111111 권한으로 실행되는 프로그램을 확인할 수 있다.

여기서 22222222는 AD 도메인 관리자 그룹 계정이기 때문에 관리자 권한으로 Edge 프로그램이 실행됨을 알 수 있다.

* VIEW 권한이 없는 경우, 사용자 이름이 공란으로 보이기도 한다. 

 

2. 작업 스케줄러 활용

일반적으로 프로그램 UAC(User Access Control)를 제어하기 위해 작업스케줄러에 예외 정책을 등록 및 사용한다.

1번과 마찬가지로 정책에 따라 일반 사용자에게 직접적인 UAC 예외 정책이 안보일 수도 있으나, 스케줄 등록 현황을 보면 간혹 예외 프로그램 목록을 식별하는데 정보를 얻을 수도 있다.

 

4. 관리자 권한 상승 시도하기

1. 파일 대화창(File Dialog) 활용

상위 권한으로 실행 중이거나, 예외 허용된 프로그램 목록을 확인했다면 해당 프로그램에서 File Dialog를 호출하는 기능이 있는지 확인하는 것이 권한 상승을 시키는 가장 쉬운 방법이다. 파일 대화창을 호출하고, 주소창에 cmd or powershell을 입력해서 해당 프로세스 권한으로 쉘을 획득하면 된다.

 

일반적으로 사용자 계정에서 관리자 권한으로 프로그램을 실행하려면 아래와 같은 UAC 팝업 창으로 권한을 요구한다.

 

하지만 해당 단말에서는 MS Edge 프로그램이 관리자(22222222) 권한으로 실행되도록 설정되어있는 가정이기 때문에 일반 사용자더라도 Edge 프로세스는 관리자 권한으로 실행된다. 

 

Edge에서 파일 대화창은 [인터넷 설정 > 다운로드 > 위치 > 변경버튼] 경로에서 찾을 수 있다.

 

파일 대화창이 뜨면 주소창에 cmd 또는 powershell을 입력하고 엔터를 누르면 해당 프로세스 실행권한으로 쉘을 획득할 수 있다. 획득한 권한정보는 whoami /all 명령을 통해 확인할 수 있다.

 

2. 비밀번호 게싱

사용자 계정은 net /domain user 명령을 통해 쉽게 획득할 수 있다. 사용자 비밀번호는 일반적으로 사전/무작위 대입 공격이나 크리덴셜 스터핑을 통해서 획득하게 되는데 일반으로 조직마다 자주 사용하는 Default Password가 있다.

 

Default Password 목록을 추려서 AD 관리자 계정 또는 전체 AD 계정에 비밀번호 일치여부를 테스트 해볼 수 있다.

 

1) cmd에서 runas 명령어 확인

runas /user:sion.com\22222222 "cmd.exe"
# runas 명령을 이용해 sion.com 도메인의 22222222 계정으로 cmd.exe를 실행하는 명령어

 

2) Sysinternals Suite - PsExec.exe 활용 자동화 확인

psexec -u sion.com\22222222 -p 22222222 cmd
# Sysinternals Suite 도구 psexec.exe를 활용
# sion.com 도메인의 22222222 계정 권한으로 cmd를 실행하는 명령어
# runas와 달리 비밀번호를 따로 입력할 필요 없이 인자로 전달
# 비밀번호 추가 입력 생략가능하므로 자동화 테스트 스크립트 작성 가능

 

 

5. 대응 방안

1. FileDialog가 아닌 FolderBrowserDialog 클래스 활용

- (권한상승 취약) FileDialog (파일 대화창)은 주소창 입력을 통해 특정 경로의 임의 프로그램을 실행할 수 있음

 

 

- (권한상승 예방가능) FloderBrowserDialog 클래스는 임의 프로그램 실행이 불가한 구조로 권한상승 예방 가능

 

2. 로그인 정책 설정

- AD 관리자 등 주요 계정의 경우 로그온 가능한 단말(워크스테이션)을 지정하여 계정탈취 및 사용 예방

- 로그인 실패 임계치 설정하여 로그인 무작위 대입 공격 예방

- 패스워드 복잡도, 최근 암호 기억, 변경주기 등 설정하여 비밀번호 유추 예방

복사했습니다!