티스토리 뷰
- 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
- 컴파일
- 자료형
- Navigator 객체
- c언어
- stdio.h
- Char
- location 객체
- short
- Browser Object Model
- int
- History 객체
- Screen 객체
- DOM
- gcc
- keyword
- 리액트 #React #props #state #javascript
- Document Object Model
- bom
- 변수
- 키워드
- long
- window 객체
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |