20
레레레 레레레 (Race Condition) 레레레 : 레레레 (20052224)

레이스 컨디션 (Race Condition)

  • Upload
    mele

  • View
    435

  • Download
    0

Embed Size (px)

DESCRIPTION

레이스 컨디션 (Race Condition). 발표자 : 박율기 (20052224). 레이스 컨디션 링크의 이해 및 실습 레이스 컨디션의 이해 및 실습 임시파일을 이용한 레이스 컨디션 Q & A. 목차. 레이스 컨디션 발표 순서. 레이스 컨디션. 레이스 컨디션 – 경쟁 상태 두개 이상의 프로세스가 경쟁하는 상태 운영체제상 레이스 컨디션이 발생하면 예기치 못한 결과가 초래된다. 레이스 컨디션과 공격. 레이스 컨디션 (Race Condition). - PowerPoint PPT Presentation

Citation preview

Page 1: 레이스 컨디션  (Race Condition)

레이스 컨디션 (Race Condition)

발표자 : 박율기 (20052224)

Page 2: 레이스 컨디션  (Race Condition)

Page 2

목차

1. 레이스 컨디션

2. 링크의 이해 및 실습

3. 레이스 컨디션의 이해 및 실습1. 임시파일을 이용한 레이스 컨디션

4. Q & A

레이스 컨디션 발표 순서

Page 3: 레이스 컨디션  (Race Condition)

Page 3

레이스 컨디션

레이스 컨디션 (Race Condition)

레이스 컨디션과 공격

레이스 컨디션 – 경쟁 상태 두개 이상의 프로세스가 경쟁하는 상태 운영체제상 레이스 컨디션이 발생하면 예기치 못한 결과가 초래된다 .

레이스 컨디션 (Race Condition) 공격

관리자 권한으로 실행중인 프로세스 (A) 와 경쟁 상태 (Race Codnition) 를 만듦 A 프로세스가 사용하는 임시파일을 목표 (target) 로 한다 . A 프로세스가 사용중인 파일에 아주 짧은 공백 시간 동안 접근 하여 수정

Page 4: 레이스 컨디션  (Race Condition)

Page 4

프로세스 A

프로세스 B

a = 10b = 5 a = 5 b = 10

Page 5: 레이스 컨디션  (Race Condition)

Page 5

링크의 이해 및 실습

심볼릭 링크

링크의 이해

원본과 링크한 파일의 inode 가 다르다 . 원본 파일을 가리키는 파일 원본 파일 삭제 시 링크한 파일은 없는 파일을 가리키게 된다 . 디렉토리 링크 가능 다른 FileSystem 에서도 사용가능

하드 링크 원본과 링크한 파일의 inode 가 같다 . 원본 파일에 복수의 이름을 지정하는것과 같다 . 링크한 파일을 모두 삭제하여야 원본파일 삭제 된다 . 파일만 링크 가능 같은 FileSystem 에 사용가능

Page 6: 레이스 컨디션  (Race Condition)

Page 6

Name:../Ainode:100

Name:../Binode:200

심볼릭 링크

하드 링크

DataHello World

Datalink:../A

Name:../Ainode:100

Name:../Binode:100

DataHelloWorld

Page 7: 레이스 컨디션  (Race Condition)

Page 7

링크의 이해 및 실습

준비사항

실습 전 준비

원활한 실습을 위하여 wishfree 라는 일반권한 계정을 생성 /wishfree( 홈 디렉토리 ) 디렉토리에 race 디렉토리 생성 /root 디렉토리 확인 /root 디렉토리에 a.txt 라는 이름의 관리잔 소유 파일생성 후

실행 확인을 위하여 실행 시 눈에 띄는 문구삽입

Page 8: 레이스 컨디션  (Race Condition)

Page 8

링크의 이해 및 실습

하드 링크

링크의 이해

1. /root/a.txt 파일 내용 확인2. a.txt 의 권한 , 링크 수 , 소유자 , 소유그룹 확인3. /root/a.txt 파일을 링크하는 link.txt 파일을 /wishfree/race 에 생성4. /wishfree/race/link.txt 파일내용 표시5. a.txt 의 권한 , 링크 수 , 소유자 , 소유그룹 확인

링크의 변화가 있는 것을 확인 할 수 있다 .

Page 9: 레이스 컨디션  (Race Condition)

Page 9

링크의 이해 및 실습

심볼릭 링크

링크의 이해

1. /root/a.txt 파일 내용 확인2. a.txt 의 권한 , 링크 수 , 소유자 , 소유그룹 확인3. /root/a.txt 파일을 링크하는 symlink.txt 파일을 /wishfree/race 에

생성4. /wishfree/race/symlink.txt 파일내용 표시5. a.txt 의 권한 , 링크 수 , 소유자 , 소유그룹 확인

