Linux 시스템 보안 기초 · 23/50편

이 글은 리눅스 시스템 기초 · 파일 · 권한 · 사용자 관리 · 서비스 · 프로세스 관리 시리즈를 선행 학습으로 두고, 동일한 개념을 보안관제(SOC) 관점에서 한 단계 확장합니다.

선행 학습

1. 들어가며

22편에서 capability의 개념을 봤다면, 이번 편은 '왜 어떤 capability는 사실상 root와 같은가'를 권한 상승 관점에서 구체적으로 봅니다. 실제 서버에서 무엇을, 어떤 우선순위로 점검할지 정리합니다.

2. 핵심 개념

권한 상승으로 직결되는 대표 capability:

capability왜 위험한가
CAP_SETUID임의 UID로 전환 → root 전환 가능
CAP_DAC_OVERRIDE모든 파일 권한 검사 우회 → shadow 읽기/쓰기
CAP_SYS_ADMIN마운트·네임스페이스 등 광범위 → 컨테이너 탈출 등
CAP_SYS_PTRACE다른 프로세스 메모리 조작
CAP_SYS_MODULE커널 모듈 적재 → 커널 백도어

이런 capability가 범용 인터프리터(python/perl)에 붙으면, 그 스크립트로 즉시 상승이 가능합니다.

python3 에 cap_setuid+ep 부여되어 있으면:

alice ── python3 -c 'import os; os.setuid(0); os.system("/bin/sh")'
                                   │
                                   ▼
                            EUID=0 root 쉘 획득

3. 동작 원리

CAP_SETUID는 프로세스가 임의 UID로 전환하도록 허용합니다. 이 capability를 가진 인터프리터는 setuid(0) 호출로 스스로 root가 될 수 있습니다. CAP_DAC_OVERRIDE는 권한 비트를 무시하고 모든 파일에 접근하게 해, shadow를 읽거나 sudoers를 수정하는 식으로 상승이 가능합니다.

즉 capability 점검은 '목록의 존재'가 아니라 '어떤 파일에 어떤 강력 capability가 붙었는가'의 조합을 봐야 합니다.

4. 명령어 실습

# 강력 capability를 가진 파일만 필터
sudo getcap -r / 2>/dev/null | grep -Ei 'setuid|dac_override|sys_admin|ptrace|sys_module'

# 인터프리터/범용 도구에 capability가 붙었는지 집중 점검
for b in python3 perl ruby node php gdb; do p=$(command -v $b 2>/dev/null); [ -n "$p" ] && getcap "$p"; done

5. 실행 결과

실습 환경에서 강력 capability 필터 실행 결과입니다. (실제 캡처 — 정상 상태)

$ sudo getcap -r / 2>/dev/null | grep -Ei 'setuid|dac_override|sys_admin'
(출력 없음)

출력이 없다는 것은 위험 capability가 부여된 파일이 없다는 정상 신호입니다. 만약 /usr/bin/python3 cap_setuid+ep 같은 줄이 나오면, 이는 즉시 권한 상승이 가능한 심각한 취약점입니다.

6. 보안 관점 — 정상 사용 vs 악용

  • 정상: 강력 capability가 인터프리터·범용 도구에 없음.
  • 위험/침해 징후:
    • python/perl 등에 cap_setuid, cap_dac_override
    • 커스텀 바이너리에 cap_sys_admin/cap_sys_module
    • 최근 새로 부여된 capability(공격자의 지속성)

capability 오남용은 SUID보다 은밀해 놓치기 쉽습니다. 그래서 정기 스캔과 기준선 비교가 필수입니다.

7. 탐지 방법

  • 강력 capability 필터 스캔(위 grep)
  • 인터프리터 대상 집중 점검
  • setcap/setxattr 감사로 부여 순간 포착

8. SOC 관점 — SIEM · Wazuh · IOC

capability 기반 상승은 '실행 파일 자체는 표준이지만 속성이 바뀐' 형태라 탐지가 까다롭습니다. auditd의 setxattr/fsetxattr 감사와 Wazuh 확장속성 FIM을 결합하고, 스캔 결과의 강력 capability는 즉시 조사 티켓으로 전환합니다. 해당 파일 경로·해시를 IOC로 등록합니다.

9. 실습 체크리스트

[ ] 강력 capability 파일 필터
[ ] 인터프리터 대상 집중 점검
[ ] 기준선 대비 신규 capability 확인
[ ] setxattr 감사 설정

10. 핵심 정리

  • cap_setuid/dac_override/sys_admin 등은 사실상 root급이다.
  • 인터프리터에 붙은 강력 capability는 즉시 권한 상승이다.
  • 점검은 '어떤 파일에 어떤 capability'의 조합을 본다.
  • capability는 SUID보다 은밀해 정기 스캔이 필수다.
  • 부여 순간은 setxattr 감사로 포착한다.

11. 다음 편

다음 편에서는 24. 파일 소유권 보안 를 다룹니다. 권한만큼 중요한 '소유권' 이상을, 웹 디렉터리와 서비스 계정 중심으로 봅니다.


본 실습은 격리된 테스트 VM(Rocky Linux / Ubuntu, VMware) 및 테스트 계정 환경을 기준으로 하며, 운영 서버를 대상으로 하지 않습니다. 실행 결과는 실제 캡처와 예시 출력을 명확히 구분해 표기합니다.

profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글