본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
  • 시스템 사용에 있어 제한없이 자유자재로 사용하기 위해 시스템에서 허용하는 권한을 상승시키는 행위를 의미
  • 예를 들면, 해커가 일반 사용자 권한을 획득한 후 → 관리자 권한(Root)을 획득하여 시스템 사용권한을 상승

권한 상승(privilege escalation)은 원래 받은 것보다 높은 권한, 또는 다른 사용자의 권한을 얻는 것이다. MITRE ATT&CK은 이를 하나의 전술(TA0004, Privilege Escalation)로 두고, 공격자가 낮은 권한으로 들어온 뒤 목적을 이루기 위해 SYSTEM·root, 로컬 관리자, 특정 기능에 접근할 수 있는 계정의 권한을 얻으려 한다고 설명한다. 흔한 방법은 시스템 약점, 잘못된 설정, 취약점을 이용하는 것이다.

CISSP 출제 기준 5.5는 권한 상승을 신원·접근 권한 부여 수명 주기의 한 항목으로 다루며 예로 "sudo 사용과 그 사용의 감사"를 든다. 즉 공격 기법으로서의 권한 상승뿐 아니라, 관리자가 정당하게 권한을 높여 쓰는 절차를 어떻게 설계하고 기록할지가 함께 출제 범위이다.

수직·수평 권한 상승

편집 원본 편집
구분 수직 권한 상승 (vertical) 수평 권한 상승 (horizontal)
의미 더 높은 수준의 권한을 얻는다 같은 수준의 다른 사용자 권한이나 데이터를 얻는다
예 일반 사용자 → root·관리자, 웹 일반 회원 → 관리자 페이지 접근 회원 A가 URL의 계정 번호를 바꿔 회원 B의 주문 내역을 조회
주요 원인 커널·서비스 취약점, 잘못된 SUID 파일, 과도한 sudo 설정, 서비스의 잘못된 권한, UAC 우회 서버 측 권한 검사 누락, 직접 객체 참조(IDOR), 세션·토큰 조작
대표 대책 패치, 최소 권한, 특권 계정 관리, 설정 점검 요청마다 서버 측에서 소유권·권한 검사, 기본 거부
  • 웹 애플리케이션에서는 둘 다 접근 통제 실패에 해당한다. OWASP Top 10은 일반 사용자로 로그인한 상태에서 관리자처럼 행동하는 권한 상승과, 다른 사람의 계정을 보거나 수정하는 것을 접근 통제 취약점의 예로 든다.
기법 설명 ATT&CK 기법
취약점 악용 커널, 드라이버, 권한 높은 서비스의 취약점을 이용해 높은 권한으로 코드를 실행한다. T1068 (Exploitation for Privilege Escalation)
SUID·SGID 악용 리눅스에서 SUID가 설정된 실행 파일은 실행한 사용자가 아니라 파일 소유자(흔히 root) 권한으로 실행된다. 셸을 띄울 수 있는 프로그램에 SUID가 붙어 있으면 바로 root를 얻는다. T1548.001
sudo 설정·캐시 악용 과도한 sudoers 규칙, 비밀번호 없는 sudo, sudo 인증 캐시를 이용한다. T1548.003
UAC 우회 윈도우에서 자동 승격되는 프로그램 등을 이용해 승격 확인 창 없이 관리자 권한을 얻는다. T1548.002
자격 증명 탈취·재사용 관리자의 해시·토큰·비밀번호를 훔쳐 그 계정으로 행동한다(Pass the Hash 등). 자격 증명 접근 전술과 연계
잘못된 권한 설정 누구나 쓸 수 있는 서비스 실행 파일·스케줄 작업·설정 파일을 바꿔 높은 권한으로 실행되게 한다. 여러 기법

리눅스 sudo 사용과 감사

편집 원본 편집

sudo는 관리자가 특정 사용자·그룹에게 특정 명령만 root나 다른 사용자 권한으로 실행하도록 위임하는 도구이다. root 비밀번호를 공유하지 않고, 누가 어떤 명령을 실행했는지 기록이 남는다는 점에서 root 직접 로그인보다 낫다. 자세한 사용법은 리눅스 sudo 문서를 참고한다.

  • 규칙은 /etc/sudoers와 그 포함 파일에 "누가 어느 호스트에서 = (누구로서) 무엇을" 형식으로 적는다. 편집은 문법을 검사하는 visudo로 한다.
  • 명령은 전체 경로로 필요한 것만 허용한다. ALL을 주면 사실상 root 계정을 준 것과 같다.
  • 편집기, 페이저, 셸 스크립트처럼 내부에서 셸을 띄울 수 있는 명령을 허용하면 그 명령을 통해 root 셸을 얻을 수 있다. sudo는 이런 셸 탈출을 줄이는 NOEXEC 태그와, 파일 편집만 안전하게 허용하는 sudoedit를 제공한다.
  • 사용자가 쓰기 권한을 가진 스크립트나 디렉터리의 프로그램을 sudo로 허용하면, 사용자가 그 파일을 고쳐 root로 실행할 수 있다.

