240 likes | 589 Views
SetUID. 학번 : 20032339 이름 : 장지현. 학습목표. 리눅스 / 유닉스에서의 접근제어 이해 리눅스 / 유닉스에서의 접근제어 설정 SetUID 의 필요성과 기능 이해 SetUID 를 이용한 관리자 권한 획득의 원리 이해. 리눅스 / 유닉스의 접근 제어. 유닉스 파일과 디렉토리에 대한 정보. ls. ls -a. 유닉스 파일과 디렉토리에 대한 정보. 리눅스 / 유닉스의 접근 제어. ls -al /etc. ① : 파일에 대한 접근 권한을 표현한다 .
E N D
SetUID 학번 : 20032339 이름 : 장지현
학습목표 • 리눅스/유닉스에서의 접근제어 이해 • 리눅스/유닉스에서의 접근제어 설정 • SetUID의 필요성과 기능 이해 • SetUID를 이용한 관리자 권한 획득의 원리 이해
리눅스/유닉스의 접근 제어 • 유닉스 파일과 디렉토리에 대한 정보 ls ls -a
유닉스 파일과 디렉토리에 대한 정보 리눅스/유닉스의 접근 제어 ls -al /etc ① : 파일에 대한 접근 권한을 표현한다. ② : 해당 파일에 링크(Link)되어 있는 파일의 개수를 표시한다. ③ : 보통 해당 파일을 생성한 계정이지만, 파일 생성자 또는 관리자가 임의로 바꿀 수 있다. ④ : 위와 마찬가지로 보통 해당 파일을 생성한 계정이 속해 있는 그룹이나, 파일 생성자 또는 관리자가 임의로 바꿀 수 있다.
파일 속성 내 용 d 디렉토리 파일 - Regular File : 일반 정규 파일 l Symbolic Link : 링크되어 있는 파일 c Character File : 버퍼에 저장되지 않은 특수 파일. 예) 터미널 b Block File : 버퍼링된 특수 파일. 예) 디스크 드라이브 s Socket File : 소켓 기능을 하는 파일 p Pipe File : 파이프 기능을 수행하는 파일 리눅스/유닉스의 접근제어 -유닉스 파일의 종류
접근권한의 표현 • 유닉스 파일 -rwxrwxrwx ‘rwx’ => r : 읽기(Read), w : 쓰기(Write), x : 실행하기(Execution) • : 파일의 종류, rwx : 소유자 권한 rwx : 그룹의 권한, rwx : 일반 사용자 다음처럼 각각의 고유한 숫자로 표기한다. r : 4(2진수로 100) , w : 2(2진수로 10), x : 1(2진수로 1) rwx -> 7(2 진수로 111)로 읽는다
파일 및 디렉토리 생성 시 기본 권한 • 유닉스 파일 touch a.txt mkdir a 기본적으로 디렉토리는 755의 권한으로, 파일은 644의 권한으로 생성된다.
파일 및 디렉토리 생성시 기본 권한 설정 • 유닉스 파일 vi /etc/bashrc umask 값에 따라 기본 권한 설정이 결정되는데, 파일의 경우에는 기본 생성 최고 권한이 666이며, 디렉토리의 경우에는 777이다. 디렉토리가 777인 이유는 디렉토리에 실행 권한(x)이 없으면, 디렉토리 안으로 들어갈 수 없기 때문이다. 또한 기본 권한은 최고 권한에서 umask 값을 빼준 값이 된다.
사용자 계정 생성 • 유닉스 파일 adduser wishfree cd /home ls -l
파일 및 디렉토리 권한 변경 • 유닉스 파일 touch c.txt chmod 777 c.txt • 파일 및 디렉토리 소유자 및 그룹 변경
파일 및 디렉토리 소유자 및 그룹 변경 • 유닉스 파일 chown wishfree c.txt chgrp wishfree c.txt
SetUID • 기능: 프로세스가 실행되는 동안 그 프로세스의 주인의 권한을 임시로 가지는 기능 • 필요성: 프로세스가 사용자 보다 높은 수준의 접근을 요구 할 때 파일접근 제한 때문에 원할 한 기능을 제공 할 수 없다 이를 해결하기 위한 방법
SetUID • SetUID, SetGID, Sticky bit 의 표현 • SetUID의 값은 4000, SetGID의 값은 2000, Sticky bit는 1000이다 • SetUID는 소유자 권한의 ‘x’자리를 ‘s’, SetGID는 그룹의 ‘x’자리를 ‘s’, Sticky bit는 관련이 없는 이들(Others)에 대한 실행 비트인 ‘x' 대신에 ’t' 문자를 사용한다. • 4755 권한의 파일 = rwsr-xr-x • 7777의 권한 = rwsrwsrwt • SetUID 의 사용 예 ls –al /user/bin/passwd
SetUID • SetUID의 동작
SetUID • Sticky bit의 동작 • 스티키 비트는 파일에 주어지는 권한이 아니며, 디렉토리에서 모든 사용자가 읽고, 쓰고, 실행이 가능하다. • 디렉토리 속의 파일들을 삭제하거나 이름 변경은 파일의 소유자, 디렉토리의 소유자, 관리자만 가능하다. • 스티키 비트가 주어진 대표적인 디렉토리로는 /tmp 디렉토리가 있다.
SetUID • SetUID 비트를 가진 셸의 생성 • SetUID를 이용한 해킹 원본의 bash 셸을 /tmp 디렉토리에 복사하여 4755 권한을 주었다. SetUID 비트가 주어진 bash 셸 프로그램은 프로세스가 살아있는 동안은 파일의 소유자인 root 권한으로 실행될 것이다. cp /bin/bash /tmp/bash chmod 4755 bash
SetUID • 사용자 계정변경 • SetUID를 이용한 해킹 Root 에서 변경 시 ‘su wishfree(계정)’으로 변경가능 일반 사용자에서 다른 일반 사용자로 변경시 비밀번호 입력 필요 Wishfree 계정에서 Root 이동시 ‘exit’사용
SetUID • 일반 사용자 계정으로 SetUID 비트가 주어진 셸 실행 –권한 획득 실패 • SetUID를 이용한 해킹 앞에서 SetUID 비트를 부여한 셸을 일반 사용자 계정으로 실행했다. 그러나 실행 전과 다름없는 UID와 GID를 가지고 있는 것을 확인할 수 있다. ./bash
SetUID • SetUID를 이용한 해킹 • 일반 사용자 계정으로 SetUID 비트가 주어진 셸 실행 –보안 설정 우회 backdoor.c 생성 backdoor 컴파일
SetUID • 일반 사용자 계정으로 SetUID 비트가 주어진 셸 실행 –보안 설정 우회 • SetUID를 이용한 해킹
SetUID • bash 1.14.7 셸을 이용한 SetUID 쉘 획득 • SetUID를 이용한 해킹 chmod 4755 bash ./bash
SetUID • More 명령을 이용한 관리자 권한 사용 • SetUID를 이용한 해킹 chmod 4755 more more /etc/shadow
SetUID • Vi 에디터를 이용한 해킹 • SetUID를 이용한 해킹 #include <stdio.h> main(){ setuid(0); setgid(0); system("/bin/vi"); } :!/bin/sh
SetUID ■ SetUID를 이용한 해킹