스프링노트

한빛미디어 - 정보 보안 개론과 실습 제 7장 연습문제 본문

SOLUTION

한빛미디어 - 정보 보안 개론과 실습 제 7장 연습문제

RAYZIE 2013. 4. 19. 10:34

1. 다음과 같이 bugfule을 실행할 경우 argc, argv[0], argv[1], argv[2]의 값은?

./bugfile 12 /bin/sh

argc : 3

argv[0] : bugfile

argv[1] : 12

argv[2] : /bin/sh

2. gdb에서 사용하는 각 명령의 동작을 간단히 설명하시오.

• list 3, 7

- 3행부터 7행을 조회

• break 5

- 브레이크 포인트 5행에 설정

• disass main

- 메인의 어셈블리어 코드 확인

• x/16xw $esp

- esp로부터 16워드 범위 만큼 스택 조회

• s(tep)

- 한 행씩 실행하는데 함수가 있으면 함수 내부로 이동해 실행

• n(ext)

- 한 행씩 실행하는데 함수가 있으면 함수를 완전히 실행한후 다음 행으로 이동

• c(ontinue)

- 현재 위치에서 프로그램의 끝까지 실행

3. 다음 중 버퍼 오버플로우 취약점이 존재하는 함수가 아닌 것은?

① strcpy

② strcat

③ scanf

④ printf (정답)

4. 다음 중 스택 오버플로우 공격을 이용해 관리자 권한을 얻기 위한 조건이 아닌 것은?

① 취약 파일이 관리자 소유여야 한다.

② 취약 파일 함수 내에 입력 값을 체크하지 않는 함수가 존재해야 한다.

③ 취약 파일의 권한에 SetUID가 설정되어 있어야 한다.

④ 취약 파일에 실행 권한이 없어야 한다. (정답)

5. Segmentation fault는 버퍼 오버플로우 공격 중 언제 일어나는가?

ret 주소가 변조되면 일어남

6. 해당 프로그램에 취약한 함수가 사용되었는지 찾는 방법으로, 이미 컴파일되어 있는 프로그램에서 사용한 함수를 확인할 수 있는 명령은 무엇인가?

① find

② cmd

③ strings (정답)

④ string

7. 다음 중 버퍼 오버플로우를 막기 위해 사용하는 방법이 아닌 것은?

① Non-executable 스택

② ASLR(Address Space Layout Randomization)

③ rtl(return to libc) (정답)

④ 스택 가드(Stack Guard)

8. 다음 중 Terminator canary로 쓰이는 바이트가 아닌 것은?

① NOP(No Operation: 0x90) (정답)

② CR(Carriage Return: 0x0d)

③ LF(Line Feed: 0x0a)

④ EOF(End Of File: 0xff)

9. 시스템 관리자 입장에서 볼 때 다른 보안 취약점과는 달리 버퍼 오버플로우 공격에 대한 대응책이 어려운 이유는?

메모리의 취약점을 이용하여 공격하는 방법으로 공격 패턴이 다양하며 보호 대응을 하기엔 제한적인 언어 및 기존 코드를 적용할 수 없고 기술적, 상업적, 문화적 제한을 많이 받기 때문에 다양한 댓가를 지불해야 한다.

10. 스택 버퍼 오버플로우를 설명하시오.

입력 값을 확인하지 않는 입력 함수에 정상적인 크기보다 큰 입력 값을 입력하여 ret 값을 덮어씌움으로써 임의의 코드를 실행하는 공격

11. 다음 코드가 실행되었을 때, 다음의 항목을 스택의 상위 주소로부터 하위 주소로 순서대로 배열하시오.(단, 스택에 배열할 항목은 다음과 같다)

char buffer[10], char *argv[], sfp, int argc, ret(return address)

bugfile.c

#include <stdio.h>

int main(int argc, char *argv[]) {

char buffer[10];

strcpy(buffer, argv[1]);

printf("%s \n", &buffer);

}

char *argv[] > int argc > ret(return address) > sfp > char buffer[10]

12. 스택 가드(Stack Guard)를 설명하시오.

컴파일러가 프로그램의 함수 호출시 ret 앞에 canary 값을 주입하고, 종료시 canary 값이 변조되었는지의 여부를 확인하여 버퍼 오버플로우 공격 탐지한다.

13. Non-executable 스택을 설명하시오.

스택에서 x 권한을 제거해 스택에 로드된 공격자의 공격 코드가 실행될 수 없도록 함.

14. 힙을 설명하시오.

동적 메모리를 할당할 경우 힙 영역에 할당 됩니다.

15. 힙 버퍼 오버플로우 공격을 설명하시오.

힙에 저장되는 데이터를 변조하거나, 함수에 대한 포인터 값을 변조함으로써 ret 값을 변조하여 임의의 코드를 실행하기 위한 공격

16. ASLR(Address Space Layout Randomization)을 간단히 설명하시오.

메모리 공격을 방어하기 위해 주소 공간 배치를 난수화하는 기법. 스택, 힙, 라이브러리 등의 데이터 영역 주소 등을 난수화하여 프로세스의 주소 공간에 배치



시스템보안 제 7장 연습문제.hwp