SetUID

i2sec/System hacking 2014. 4. 27. 16:45

1.SetUID란?

- 프로그램 소유주의 권한으로 프로그램을 실행하는 것을 말한다.

- 이는 리눅스에서 매우 중요한 부분이며 해킹 중 90%이상 차지하는 방법이다. 

  잘쓰면 가장 유용하지만 잘못관리하게 되면 가장 취약한 점이 될수있는 위험한 부분이다


2.SetUID 설정

<일반 권한>


(1) 파일형식 : 파일 형식을 나타내는 부분 => -:파일, d:디렉토리, l:링크파일

(2) 소유자 권한 

(3) 그룹 권한

(4) 나머지 사용자 권한


* r은 읽기 권한을 의미 == 4

 w는 쓰기 권한을 의미 == 2

 x는 실행 권한을 의미 == 1

ex> .bashrc의 권한을 해석해보면 소유자는 읽고 쓰기가 가능하고 그룹 사용자는 읽기만 가능 그외 사용자들은 읽기만 가능

      이권한을 숫자로 표현하게되면 r+w =6, r =4, r=4   ==> 644가 된다.


<SetUID 권한>

파일을 하나 생성 후 chmod 명령어로 실행권한을 4644로 변경하였다.

(setUID = 4000, SetGID = 2000, Sticky bit= 1000)

나머지 권한은 644랑 같은 것 같은데 바뀐부분이 2가지 있다.


첫번째는 쇼유자의 x자리가 s로 바뀌었다.

setUID가 설정되게되면 소유자 권한의 x부분이 s로 바뀌게 되고

SetGID가 설정되면 그룹 권한의 x부분이 s로 바뀌게 되고

Sticky bit가 설정되게 되면 나머지 사용자권한의 x부분이 t로 바뀌게 된다.

(실행권한이 안들어가 있으면 대문자로 표현되고 실행권한이 있으면 소문자로 표현된다) 


두번째는 파일이름이 붉은 블럭형태로 변경된 것을 볼 수있다.

권한을 보지 않고도 파일 이름의 형태로만으로 유추가 가능하다.


ex> 7777권한을 표시 --> -rwsrwsrwt


3.Passwd 실행 원리(Setuid 비트)



R : 계정관리

RUID : Real UID 실제 계정이 누구인가?

RGID : Real GID 실제 그룹이 누구인가?


E : 프로세스 권한확인

EUID : Effective UID 어떤 유저권한으로 프로세스를 실행하고있는가?

EGID : Effective GID 어떤 그룹권한으로 프로세스를 실행하고있는가?


* ruid는 계정 자체의 권한을 말하고, euid는 프로세스 실행시의 권한을 의미한다.

예를 들어 setuid를 이용하여 일시적으로 권한을 0(루트)으로 변경했다고 하자.

이경우 euid 가 0번 권한을 가지고, ruid는 여전히 500 권한이다. 프로세스가 실행시에만 루트 권한을 획득한다는 의미이다.  프로세스를 다시 종료 시키면, 500 권한으로 돌아온다.

여기서 setuid가 일시적으로 소유자의 권한을 부여한다는것을 알수가 있다.




'i2sec > System hacking' 카테고리의 다른 글

백도어 탐지  (0) 2014.04.27
백도어(Backdoor)  (0) 2014.04.27
Unix & Windows 인증 구조  (0) 2014.04.27
패스워드 크래킹  (0) 2014.04.23
Windows 단축키 및 주요 프로세스  (0) 2014.04.21