본문 바로가기
System Hacking/해커스쿨 F.T.Z Training

해커스쿨 F.T.Z Training 9

by En_Geon 2020. 2. 4.

Training 9에서는 리눅스의 권한에 대해 배운다.

 

권한에 관한 개념은 해킹에서 가장 핵심적인 부분이다. F.T.Z의 Hacking Zone에서도 권한의 개념을 알아야만 문제를 풀 수 있는 문제가 나오기 때문에 집중해서 배워야 한다.

 

리눅스는 윈도우와는 다르게 한 서버에 여러 사용자가 접속하여 사용하게 된다.

만약 F.T.Z 서버에 개인 아이디를 가지고 있다면 그 개인 계정에 할당된 공간에 필요한 문서들을 올리고 홈페이지도 만드는 등 여러 중요한 파일들을 생성하게 된다. 그러다 보면 남이 봐서는 안 되는 나만의 문서, 프로그램을 올리게 되는 일도 있을 것이다.

이때 중요한 파일 프로그램은 자신만 사용하게 권한(Permission)을 부여할 수 있다.

 

리눅스를 사용하다 보면 Permission Denied(접근 거부)라는 에러메시지를 많이 만나게 된다. 이것은 권한 밖에 있는 파일을 건드렸다는 의미다.

리눅스는 사용자마다 특별한 권한을 부여하여 그 권한의 범위를 넘어서지 않는 파일들만 제어할 수 있도록 설정되어 있다.

 

리눅스에는 4가지 종류의 사용자가 있다.

 

  1. user
  2. group
  3. other
  4. root

1. user

 

user는 자신을 의미한다. 만약 En_Geon 아이디로 로그인하면 En_Geon 유저가 된다. 마찬가지로 guest 아이디로 로그인하면 guest 유저가 된다.

 

2. group

 

모든 유저는 하나 이상의 그룹에 속하게 된다. 임의로 그룹을 변경하지 않는 한 모든 유저는 자신의 유저네임과 같은 이름의 그룹에 속하게 된다.

 

3. other

 

other은 유저와 그룹을 제외한 모든 다른 사람을 의미한다.

 

4. root

 

루트는 알다시피 절대적인 권한을 가지고 있는 사용자다. 루트 권한을 가지고 있는 자는 어떤 권한에도 구애받지 않는 상태로 파일들을 제어할 수 있게 된다. 절대적인 루트 권한을 얻기 위해 이것저것 가리지 않고 하는 일이 바로 "해킹"이다.

 

id

 

id에 대한 자세한 내용인 이곳에서 배우게 된다.

 

id 실행 결과

 

uid

 

uid는 User ID의 약자다.

컴퓨터는 영어보다는 숫자를 더욱 좋아해서 사용자들에게 자기가 알아보기 쉬운 숫자를 부여하고 그 숫자로 누구인지 판단한다고 배웠다. 뒤 숫자 2009가 해당한다.

id 명령어를 통해서 "trainer9 = 2009"라는 것을 알 수 있다.

 

gid

 

gid는 Group ID의 약자다.

각 유저마다 gid를 가지고 있고 다른 사람을 자신의 gid를 가진 그룹에 속하게 할 수 있다. 특별한 일이 없는 한 gid는 항상 uid와 같다.

 

groups

 

groups는 현재 자신이 어떤 그룹에 속해 있는지를 보여준다.

임의로 변경하지 않으면 기본으로 자신의 uid와 같은 그룹에 속하게 된다.

 

권한

 

권한에 관한 정보

 

이 부분의 문자를 보고 디렉터리인지 아닌지를 배웠다. 이제는 그 뒤에 있는 rwxrwxrwx를 배운다.

이 부분은 rwx만 3번 반복된다. 그 이유는 rwx를 하나로 3개로 분류된다. 순서대로 "유저의 권한", "그룹의 권한", "other의 권한"으로 분류된다.

 

rwx 의미

 

  의미
r 일기 권한
w 쓰기 권한
x 실행 권한

 

유저와 그룹, other가 누구인지 아는 방법이 있다.

 

유저, 그룹, other 구분

아는 방법은 선택된 곳에서 알 수 있다. Trainer9는 user에 해당하고, Trainer10은 group에 해당한다.

이 둘을 제외한 모든 아이디는 자동으로 otrher이 된다.

 

모든 정보를 종합하여 분석해보자.

 

권한 정보 분석

 

  1. test1 파일은
  2. trainer9 uid를 가진 사용자에게
  3. 읽기(r), 쓰기(w), 실행(x) 권한이 있고
  4. trainer10이라는 gid를 가진 사용자에게도
  5. 읽기, 쓰기, 실행 권한이 있고
  6. trainer9와 10을 제외한 모든 사람에게도
  7. 읽기 쓰기 실행 권한이 있다.

즉, test1 파일은 서버 아이디를 가지고 있는 사람이라면 누구나 마음대로 변경할 수 있는 파일이라는 것이다.

 

다른 파일을 분석해보자.

 

권한 정보 분석

 

  1. test2 파일은
  2. guest uid를 가진 사용자에게
  3. 읽기(r), 쓰기(w), 실행(x) 권한이 있고
  4. trainer1 gid를 가진 사용자에게는
  5. 읽기와 실행 권한만 있고
  6. guest 와 trainer1을 제외한 사용자들에게는
  7. 실행 권한만 있다.

실행권한

 

리눅스에서는 확장자만 보고 실행파일인지 아닌지를 알 수 없다.

예를 들어 linux.exe 파일의 이름만 보고 실행이 되는지 안 되는지를 알 수 없다.

여기서 실행파일인지 아닌지를 구분하는 방법은 바로 실행권한인 'x' 문자가 있는지 없는지를 보고 판단한다.

Training 1에서 d가 있으면 디렉터리, 없으면 파일이었던 것과 같다.

 

'System Hacking > 해커스쿨 F.T.Z Training' 카테고리의 다른 글

해커스쿨 F.T.Z Training 10  (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

댓글