Training 10에서는 Local 해킹 때 핵심이 되는 SetUID에 대해 배운다.
해킹에는 두 가지가 있다. 하나는 Remote 해킹 다른 하나는 Local 해킹이다.
Remote 해킹은 자신이 해킹하고자 하는 서버에 아이디를 가지고 있지 않을 때, 아이디를 얻고자 시도하는 것이다.
Local 해킹은 해킹하고자 하는 서버에 일반 계정을 가지고 있을 때, 관리자 권한(root)을 얻고자 시도하는 것이다.
Remote 해킹 방법에는 여러 가지 방법이 있다. 무작위로 아이디와 비밀번호를 입력하여 접속하는 방법, 데몬의 취약점을 공략하여 접속하는 방법, 게시판이나 방명록을 이용하여 접속하는 방법 등등 방법은 수십 가지가 넘는다.
지금 우리가 배울 것은 Local 해킹이다.
관리자의 권한을 얻는 이유는 서버의 모든 것을 마음대로 변경할 수 있기 때문이다.
SetUID
SetUID는 일시적으로 자신의 ID를 변경하는 것을 말한다.
SetUID가 걸린 파일을 조작을 통하여 평범한 계정을 가지고 있는 상태에서 관리자 권한을 얻을 수 있다.
SetUID란 Set과 UID가 합쳐진 것이다. Set는 "변경하다"란 뜻이 있고, UID는 알다시피 User ID의 약자이다.
따라서 SetUID는 "ID를 변경한다."라고 해석한다.
왜 일시적으로 자신의 아이디를 변경하는 것인가?
일반 사용자가 자신의 비밀번호를 변경하기 위해 passwd 명령을 사용하여 비밀번호를 바꾸었다.
사용자들의 비밀번호는 shadow 파일에 있다. shadow 파일을 오직 루트에게만 수정 권한이 있다.
그런데 일반 사용자가 비밀번호를 바꾸었다. 어떻게 그것이 가능한 것인가?
그것은 바로 SetUID 때문이다.
자신의 암호를 변경하는 passwd 파일에 루트 권한의 SetUID가 걸려 있어서 일반 사용자들이 passwd 파일을 실행하는 동안에는 루트 아이디로 일시적인 아이디 변경이 되는 것이다.
결국, shadow 파일은 일반 사용자의 권한이 아닌 루트의 권한으로 변경된 것이다.
SetUID 정리
- SetUID는 파일에 걸린다.
- SetUID가 걸린 파일을 실행하면 나의 아이디가 변경된다.
- 파일의 실행이 끝나면 다시 원래의 아이디로 돌아간다.
리눅스에는 SetUID가 걸린 파일은 수십 개가 있다.
SetUID가 걸려있는지 안 걸려있는지에 대해 배워보자.
권한 부분에 배우지 않은 문자 's'가 있다. 이 's'가 SetUID를 의미한다. 's'가 있는 부분은 실행권한인 'x'가 있어야 할 부부인데 's'가 들어있다. 그것은 's'가 'x'를 포함하고 있기 때문이다.
따라서 위 파일을 분석하면 /usr/bin/passwd 파일은 root에게 읽기와 실행권한('s'가 'x'를 포함)이 있고, root라는 그룹에는 실행 권한만 있고, 위를 제외한 사용자들에게도 실행 권한만 있다. 하지만 root에게 SetUID가 걸려있기 때문에 어느 사용자이든 간에 저 파일을 실행할 때는 root의 권한을 갖게 된다.
서버 전체에서 SetUID가 걸린 파일을 찾는 방법
find / -perm -4000
find / -perm -4000은 "/ 에서부터 적어도 SetUID가 걸린 모든 파일을 찾아라"라는 의미다.
4000 앞에 '-'가 "적어도"를 의미하고, -perm은 "권한을 찾겠다."라는 옵션이다. '4'는 SetUID를 의미하고, '000'은 rwx 모두를 의미한다.
find
옵션 | 의미 |
-perm |
권한과 일치하는 파일을 찾는다. ex) find / -perm 4755 |
-name |
이름과 일치하는 파일을 찾는다. ex) find / -name cat |
-user |
유저와 일치하는 파일을 찾는다. ex) find / -user En_Geon |
-group |
그룹과 일치하는 파일을 찾는다. ex) find / -group En_Geon |
위 옵션들은 서로 조합하여 동시에 사용할 수도 있다.
"find / -user root -perm -4000"은 루트의 권한으로 SetUID가 걸린 파일을 찾는다는 의미다.
'System Hacking > 해커스쿨 F.T.Z Training' 카테고리의 다른 글
해커스쿨 F.T.Z Training 9 (0) | 2020.02.04 |
---|---|
해커스쿨 F.T.Z Training 8 (0) | 2020.02.03 |
해커스쿨 F.T.Z Training 7 (0) | 2020.02.03 |
해커스쿨 F.T.Z Training 6 (0) | 2020.02.03 |
해커스쿨 F.T.Z Training 5 (0) | 2020.02.02 |
댓글