Basic Security/_System2007.01.18 22:10
SetUID

SetUID와 SetGID는 유닉스 시스템을 해킹하는 데 매우 중요한 요소다.

파일 소유자의 읽기 권한을 400, 쓰기 권한을 200, 실행권한을 100으로 불렀듯이 SetUID, SetGID, 그리고 Sticky 비트도 숫자로 표현하는데 값은 4000, 2000, 1000이다. 그럼 4755 권한의 파일이 있다면 어떡해 표현이 될까? 이 경우에는 'rwsr-xr-x'를 말한다. 소유자의 권한에 'x'가 있을 자리에 's'문자가 적혀 있다. SetGID는 그룹의 'x' 자리는 's'로 바꾸어 쓰고, 스틱키 비트는 관련이 없는 이들에 대한 실행비트인 'x'대신에 't'문자를 사용한다.

따라서 7777의 권한은 'rwsrwsrwt'다. 시스템에 로그인 하면 사용자는 자신의 계정을 부여받는다. 또한 앞장에서 살펴보았듯이 각 사용자는 로그인할 때 자신의 사용자 번호를 받는다. 관리자는 기본으로 0번이며, 일반 사용자는 500번 이상의 숫자 중에 하나를 갖는다. 패스워드 파일에 다음과 같은 계정이 있다고 생각해 보자.

proneer : x : 1000 : 1000 : proneer,,, : /home/proneer : /bin/bash

위의 사용자는 사용자 번호, 즉 UID는 1000번, 그룹 번호 GID는 1000번으로 부여받고 로그인한다. UID와 GID가 proneer 계정이 누구인가를 식별하며, 이러한 UID와 GID를 각각 RUID(Real UID)와 RGID(Real GID)라고도 부른다. 하지만 유닉스에서는 특이하게 어떤 권한을 가지고 프로세스를 실행하고 있는가에 대한 UID와 GID가 별도로 존재한다. 이를 각각 EUID(Effective UID)와 EGID(Effective GID)라고 한다.

최초로 로그인할 때는 RUID와 EUID, RGID와 EGID가 각각 같은 값을 갖는다. 일반적인 프로그램을 실행할 때도 이 값은 동일하며, SetUID 비트를 가진 프로그램을 실행했을 때만 프로세스 안에서 잠시 동안 일치하지 않는다. 리눅스를 사용한 적이 있다면, 최소한 한 번쯤은 느끼지 못하는 사이에 SetUID를 이용하여 EGID를 관리자 권한으로 획득한 적이 있을 것이다. 패스워드를 설정할 때는 'passwd' 명령을 사용한다. passwd 명령을 사용해서 패스워드를 설정하면, 패스워드에 대한 암호화나 해시된 값이 /etc/shadow에 저장된다. 잠시 /etc/shadow 파일의 접근 권한을 확인해 보자.

ls -al /etc/shadow

사용자 삽입 이미지
passwd 명령을 이용해 패스워드를 설정하여 저장한 shadow 파일은 권한이 400(-r--------)이다. 즉, 관리자도 읽을 권한 밖에 없다. 그렇다면 어떻게 일반 계정 사용 시에 shadow 파일에 패스워드를 기록하였을까?

방금 전에 얘기 했듯이 passwd 명령을 수행할 때 모두 관리자의 권한을 갖게 된다. 즉, 이때 EUID가 0이 되는 것이다. RUID는 500번 이상의 숫자더라도 말이다. 하지만 passwd 명령이 끝나는 순간 다시 EUID 역시 500 이상의 숫자로 바뀐다. 이것이 SetUID의 역할이다. passwd 명령을 실행할 때 실제로 동작하는 /usr/bin/passwd 파일의 권한을 확인해 보자.

ls -al /usr/bin/passwd

사용자 삽입 이미지

그림에서 보듯이 4755의 권한이 주어져 있다. 즉, passwd 파일에는 SetUID 권한이 주어져 있으며, 파일 소유자가 root 이므로 파일이 실행되는 프로세스는 실행 시간동안 파일 소유자인 root 권한을 실행된다.

사용자 삽입 이미지


사용자 삽입 이미지



'Basic Security > _System' 카테고리의 다른 글

[Backdoor] Trojan/Backdoors Port Infomation  (0) 2007.01.23
[Linux] 네트워크 설정 파일  (0) 2007.01.22
[Linux] SetUID  (0) 2007.01.18
[Linux] 리눅스 접근 제어  (0) 2007.01.18
[Linux] 리눅스의 패스워드 구조  (0) 2007.01.17
[Windows] 윈도우 패스워드 구조  (0) 2007.01.17
Posted by Proneer

댓글을 달아 주세요