표제지
목차
논문요약 9
제1장 서론 10
제2장 배경지식 13
2.1. Supervisor Mode Execution Protection(SMEP) 13
2.2. Breakpoint 종류 및 구조 15
2.3. 디바이스 드라이버 17
2.4. QEMU 18
제3장 SMEP 보호기법 특징 및 문제점 20
제4장 개선된 SMEP 보호기법 22
4.1. 구현 22
4.1.1. 개선된 SMEP 모듈 생성 23
4.1.2. 개선된 SMEP 보호기법 제어 기능 생성 26
4.1.3. 개선된 SMEP 프로세스 탐지 기능 생성 29
4.1.4. 개선된 SMEP 프로세스 차단 기능 생성 32
4.2. 증명 32
4.2.1. QEMU 환경 테스트 32
4.2.2. VMware 환경 테스트 35
4.2.3. 사례연구 37
4.3. Overhead 측정 41
제5장 결론 45
참고문헌 47
ABSTRACT 50
표 1-1. 년도별 취약점 개수 10
표 1-2. 취약점 유형 11
표 2-1. Control register 설명 14
표 2-2. Debug register 상태 설명 16
표 4-1. VMware 옵션 설정 36
그림 2-1. 권한에 따른 memory page pool 접근 구조 13
그림 2-2. Control register 4 구조의 SMEP bit 15
그림 2-3. 문자 디바이스 드라이버 동작 18
그림 3-1. Control register4 사용되는 함수 20
그림 4-1. 주 번호 할당 함수 23
그림 4-2. 모듈에 대한 정보를 가지고 있는 구조체 24
그림 4-3. device_create 함수 24
그림 4-4. cdev_init 함수 24
그림 4-5. struct cdev 구조 25
그림 4-6. cdev_add 함수 25
그림 4-7. 문자 디바이스 드라이버 등록 과정 25
그림 4-8. Event handler 코드 일부 26
그림 4-9. _text 영역 주소 27
그림 4-10. _text 영역 심볼 목록 27
그림 4-11. Control register4 사용 함수 주소 27
그림 4-12. Hardware breakpoint 초기화 29
그림 4-13. Hardware breakpoint를 설정하는 함수 29
그림 4-14. perf_overflow_handler_t 정의 29
그림 4-15. perf_event 코드 일부 30
그림 4-16. struct pid_namespace 코드 일부 30
그림 4-17. idr struct 코드 일부 30
그림 4-18. 프로세스 id 찾는 과정 31
그림 4-19. pt_regs struct 코드 일부 31
그림 4-20. 구현한 디바이스 드라이버 흐름도 32
그림 4-21. QEMU booting 스크립트 33
그림 4-22. QEMU booting 동작 33
그림 4-23. 커널 버전 확인 34
그림 4-24. /proc/devices 생성된 파일 이름 34
그림 4-25. /dev 생성된 디바이스 34
그림 4-26. Remote 디버깅 확인 결과 중 일부 35
그림 4-27. Hardware breakpoint 설정 확인 35
그림 4-28. 디버깅 확인 36
그림 4-29. 생성된 취약한 모듈 37
그림 4-30. 취약한 모듈 공격 38
그림 4-31. 취약한 모듈 공격 후 셸 획득 38
그림 4-32. 차단된 공격 39
그림 4-33. 공격 후 셸 획득 40
그림 4-34. Hardware breakpoint 탐지 40
그림 4-35. 커널 panic log 중 일부 41
그림 4-36. Perf 도구 평가 항목 리스트 중 일부 42
그림 4-37. 개선된 보호기법 적용 전 overhead 측정 43
그림 4-38. 개선된 보호기법 적용 후 overhead 측정 43