예외 상황 예제 개발 1실 서버팀 우상욱 소스 첨가(…).

Slides:



Advertisements
Similar presentations
KB 스타 경제 · 금융교실 나는 용돈관리왕. KB 스타 경제 · 금융교실 나는 용돈관리왕 선생님은 ? KB 2  이름 : 김국민  별명 : 스타 왕자  소속 : KB 국민은행 소비자 보호담 당 ( 간단한 자기 소개 : 교육 대상이 흥미 를 가질 수 있는 이미지와.
Advertisements

SPEED QUIZS AAAA BBBB CCCC DDDD EEEE FFFF. A Type.
제주특별자치도 교육청 Messenger Manual
MB노믹스의 실패와 미래 22조 배주환 외 5명.
신청 혜택 설명 2014년 고정 단체 등록 안녕하십니까? 롯데스카이힐 부여C.C입니다.
변비 재활전문센터 재활 간호사 김은화.
2012년 12월 정기 제직회 기 도 : 김영민 집사 출 석 : 서 기 개회 선언 : 제직회장 (이태환 장로)
Basic of Buffer Over Flow
Shellcode 작성 김영성.
Power C++ 제6장 포인터와 문자열.
C++ Espresso 제3장 배열과 포인터.
CRT 뽀개기 신영진.
제 2장 컴퓨터 구조.
Q & A (사실상 혼인·이혼) Q. 사실상 혼인·이혼 관계를 어떻게 처리해야 하나요?   사실 혼인·이혼은 부부 모두 동의 여부를 확인하고, 자녀, 이·통·반장으로부터 「사실(이)혼 확인서」를 징구해야 합니다. 만약 어느 한쪽이 동의하지 않는 경우는.
통합단말 UI Framework 컨설팅 - 디자인 시안 설명회
네트워크 프로그래밍 <네트워크 주문 프로그램 V1.00 >
3장 MPU 내부구조 Slide 1 (of 28).
XXX 제안서 회 사 명 ○○○○ 주 소 대표 전화 F A X 사업자번호.
버퍼 오버플로우에 대한 대책과 발전된 공격 안전한 함수 사용 버퍼 오버플로우에 취약한 함수 사용하지 않기
2007. Database Term Project Team 2 윤형석, 김희용, 최현대 우경남, 이상제
Software Exploit and Kernel Protection
시스템 보안 [Buffer Overflow] DEC, 15, 2013 By 박동혁.
버퍼 오버플로우 시스템보안 류기환 권재홍.
버퍼 오버플로우 시스템보안 인터넷공학전공 권영락.
Visual C++ Programming
Computer Architecture
리버스 엔지니어링 안녕하십니까? 리버스 엔지니어링 발표를 맡은 정창하입니다. 지금부터 리버스 엔지니어링 발표를
어셈블리어 및 실습 금 1,2 (314) / 금 3,4 (307) RTDCS 이 종 태
Chapter 06 명령어와 번지지정 방식.
Microsoft® Office Outlook® 2007 교육
BOF of 2.6 Kernel ! 박수완 / Su-Wan, PARK [ L1nkC] 숭실대학교 정보보호동아리 ACK
강의 및 교재의 목표 리눅스 초보자 리눅스 중급자. 강의 및 교재의 목표 리눅스 초보자 리눅스 중급자.
제 3 장 상수와 변수
10장. 중앙처리 장치의 명령어 다루는 내용 어셈블리 프로그램의 이해 인터럽트(interrupt) 명령어 세트 주소 지정 방식.
명령어 구조 컴퓨터 하드웨어의 구성 프로그램 명령어 프로그램 실행 동작.
명품 C++ 프로그래밍 1장. C++ 시작.
1 2 계속 생산해역등급관리 엑셀업로드 가이드 1. 생산해역등급관리 – 위생자료결과관리(해수)
Buffer Overflow
포토서버 (PhotoServer) 제품 소개서
Windows 10 업그레이드 방지 관련 메뉴얼 목차 [1] Windows 10 업그레이드 예약 확인 / 취소
CniMail 메일 클라이언트 조재영 지승우.
메일캐리어 제품 소개서 탭스랩주식회사.
발표자료는 다음링크에서 다운로드 받으실 수 있습니다.
MAIL CLIENT 김창우 윤성훈 이경재.
1. 컴퓨터 시스템 구성요소 메모리(Memory) 캐시메모리 개념 캐시메모리의 특징 적중률(hit ratio)
문자열과 배열 문자열 입출력 문자열 처리 함수 문자 처리 함수 문자열의 배열
알쏭달쏭 요한복음 성경퀴즈.
Copyrightⓒ ohta. All Rights Reserved.
ID카드 발급신청 안내(학생용) 스마트금융부.
KB스타 경제·금융교실 은행에 가요.
2011년 농림사업정보시스템(AgriX) 구축사업
체크포인트 가정 내 일어나는 사고에 대해 알아보고 사고예방을 위해 주의한다. | 예방법 장소별 사고 – 방과 거실 1 2 높은 곳 에 물건 두지 않기! 날카로운 모서리는 천으로 씌우기!
마음의 성전이 더 아름다운 조촌교회.
3단원 디지털 세상 속으로 1. 0과 1의 비밀.
1.비 사업용(자가용 및 관용) 차 종 적 용 상 의 구 분 승합 자동차 (버스) 1 종
FTZ 과제풀이 Level 11,12 HyunJae Lee
OPENGL project 구성원 : 김수민,남현우 OPENGL을 이용한 당구(3구) 구현하기.
대한민국-스웨덴 수교 60주년 기념 행사 주 스웨덴 대한민국 대사관 (토)
코로케이션 서비스 안내 정보화본부 정보화지원과.
청소년 댄스 경연대회 제35회 문화체육관광부장관大賞 전국레크리에이션대회
10장. 컴퓨터 구조에 대한 세 번째 이야기 작성자: 윤성우.
Windows System Programming
예외 처리 3조 조일현.
게임 엔진 ~인체 대 탐험~ 조주열.
C언어 응용 제11주 실습 해보기 제9장 그래프1.
한국 휴렛팩커드/고객지원사업본부/IT 기술사업부 박기영
OpenGL Project 과 목 명 : 컴퓨터 그래픽스 E14반 담당교수님 : 이병국교수님 팀 원 : 신호환
KB스타 경제·금융교실 화폐가 태어났어요.
Presentation transcript:

예외 상황 예제 개발 1실 서버팀 우상욱 소스 첨가(…)

프로그램 실행 전 VC++ 프로젝트 설정 (Release) 최적화 off 버퍼 보안 검사 off

Access Violation 잘못된 메모리(주소) 참조 실행을 제한하지 않을 경우 잘못된 메모리주소 사용으로 인한 프로그램 오작동 야기 검사하는 영역이 한정되어 있음

Access Violation 검사 영역 유저 모드를 제외한 범위에서 발생 유저 모드에서도 코드 영역에서는 발생한다. 파티션 x86 32비트 윈도우 3GB 유저 모드 x64 64비트 윈도우 IA-64 64비트 윈도우 NULL 포인터 할당 0x00000000 0x0000000000000000 0x0000FFFF 0x000000000000FFFF 유저 모드 0x00010000 0x0000000000010000 0x7FFEFFFF 0xBFFEFFFF 0x000007FFFFFEFFFF 0x000006FBFFFEFFFF 64KB 접근 금지 0x7FFF0000 0xBFFF0000 0x000007FFFFFF0000 0x000006FBFFFF0000 0x7FFFFFFF 0xBFFFFFFF 0x000007FFFFFFFFFF 0x000006FBFFFFFFFF 커널 모드 0x80000000 0xC0000000 0x0000080000000000 0x000006FC00000000 0xFFFFFFFF 0xFFFFFFFFFFFFFFFF 유저 모드를 제외한 범위에서 발생 유저 모드에서도 코드 영역에서는 발생한다.

Divide by Zero 피제수를 0으로 나누려고 할 때 발생 피제수 및 제수에 0이 있을 때 0÷a=0(a≠0)이 며, 0÷0의 몫은 부정(不定), a÷0은 불능이 된다. 정의되지 않은 값 / 또는 무한 이기 때문에 데 이터로 표현할 수 없음

Divide by Zero

Divide Overflow 나눗셈 연산 결과를 저장할 때, 저장소 공간이 연산 결과를 저장할 수 없을 만큼 적을 때 발생 나눗셈 연산 결과를 저장할 때, 저장소 공간이 연산 결과를 저장할 수 없을 만큼 적을 때 발생 주로 어셈블러에서 DIV 명령어 실행중 발생 (예상하지 못한 크기의 데이터)

Divide Overflow 피제수, 제수, 몫, 나머지 간의 관계 ※ Divisor : r/m (레지스터/메모리), 주로 EBX(BX) 나 ECX(CX)를 사용한다.

Stack Overflow 함수 복귀 전 계속된 함수 호출로 인하여 스택 프레임이 한도를 넘길 때 발생 함수 복귀 전 계속된 함수 호출로 인하여 스택 프레임이 한도를 넘길 때 발생 Window 환경의 기본 스택 크기 → 1MB (VC 의 /stack 옵션으로 조절 가능) Windows 환경에서는 스택이 높은 주소에서 낮은 주소로 자람

Stack Overflow ASM CALL X : 스택 에 복귀할 주소 를 넣고 EIP 를 X 주소의 함수 쪽으로 맞춘다. (ESP 주소 감소) RET : 스택 에서 CALL 당시에 넣었던 복귀 주소를 꺼내어 EIP 를 맞춘다. (ESP 주소 증가) PUSH X : 해당 값을 스택에 넣 으면서 ESP를 자라게 한다.(ESP 주소 감소) POP X : 해당 위치에 현재 ESP 의 위치에 저장되어 있던 값을 넣고 ESP 는 줄어든다.(ESP 주 소 증가) 스택 (예제에서) 높은 주소 낮은주소 이쪽은 생략합니다…. main에서 EBP 복귀주소 – CALL RecursiveFunction RecursiveFunction에서 EBP …

Buffer Overrun Buffer Overrun = Buffer Overflow 정해진 버퍼 공간을 넘어서 사용 대표적인 함수 strcpy → strcpy_s strcat → strcat_s

Buffer Overrun CALL 명령시 스택에 넣 었던 공간까지 사용 RET 으로 복귀시 엉뚱 한 위치로 복귀 해커(크래커)들이 권한 을 얻기 위해 자주 사용 한 방법 Strcpy 전 스택 Strcpy 후 스택 비고 높은주소 낮은주소 main의 스택 프레임 var 주소 0x0040109C (복귀주소) 0x00401020 (hacked 함수주소) 복귀시 hacked 함수 호출 main의 EBP FFFF input (strcpy 매개변수) EEEE DDDD CCCC BBBB AAAA

Check ESP Failure Debug 모드에서 컴파일 할 경우, Stack Frame의 값이 올바른지 검사하는 명령어를 추가함 함수 호출 후 복귀후 __RTC_CheckEsp 함수를 호출하 여 스택(ESP) 검사 Release 모드는 명령어 추가 없음

Check ESP Failure 라이브러리 버전이 다른 경우 강제 캐스팅(예제) 다중상속으로 인한 호출 함수 불일치 헤더 파일 변경등… 라이브러리 사용처에서 변경사항 이 반영이 안된 상태로 사용 강제 캐스팅(예제) 다중상속으로 인한 호출 함수 불일치 기타 등등… 결국, Stack(ESP)이 함수 호출 후 올바르지 않게 되는 공통적인 문제 발생.

참고자료 제프리 리처의 Windows via C/C++ Debugging Applications for Microsoft .NET and Microsoft Windows 어셈블리언어(5/E) : Assembly Language For Intel-Based Computers http://dic.naver.com/ http://www.ethanhein.com/wp/2009 /be-brave-go-ahead-and-divide-by- zero/ http://www.devnote.net/44 http://wikidocs.net/mybook/read/pa ge?pageid=3914 http://www.gamedev.net/community /forums/topic.asp?topic_id=308819