본문 바로가기

🔐 Security/System

[시스템보안] 파일 접근 권한, SetUID를 이용한 해킹 기법

위 글은 2022년도 목포대학교 학점교류 '시스템보안' 수업에서 수행한 과제를 작성한 내용입니다.
교재 : 시스템 해킹과 보안: 정보 보안 개론과 실습 3판, 양대일 (2018)

 

1. 리눅스에서 파일 접근 권한 설정하기

(1) 파일과 디렉터리를 생성할 때 기본 권한 확인

사용자 명은 Host로 사용하였다.

root 권한으로 사용되어 permission denied 되는 것을 확인하여 home 디렉터리로 이동한 후 touch a.txt 명령어로 임의의 파일을 생성, 디렉터리를 생성한다. 파일은 rw-r—r--(644), 디렉터리는 rwxr-xr-x(755)임을 확인할 수 있다.

umask 로 현재 정보인 022를 확인한 후, 027로 변경한다.
umask를 하게 되어 027로 바꾸게 되면 파일은 640, 디렉터리는 750이 된다.

(2) 파일 및 디렉터리 기본 생성 권한 변경

또 다른 임의의 파일과 디렉터리를 touch b.txt 를 사용해 생성한다. (1) 에서 umask 값을 변경하여 기본 권한을 바꾸었으므로, b.txt 파일은 640, b 디렉터리는 750 권한으로 생성된다.

chmod 명령어를 사용해 b. txt 파일 권한을 640에서 777로 변경한다. 처음엔 –rw-r-----이었던 b.txt의 권한이 –rwxrwxrwx로 변경된 것을 확인할 수 있다.

su root 명령어로 DCUsecu였던 권한을 root 권한으로 변경한다.

 

2. SetUID를 이용한 해킹 기법 익히기

(1) SetUID 비트를 가진 셸 생성

원본 bash 셸 복사한 후에 4755 권한을 부여한다.

cp /bin/bash /test/bash/ 명령어를 바로 사용하면 test bash에 대한 디렉터리가 없으므로 bash 디렉터리 만든 후에 ./로 현재 디렉터리로 복사가 되었는지 확인한다. chmod 4755 ./bash로 bash에 4755 권한을 부여하고 권한이 변경된 것(read 권한 추가)을 확인한다.

(2) 일반 사용자 계정으로 SetUID 비트가 주어진 셸 실행

SetUID 비트를 부여한 셸을 일반 사용자 계정으로 실행했고, 실행 전과 다름없이 UID와 GID 를 가지고 있다. 권한이 변경되지 않았음을 확인한다.

(3) SetUID 비트를 이용한 bash 셸 획득

백도어 프로그램을 작성한다. SetUDI 비트의 영향은 backdoor.c 프로그램이 받고, 프로그램 을 실행할 시 이미 root 권한의 프로세스이기 때문에 system(“/bin/bash”)을 실행하는 프로세스 권한은 root가 되게 한다.

backdoor.c를 root 계정으로 컴파일하여 4755 권한을 부여했다.

실행 후 계정정보를 확인해보면 셸 권한이 root(UID=0)으로 바뀐다.

(4) vi 백도어 만들기

vi 에디터를 SetUID 비트가 주어진 프로세스로 실행하도록 root 권한에서 작성한 vibackdoor.c를 컴파일하고 SetUID 비트를 부여한다.

vibackdoor 파일을 실행하면 vi 에디터 화면이 나타난다. 이는 관리자의 vi 에디터로 콜론 모드에서 임의의 명령을 실행할 수 있다.

:!/bin/bash 에서 콜론 뒤에 !를 붙인 후 프로그램을 입력하면 실행할 수 있다. 실행할 때 vi 에디터 화면이 사라지고 셸 화면으로 바뀌고, 셸의 프롬프트가 #모양으로 바뀌며 관리자 권한의 셸이 시작된다.

exit를 입력하면 vi 에디터로 돌아오게 된다.

 

3. 실습 내용 기반으로 공격 시나리오 설계

해당 주차 과제에서 실습한 것은 원하는 수준의 권한을 획득하여 무언가를 수행하는 것으로, 운영체제의 권한 관리 문제점을 이용하는 것부터 버퍼 오버플로나 포맷 스트링 취약점을 이용 한 수준의 공격까지 다양한 방법으로 관리자 권한을 얻는 방법이 있다.

 (1) 파일 접근 권한 변경, 파일 소유자 및 그룹 변경 파일의 접근 권한을 READ로 초깃값을 설정하도록 한다면 해당 파일이나 디렉터리를 확인하 고 수정하고, 복제할 수 있다.

 (2) 셸에 SetUID 권한을 부여하여 권한 상승 사용자가 메일이나 신뢰할 수 없는 웹 페이지의 exe 파일을 다운로드 받고, 그 exe 파일이 시스템의 취약점을 스캔하거나 정보를 유출하는 기능을 하는 셸이라고 가정했 을 때, 그 셸에 SetUID 권한을 부여하여 권한을 상승한다. 셸이 실행되면 시스템의 관리자 권한을 획득하게 되며, 원격으로 사용자 컴퓨터에 접속하거나 파일을 암호화한다. 로그의 접근 권한을 획득하게 되면 사용자의 데이터와 개인정보를 획득하게 될 수 있다.