학사 나부랭이

Hacker School - Trainer10 본문

Dot-Gabi/Hacker School Trainer

Hacker School - Trainer10

태양왕 해킹 (14세) 2021. 3. 21. 02:19

 해킹에는 Remote 해킹과 local 해킹이 있는데 remote 해킹은 대상 서버에 아이디를 가지고 있지 않을때, 아이디를 얻고자 시도하는 것이고 local 해킹은 서버에 일반 계정을 가지고 있을때, root 권한을 얻고자 시도하는 것이에요.

SetUID

UserID를 변경한다는 뜻인데 설명하자면 일시적으로 자신의 ID를 변경하는 것이에요. 예를 들어 plachina가 passwd 명령으로 비밀번호를 변경하면 root만이 조작 할 수 있는 shadow가 변경되죠. 이 passwd 파일에 루트 권한의 SetUID가 걸려있어서 일반 user가 passwd를 실행하는 동안 잠시 root로 변경된거예요.

정리하자면 SetUID는 파일에 걸리고 그 파일을 실행하면 user의 아이디가 변경되며 그 실행이 끝나면 원래 아이디로 되돌아오게 되는거죠.

이 SetUID가 걸린 파일은 수십개가 되는데 굳이 이렇게 위험부담을 떠안으면서 걸어놓은 이유는 root가 할 일이 매우 많기에 어쩔 수 없으며 그와 더불어 필요한 만큼만 root 권한을 제공하고 일이 끝나면 그 권한을 박탈해버립니다.

그러나 그 중에서도 허점이 있는 파일은 있으며 그 파일을 이용해 root 권한을 얻는 방법을 연구해 성공하면 그게 바로 새로운 해킹 기법이죠.

그 중 예를들어 버퍼 오버플로우는 정해진 입력 크기를 넘어 에러가 날 때 그 순간을 이용해  /bin/bash 파일을 실행하도록 조작, root 권한의 shell을 탈취하는거죠. 이 에러가 나는 순간, 메모리의 장소 등을 수작업으로 알아낼 수도, 조작할 수도 없으니 C언어가 중요한거죠.

여기서 원래 x(eXecute)가 있어야 할 자리에 s가 있는걸 알 수 있는데 이제 SetUID이며 s가 x를 포함하고 있기에 저 자리를 대체한거죠. 그리고 위의 권한을 해석하면

usr/bin/passwd라는 파일은 root에게 읽기, 실행 권한이 있고 root group과 다른 사용자들에게는 실행 권한만 있지만 root에게 SetUID가 걸려있기에 어느 사용자든 이 파일을 실행하면 root권한을 갖게 된다라고 볼 수 있어요.

find

위의 명령어를 해석하자면 /(최상위 디렉토리부터) -(적어도) perm(다음 권한과 일치하는 파일) -4(SetUID)000(rwx)

-: &&와 같아요. 없으면 ||이 기본이에요.

perm: 다음에 적을 권한과 일치하는 파일을 뜻해요.

name: 다음에 적을 이름과 일치하는 파일을 뜻해요.

user: 다음에 적을 user와 일치하는 파일을 뜻해요.

group: 다음에 적을 group과 일치하는 파일을 뜻해요.

'Dot-Gabi > Hacker School Trainer' 카테고리의 다른 글

Hacker School - Trainer9  (0) 2021.03.21
Hacker School - Trainer8  (0) 2021.03.20
Hacker School - Trainer7  (0) 2021.03.20
Hacker School - Trainer6  (0) 2021.03.19
Hacker School - Trainer5  (0) 2021.03.19
Comments