passwd CMD를 기억해보자 일반 사용자는 passwd를 통하여 비밀번호를 변경할 수 있다.
어떤 원리로 변경되는지 보면
/etc/passwd 에 접속하여 비밀번호를 확인하고 /etc/shadow에 변경암호가 암호화되어 저장된다. 한번 해당위치의 권한을 보자.
$ ls -l /etc/passwd /etc/shadow
-rw-r--r-- 1 root root 2.4K Aug 26 17:50 /etc/passwd
---------- 1 root root 1.4K Aug 26 17:51 /etc/shadow
/etc/shadow 엔 그 어떤권한도 부여되어 있지않은데 변겨오디는 이유가 뭘까?
SetUID/SetGID/Sticky Bit
임시적으로 CMD 가 실행되는 동안에만 UID와 GID를 (권한)변경한다
이후 종료시 자신의 본래 권한으로 돌아온다.
$ ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 28K Apr 1 12:57 /usr/bin/passwd*
passwd CMD 가 저장되어있는 /usr/bin/passwd 는 특이하게 S 심볼이 있다 이것이 SetUID/SetGID이다.
[참조] 특수퍼미션의 적용범위
set-uid : 파일에 적용가능하나 디렉토리에는 적용불가.
set-gid : 파일 및 디렉토리에 적용가능하다.
stickybit : 디렉토리에는 적용가능하나 파일에는 적용불가.
* stickybit - 디렉토리에 적용하여 해당 디렉토리에 접근 복제는 누구나 가능하나 디렉토리내 생성된 파일의 소유자만 삭제가능함
1) 특수 퍼미션 확인
0000 중 맨 앞의 0 자리가 특수 퍼미션 자리
SetUID : 심볼릭 - 4 (r)
SetGID : 심볼릭 - 2 (w)
Sticky Bit : 심볼릭 - 1 (x)
* 심볼릭 6은 SetUID 와 SetGID가동시에설정된것.
2) chmod 를 활용하여 set-uid / set-gid 설정을 진행해보자.
# ll
-rw-r--r-- 1 root root 0 4월 1 16:01 file1
drwxr-xr-x 2 root root 6 4월 1 16:01 dir1
# chmod 4755 file1
-rwsr-xr-x 1 root root 0 4월 1 16:01 file1
drwxr-xr-x 2 root root 6 4월 1 16:01 dir1
* x -> s 로 치환이 되는걸로 확인이 가능하다/ 단 치환이 되는것임으로 x 권한이 없을경우 S로 표기되는데 이럴경우엔
특수퍼미션으로 설정이 정확히 되지않은 것으로 볼수있다.
3) 특수 퍼미션의 위치 확인
-rwxr-xr-x 1 root root 0 4월 1 16:01 file1
-rwxr-xr-x 각 퍼미션 자리중
user 의 x -> s : set-uid
group 의 x -> s : set-gid
other 의 x -> t : Sticky Bit
로 치환되며 각 자리의 x 가 비어있으면 지정이 불가하고 대문자로 표기되며 적용이안된다.
* bash 쉘의 경우 set-uid 를 걸어둘 경우. 다른 사용자도 이용이 가능하도록 설정이 되어버리기 때문에 bash 쉘의 경우 복제하여 다른곳에 만들어 set-uid를 부여가 되어도 bash 쉘 자체에서 해당기능을 막아버리기에 접속은 되더라도 root의 권한을 얻어올 순 없다.
-> 그리하여 bash 쉘 자체의 permission을 변경하는것이 아닌 bash쉘을 감싸는 다른 tool을 만들어 해당 tool의 권한을 변경하는 방식을 활용하여 백도어를 만드는경우가 많다.
-> 이떄 특수 퍼미션이 있는 폴더나 파일들을 이용하여 root 권한을 얻고, 추가적인 작업을 진행하는 경우가 많다 고로 관리자는 특수 퍼미션이 있는 자료를 관리를 주기적으로 해야한다.
3) 특수 퍼미션 관리방법.
(ㄱ) 검색방법 find / -perm (권한을 기준으로 검색)
# find / -perm -4000 -ls : Set-UID 권한 모든 자료 검색.
# find / -perm -2000 -ls : Set-GID 권한 모든 자료 검색.
# find / \( -perm -4000 -o -perm -2000 \) -ls : Set-UID 및 Set-GID 권한 모든 자료 검색.
(ㄴ) 목록화 하는 방법
# find / \( -perm -4000 -o -perm -2000 \) > setuid.txt : 통째로 저장
# find / \( -perm -4000 -o -perm -2000 \) | wc -l > setuid.txt : 갯수로 저장
# diff setuid.txt setuid.old.txt
(ㄷ) 관리방법
# find /home -type f -perm -4000 -exec rm -f {} \; : 사용자의 모든 파일중 Set-UID 권한의 모든자료를 지움
-> 스케줄러등으로 주기적인 삭제 가능
# chmod 755 /usr/bin/passwd : 관리자만 암호변경이 가능하며 / 사용자는 암호변경이 불가하다
-> 주기적으로 암호를 관리자가 재설정함.
'모의해킹 침해대응 과정 > Linux 기초' 카테고리의 다른 글
리눅스 기초때기 4일차 유용한 명령어들 / CMP&DIFF, SORT, FILE (0) | 2021.04.02 |
---|---|
리눅스 기초때기 4일차 통신관련 명령어 / MAIL, WALL (0) | 2021.04.02 |
리눅스 기초때기 3일차. 파일 속성 정보 관리(Permission) / CHOWN, CHGRP, CHMOD,UMASK (0) | 2021.04.01 |
리눅스 기초때기 3일차. / VI 편집기 (0) | 2021.04.01 |
리눅스 기초때기 2일차. 기타 관리용 명령어 / WC, SU, SUDO,LAST,WHO,W (0) | 2021.03.31 |