NOPASSWD의 위험

편집 원본 편집

NOPASSWD 태그를 붙이면 해당 명령을 비밀번호 확인 없이 실행할 수 있다. 자동화 작업에는 편리하지만, 그 계정이 탈취되면 공격자도 비밀번호 없이 바로 높은 권한을 쓴다. 비밀번호를 한 번 입력하면 일정 시간 다시 묻지 않는 인증 캐시(timestamp_timeout, 기본 5분)도 같은 이유로 악성코드가 이용할 수 있다. 꼭 필요한 명령에만 제한적으로 쓰고, 서비스 계정은 서비스 계정 관리 기준으로 따로 통제한다.

sudo 로그와 감사

편집 원본 편집
  • sudo는 기본적으로 실행 결과(허용·거부, 사용자, 대상 사용자, 명령, 작업 디렉터리)를 syslog로 남긴다. 별도 로그 파일(logfile 옵션)로 남기도록 설정할 수도 있다.
  • log_input·log_output 옵션이나 LOG_INPUT·LOG_OUTPUT 태그를 쓰면 세션의 입력과 출력까지 기록하는 I/O 로깅이 가능하다. 대화형 셸처럼 명령 한 줄만으로는 무엇을 했는지 알 수 없는 경우에 쓴다.
  • 로그는 로컬에만 두면 root가 지울 수 있으므로 중앙 로그 서버나 SIEM으로 즉시 보낸다.
  • 감사에서는 거부된 sudo 시도, 업무 시간 외 사용, sudo -i·sudo su처럼 셸을 통째로 얻는 사용, sudoers 파일 변경을 중점적으로 본다.

사용자 계정 컨트롤(UAC, User Account Control)은 관리자 계정이라도 평소에는 표준 사용자 권한으로 프로그램을 실행하게 하는 윈도우 기능이다.

  • 관리자가 로그온하면 표준 사용자 접근 토큰과 관리자 접근 토큰 두 개가 만들어지고, 평소에는 관리 권한이 빠진 표준 토큰으로 작업한다.
  • 관리 권한이 필요한 작업을 하면 승격 확인 창이 뜬다. 관리자 승인 모드(Admin Approval Mode)의 관리자에게는 동의 확인 창(consent prompt), 표준 사용자에게는 관리자 자격 증명을 입력하는 창(credential prompt)이 나온다.
  • 확인 창은 기본적으로 보안 데스크톱(secure desktop)에 표시되어 다른 프로그램이 조작하기 어렵다.
  • UAC는 무단 승격을 '확인'하게 만드는 장치이지 완전한 보안 경계는 아니다. 일상 업무는 표준 사용자 계정으로 하고, 관리 작업은 별도 관리자 계정으로 하는 것이 원칙이다.
대책 내용
최소 권한 일반 업무 계정과 관리자 계정을 분리하고, 필요한 권한만 필요한 기간만 준다. 상시 관리자 권한 대신 적시 접근 권한을 쓴다.
패치 권한 상승 취약점은 원격 실행 취약점보다 심각도 점수가 낮게 나와도, 다른 침투 수단과 결합되므로 우선적으로 패치한다.
SUID·SGID 점검 정기적으로 SUID·SGID 파일 목록을 뽑아 기준선과 비교하고, 불필요한 것은 제거한다. 사용자가 쓸 수 있는 파일 시스템은 nosuid 옵션으로 마운트한다.
특권 계정 관리 (PAM) 관리자 계정 비밀번호를 금고에 보관하고, 사용할 때 승인을 받아 꺼내며, 세션을 녹화한다.
설정 점검 sudoers, 서비스 권한, 스케줄 작업, 파일 권한을 보안 기준선에 따라 점검한다.
모니터링 권한 있는 그룹 가입, 새 관리자 계정 생성, sudo 거부·셸 획득을 SIEM에서 경보로 만든다.
정기 검토 접근 권한 검토로 누적된 권한(privilege creep)을 회수한다.
  • 수직(더 높은 권한)과 수평(같은 수준의 다른 사용자) 권한 상승을 구분한다.
  • sudo는 root 비밀번호 공유를 없애고 개인별 책임 추적을 가능하게 한다. 공용 root 로그인보다 sudo + 로그 감사가 정답이다.
  • sudo 로그는 중앙으로 보내 위변조를 막는다. NOPASSWD와 과도한 ALL 허용은 위험 신호이다.
  • 권한 상승을 막는 가장 근본적인 통제는 최소 권한이다. 탐지는 특권 사용 모니터링과 감사로 한다.
  • UAC는 관리자도 평소에 표준 토큰으로 일하게 만드는 장치이다. 관리 작업과 일반 업무 계정 분리가 원칙이다.