본문 바로가기

🔐 Security/System

[시스템보안] 심볼릭 링크, 레이스컨디션

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

1. 심볼릭 링크 기능 알아보기

(1) 심볼릭 링크 생성하기 : root 계정

root 계정으로 심볼릭 링크를 생성한다. 심볼릭 링크 명령은 ln 명령에 “-s” 옵션을 사용하여 연결한다.
링크 개수가 2로 변하지 않으며, 원본 파일을 확인해보면 일반 계정 소유와 그룹으 로 변경되어 있다.

(2) 심볼릭 링크 파일 수정하기

심볼릭 링크의 파일은 root 권한으로 해두어도 파일을 수정하는 데 문제가 없음을 확인한다.

(3) 원본 파일과 권한 차이가 있는 심볼릭 링크 파일 수정하기

심볼릭 링크 파일은 일반 계정(DCUsecu) 소유이고, 원본 파일은 root 계정으로 되어있다.

일반 계정 소유의 심볼릭 링크된 파일을 수정하려고 하면 할 수 없다. 심볼릭 링크 파일의 소 유자가 일반 계정이므로 관리자 계정 소유의 원본 파일을 변경할 수 없다.

심볼릭 링크 파일을 관리자 계정에서 일반 계정으로 소유를 바꾼다.
원본 삭제 후, 심볼릭 링크의 파일을 확인한다.

원본 파일 삭제 후 심볼릭 링크 파일을 확인하면 링크된 파일은 남아있으나 원본 파일은 삭제 된 것으로 표시된다. 다시 확인해보면 원본 파일은 삭제되고 심볼릭 링크만 남은 것 확인할 수 있다.

(4) 동일 권한의 원본파일 재생성하기

삭제된 a.txt 파일을 일반 계정으로 다시 만든다.

다시 만든 파일에 다른 내용을 저장하면 심볼릭 링크된 파일에도 같은 내용이 들어있다.

생성한 a.txt 파일을 할당받은 심볼릭 링크 파일을 수정하면 a.txt 파일도 수정된다.

실습 6-1의 결론

1) 심볼릭 링크는 원본 파일을 삭제해도 원본 파일의 이름과 위치를 기억하여 계속 그 파일을 바라보는 상태로 남는다.

2) 삭제된 원본 파일 대신 처음 원본 파일과는 다르지만 똑같은 경로에 같은 파일 이름으로 파일을 생성하면 심볼릭 링크 파일은 새로 생성된 파일의 심볼릭 링크 파일로 존재한다.

 

2. 레이스컨디션 수행하기

기존의 /etc/shadow 파일을 확인한다.

(1) 공격 대상 파일 생성하기

root 계정의 shadow 파일에 백업하고, ll /etc로 shadow 파일에 백업이 되었는지 확인한다.

vi 에디터로 tempbug.c 파일을 컴파일하여 SetUID 권한을 부여한다.
sleep 명령어로 프로그램 실행 시간을 조정하는데 예제와 달리 40초로 시간을 연장하였다.

(2) 공격 대상 파일 실행하기

일반 계정(DCUsecu)으로 전환한다. temp 파일을 생성한 뒤에, "root::12519:0:99999:7::" 백 그라운드에 작성되도록 한다. cat temp로 확인해보면 백그라운드에 작성되도록 한 것을 확인 할 수 있다.

(3) 파일 바꿔치기

생성한 temp 파일을 삭제하고, /etc/shadow 파일에 대한 심볼릭 링크 파일을 tempbug가 접근하고자 하는 temp 파일로 바꿔치기한다. temp 파일에는 root의 비밀번호를 제거하는 명령어가 적혀있으므로 프로그램이 잘 실행되었 다면 root 계정으로 변환했을 때 비밀번호 입력 없이 계정이 전환된다.

(4) 공격 결과 확인하기

/etc/shadow에 대한 권한은 일반 계정(DCUsecu)에는 없으나, root 계정으로 전환을 시도하 면 비밀번호 입력 없이 계정이 전환되고, /etc/shadow 파일에 대한 접근이 가능함을 알 수 있다. temp 파일에 입력해야 할 내용이 /etc/shadow 파일에 입력된 것을 확인할 수 있다.

(5) 시스템 정상 상태로 돌려놓기

시스템을 원래대로 돌려놓으면 root에 대한 비밀번호 입력란이 다시 돌아온다.