링크의 변화가 없는 것을 확인 할 수 있다 .

Page 10: 레이스 컨디션  (Race Condition)

Page 10

링크의 이해 및 실습

/wishfree/race 디렉토리 내용

링크의 이해

결과

심볼릭 링크는 원본 파일의 링크 수에 영향을 주지 않는다 . 링크한 파일을 수정하면 원본 파일이 수정된다 .

Page 11: 레이스 컨디션  (Race Condition)

Page 11

레이스 컨디션의 이해 및 실습

준비 사항

임시파일을 이용한 레이스 컨디션

Linux 6.2 / 7.0 (6.2 를 추천함 ) Vmware 6.0 에서 작동 (6.5 에서 Linux 6.2 / 7.0 구동 안됨 ) 일반권한 계정 필요 ( 실습의 원활한 진행을 위해 wishfree 로 진행 )

Page 12: 레이스 컨디션  (Race Condition)

Page 12

레이스 컨디션의 이해 및 실습

소스 해석

임시파일을 이용한 레이스 컨디션

if (argc != 3) {fprintf (stderr, „usage : %s file message\n“, argv[0])exit(EXIT_FAILURE);

} 실행 시 argument 의 개수 오류검증

slep(20);if ((fp = fopen (argv[1], “w”)) == NULL) {

fprintf (“stderr, “Can’t open\n”);exit(EXIT_FAILURE);

} 쓰기권한으로 파일열수 없을 경우 오류검증

Page 13: 레이스 컨디션  (Race Condition)

Page 13

레이스 컨디션의 이해 및 실습

소스 해석

임시파일을 이용한 레이스 컨디션

Page 14: 레이스 컨디션  (Race Condition)

Page 14

레이스 컨디션의 이해 및 실습

/etc/shadow 파일 백업

임시파일을 이용한 레이스 컨디션

컴파일 및 SetUID 설정

chmod 4755 : UID 구분 / 소유주 권한 / 그룹권한 / 다른 사용자 권한

계정에 대한 정보가 저장되어 있고 shadow 파일을 수정하므로 백업 한다 shadow 실습 후 root 계정 정보를 변경하므로 백업이 필요하다 .

Page 15: 레이스 컨디션  (Race Condition)

Page 15

/wishfree/race/ 에 빈 temp 파일 생성

wishfree 계정으로 로그인 한다 . 읽어 들일 임시 파일을 생성 후 tempbug 을 background(&) 로 실행한다 . 파일을 실행할 때 읽어 들일 파일명 , 삽입할 문자열을 순서대로 기입한다 .

레이스 컨디션의 이해 및 실습

임시파일을 이용한 레이스 컨디션

tempbug 실행 중 파일수정

임의로 주어놓은 20 초 안에 삭제와 링크를 하여야 한다 . fg 를 이용하여 background 작업중인 프로세스를 foreground 로 돌린다 .

Page 16: 레이스 컨디션  (Race Condition)

Page 16

① Account 가 저장되는 항목 최대 8 자② 최대 13 글자의 password 가 암호화 되어 저장③ 1970 년 1 월 1 일로부터 최근 password 변경 날짜까지의 기간④ password 재설정 대기기간

(0 일 경우 언제든 변경 가능 )

⑤ password 유효기간(99999 일 경우 유효기간 없음 )

⑥ password 변경 경고 기간⑦ password 만기 후 계정을 사용할 수 없게 되는 기간⑧ 1970 년 1 월 1 일부터 계정이 사용불가가 된 날짜까지의 기간

root : : 12519 : 0 : 99999 : 7 : : :① ② ③ ④ ⑤ ⑥ ⑦ ⑧

__①__:__②__:__③__:__④__:__⑤__:__⑥__:__⑦__:__⑧__:

Page 17: 레이스 컨디션  (Race Condition)

Page 17

tmpbug 프로세스

B 프로세스

/etc/shadow

temptemp

link:/etc/shadow

Page 18: 레이스 컨디션  (Race Condition)

Page 18

root 계정 로그인

password 없이 로그인이 가능하다

/etc/shadow 복구

이전에 백업 해둔 /etc/shadow.backup 를 /etc/shadow 로 덮어쓴다 . 이제 로그인시 password 를 물어보며 , password 는 레이스 컨디션 전의 비번이다 .

레이스 컨디션의 이해 및 실습

임시파일을 이용한 레이스 컨디션

Page 19: 레이스 컨디션  (Race Condition)

Page 19

기회가 된다면 ptrace 레이스 컨디션과레이스컨디션 방어법에 대해 추가 발표를 원합니다 .

ptrace 레이스 컨디션 실패 화면 입니다

Page 20: 레이스 컨디션  (Race Condition)

Page 20

Q & A질문 및 부탁 드립니다 .