티스토리 뷰

정보보호

버퍼 오버플로우

ljy98 2021. 8. 26. 15:45
  • Buffer

- 데이터를 한 곳에서 다른 곳으로 전송하는 동안 일시에 보관하는 메모리의 영역

- Buffer는 항상 일정 크기를 갖고 있음

- 보통 메모리의 Stack, Heap 영역에 존재함

 

  • Buffer Overflow vs. Buffer Overrun
Buffer Overflow Buffer Overrun
- 일정 크기를 갖는 버퍼에 그 크기를 넘는 데이터를 입력할 때 발생
- Stack 영역에 존재하는 버퍼에 대한 공격을 Stack Buffer Overflow라고 하고, Heap 영역에 존재하는 버퍼에 대한 공격을 Heap Buffer Overflow라고 함
- 버퍼에서 할당된 공간을 지나서 데이터 읽기를 계속할 때 발생

 

  • 스택 기반 버퍼 오버플로우 조건

- 배열로 할당한 공간보다 많은 데이터 입력

- 데이터 입력 길이에 대한 제한이 없는 경우 (데이터 길이 초과에 대한 예외 처리가 없음, 데이터 길이를 체크하지 않는 함수 사용)

   ex) scanf, strcpy, memcpy 등

- 이전 함수의 스택 주소 또는 이전 함수의 주소가 바뀌기 때문에 에러 발생

 

  • Visual Studio 옵션

- /O1, /O2 : 몇 가지 특정 최적화 옵션을 단번에 설정하는 방법

   /O1(크기 최소화)에 해당하는 옵션 : /Og, /Os, /Oy, /Ob2, /GF, /Gy

   /O2(속도 최대화)에 해당하는 옵션 : /Og, /Oi, /Ot, /Oy, /Ob2, /GF, /Gy

  두 옵션은 함께 사용하는 것이 불가능하다.

- /GS : 함수의 반환 주소, 예외 처리기 주소, 매개변수 주소 등을 덮어쓰는 공격 탐지 (Security cookie 생성)

- /NXCOMPAT : 데이터 실행 방지 기능, 호환되지 않은 실행 파일을 명시적으로 지정

   DEP(Data Execution Protection) 메모리 보호 기법 활성화

- /DYNAMICBASE : Windows의 주소 공간 레이아웃 불규칙화 기능을 사용

   ASLR(Address Space Layout Randomize) 메모리 보호 기법 활성화

 

  • 쉘코드(Shellcode)

- 작은 크기의 코드로 구성

- 소프트웨어 취약점을 이용하기 위해 사용

- 기계어 코드로 작성

- 쉘코드 종류

로컬 쉘코드
(Local Shellcode)
공격자가 대상 시스템에 대한 권한이 제한되어 있지만 버퍼 오버플로우와 같은 취약점을 공격할 때 사용
원격 쉘코드
(Remote Shellcode)
공격자가 네트워크상의 다른 대상 시스템에 대해 버퍼 오버플로우와 같은 취약점이 있는 프로세스를 공격할 때 사용하며 대상 시스템에 대한 접근을 허용하기 위해서 TCP/IP 소켓 연결을 사용
리버스 쉘코드
(Reverse Shellcode)
/ 커넥백 쉘코드
(Connect-Back
Shellcode)
대상 시스템에서 공격자에 연결을 요청하도록 하는 쉘코드
바인드 쉘코드
(Bind Shellcode)
공격자가 대상 시스템의 특정 포트에 바인드(Bind)하여 연결하는 쉘코드
새로운 연결 요청이 없기 때문에 탐지가 힘들지만 그만큼 정교한 코드가 필요
다운로드와 실행 쉘코드
(Download and execute Shellcode)
쉘을 직접 실행시키지 않고 네트워크를 통해서 악성코드를 다운로드 및 실행시키는 쉘코드
단계별 쉘코드
(Staged Shellcode)
직접 실행하기에는 제한적인 경우 쉘코드를 단계적으로 실행시키는 쉘코드
에그헌팅
(Egg-hunting)
단계별 쉘코드의 일종으로 실제 쉘코드는 예측 가능한 위치에 삽입하고 실제 쉘코드의 위치를 호출하는 형태의 쉘코드
오믈렛
(Omelette)
쉘코드 단편화 기술로 공격에 사용할 큰 메모리 영역이 없고 작은 메모리 영역이 여러 개일 때 사용하는 쉘코드

 

'정보보호' 카테고리의 다른 글

SQL injection (SQLi) - 1  (0) 2021.08.31
메모리 보호 기법과 우회 기법  (0) 2021.08.26
메모리 구조  (0) 2021.08.26
소프트웨어 취약성 개요  (0) 2021.08.26
보안 솔루션 종류와 이해  (0) 2021.08.16
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함