본문 바로가기

개발/해킹

버퍼오버플로우

- Stack buffer overflow : 스택영역에 할당된 버퍼에 크기를 초과하는 데이터를 기록하고 리턴어드레스를 변경하여

임의의 코드 실행

- Heap overflow : 힙 영역에 할당된 버퍼의 크기를 초과하는 데이터를 기록하여 저장된 데이터 및 함수의 주소를

변경해 임의의 코드를 실행

 

 

- 메모리 구조

Lower Memory Address

Program Header Table

TEXT Area

Initialized DATA Area

Uninitialized DATA Area

Heap Area

Stack Area

High Memoty Address

 

- 대응책 :

1. 운영체제 커널 패치

/etc/system에서 다음 2줄 추가(Solaris)

set noexec_user_stack=1

set noexec_user_stack_log=1

2. 어플 프로그래밍시 Boundary 함수 추가

3. 경계(canary) 검사 - 스택 무결성 검사

o 스택가드 사용

o Null Canary 사용

4. ASLR 사용

 

 

- ASLR : 비스타에 추가된 기능인 ASLR은 PC를 기동할 때마다 다른 메모리 영역에 보존되어 있는 중요한 시스템

파일을 읽어 악질적인 코드의 실행을 어렵게 하는 것이다.

- 스택가드 : 특정 변수를 입력받을 시에 해당 변수 값의 경계에 특정한 값을 입력해두어, 이 값이 변조되거나, 침범 당 할 시에 시스템 프로세스의 오류를 발생시켜 버퍼 오버플로우 등과 같은 공격으로 인해 권한을 빼앗기는 것을 막기 위한 프로그램 컴파일러 기술

- Null Canary : 공격자가 버퍼에 Null 문자를 넣을 수 없다는 점을 이용하여 공격에 대응

'개발 > 해킹' 카테고리의 다른 글

teardrop  (0) 2012.02.05
DRDOS  (0) 2012.02.05
Race Condition  (0) 2012.02.05
whowatch  (0) 2012.02.05
chkrootkit 을 이용한 루트킷 탐지법  (0) 2012.02.05