3주차에서는 XXE Injection, 권한상승 취약점 공략을 진행했다.
권한상승이 목전에 있어 계속 구글링과 익스플로잇 코드를 사용했다.
포렌식 Capture this 문제랑 병행하니 주말이 사라졌다.
리버스 쉘 업로드 및 접속
권한 상승 취약점 탐구
LIDS Internals, LIDS는 무엇일까?
Linux Intrusion Detection System의 약자로, 리눅스 기반의 IDS이다.
Secure OS를 지향하고 있다.
기본 방식의 단점인
파일 시스템 보호 없음
프로세스 보호 없음
Access Control 모델 부족
root 권한 쏠림
물론 이를 해결하기 위해 모듈 방식이 있다.
모듈 방식은 유지보수가 쉽다는 장점이 있지만, 커널에서 쓰이는 모든 자료구조를 접근할 수 없다.
커널을 패치하면 패치한 파일, 추가된 파일이 존재한다.
크게 파일 시스템과 프로세스 보안으로 나눌 수 있다.
LIDS가 프로세스 간 디버깅 및 추적과 같은 보안 관련 작업 감시 및 제어를 위해 Linux capabilities를 사용한다. 이 중, CAP_SYS_PTRACE는 프로세스 간 디버깅을 가능케 하는 권한인데, 이 권한이 보안 감시 및 침입 탐지를 수행하는 LIDS의 핵심 기능 중 하나이다.
LIDS의 설계 목표 중 하나는 리눅스 커널의 Capability 지원 강화이다. 따라서 LIDS는 Linux capabilities를 사용한다.
capability 종류는 아래와 같다.
Capabilities list
파일 및 디렉터리를 보호하는 것 외에도 LIDS는 프로세스에 일종의 ACL 기반 액세스 제어를 적용합니다. 예를 들어 일반적으로 해당 권한이 있는 경우에도 프로세스에서 파일에 대한 사용 권한을 변경하지 못하도록 할 수 있습니다.
이중, CAP_SYS_PTRACE에 대한 설명은 아래와 같다.
• ptrace(2)를 사용하여 임의 프로세스를 추적합니다.
• 임의의 프로세스에 get_robust_list(2)를 적용합니다.
• 임의의 메모리로 데이터를 전송하거나 메모리에서 데이터를 전송합니다. (process_vm_readv(2)를 사용하는 프로세스 및 process_vm_writev(2) )
• kcmp(2)를 사용하여 프로세스를 검사합니다.
어떤 곳에서는 어떤 프로세스에서나 ptrace() 를 허용한다고 설명한다.
CAP_SYS_PTRACE는 프로세스 추적권한
ep는 권한상승 권한
그럼 이 CAP_SYS_PTRACE를 어떻게 악용할 수 있을까?
해킹트릭사이트 에서는 아래와 같이 설명하고 있다.
호스트 내부에서 실행되는 기존 프로세스 내 셸 코드를 삽입해 원하는 특정 용도의 코드를 실행시킬 수 있다.
setuid, setgid, /bin/bash 포함한 쉘 코드로 권한탈취가 되지 않아서 계속 알아보고 있다.
POSIX capabilities 목록 중 아래와 같은 권한 설정을 확인 가능하다.
/usr/bin/pytrhon2.7 = cap_sys_ptrace+ep
실행 조건과 해당 조건에서 설정된 권한의 종류와 옵션을 알 수 있다.
실행 조건
/usr/bin/pytrhon2.7 : pytrhon2.7 프로그램 실행
설정된 권한 종류와 옵션
cap_sys_ptrace 권한
다른 프로세스 추적 및 제한 권한.
-e: "effective" 옵션
프로세스가 실행되는 동안에만 특정 권한이 활성화되고 작동.
-p: "permitted" 옵션
프로세스가 어떤 권한을 가질 수 있는지에 대한 제한을 설정.
+ep => 프로세스가 실행 중에만 해당 권한을 설정한다.
따라서 python2.7을 사용해 프로그램을 실행 중에는 (python 언어로 작성된 프로그램) 다른 프로세스를 추적하고 제한하는 권한을 부여된다.