반응형
버퍼 오브플로우(Buffer OverFlow)의 가장 기본 개념은 '덮어쓰기'이다. 정상적인 경우에 접근할 수 없는 메모리 공간을 임의의 코드를 이용해 값을 변경한다. 다만, 관리자 권한을 획득하려면 공격하려는 프로그램에 SetUID가 설정되어 있어야 하고, 프로그래머가 취약한 특정 함수를 사용해야 한다.
OverFlow는 '넘쳐 흐르다' 라는 의미이다. 특정 함수를 사용할 때, 입력한 문자열을 저장하기 위해 선언한 변수(배열)의 크기보다 더 길게 입력하면, 다른 용도로 사용하는 영역에 값을 덮어쓰게 된다.
우리가 사용하는 메모리는 왼쪽 그림 과 같이 구성되어 있다. 공격에 사용되는 부분이 STACK과 HEAP이다.
STACK에는 지역변수, 인자, 함수 종료 후 돌아갈 곳의 주소(RET값)이 저장되어 있다. 바로 이 RET값을 변조하여 관리자 권한을 획득하는 것이 STACK 기반의 BOF 공격의 목표이다.
HEAP에는 malloc, calloc 등의 함수를 사용해 프로그래머가 직접 공간을 할당하게 되는데, 이곳에 저장된 데이터 및 함수를 변경하여 원하는 결과를 얻어낼 수 있다. 이것이 HEAP 기반의 BOF 공격이다.
반응형
'IT > 보안' 카테고리의 다른 글
DLP와 DRM (0) | 2020.09.24 |
---|---|
통합 로그 시스템 (0) | 2020.09.24 |
DDoS [ Distributed Denial of Service ] (0) | 2020.09.24 |