반응형
SMALL

BOF는 버퍼오버플로우의 약자이다. 해킹공격중에 버퍼오버플로우 공격에 대해 가장 많이 들어봤을텐데 그만큼 흔한 공격이고 아직까지 완벽한 방어대책이 나오진 않았다. 항상 ASLR을 우회해서 공격하는 등 공격수법도 다양하다. 



1. Stack이란?





<사진출저: 누렁이의 IT세상>



스택이란 자료구조에서 LIFO방식을 의미한다. 나중에 들어간 것이 먼저 나오는 구조이다. 리버싱에서는 스택과 메모리구조 개념이 매우 중요하게 다루어진다. 기본적으로 스택, 메모리구조, 주소값 등을 이해하지 못하면 추후 모의해킹 뿐만 아니라 악성코드 분석을 하는데 있어서도 많은 난항을 겪게 된다. 


- EBP: 스택프레임의 처음의 주소가 저장되는 공간이다. 가장 먼저 push가 된다.

- ESP: 스택프레임의 맨 나중에 들어온 주소가 저장되는 공간이다. 가장 나중에 push가 된다.

- EIP: 다음에 실행할 명령어의 메모리 주소가 저장된다. 컴퓨터구조의 PC와 개념이 똑같다.


PUSH를 하게 되면 스택주기가 4바이트만큼 감소하면서 데이터가 저장되고 POP을 하면 4바이트만큼 증가하면서 데이터가 빠져나가게 된다. 




<사진출저: 보안프로젝트>



사진은 스택프레임이 어떤것인지 알기 위해 첨부했는데 일단 변수 m1, m2가 주소값 100,99라인에 저장이 되게 된다. 그리고 m1 = 1이 주소값 98번째 라인에 저장이 되게 된다. 여기에서 EBP값은 매번 다르게 들어가게 된다. main함수 기준으로 봤을땐 EBP값이 주소값 100번째라인에 들어가지만 A() 실행값 기준으로 봤을땐 EBP값이 98번째 라인부터 들어가게 된다. EBP는 기준에 따라 항상 달라질 수 있기 때문에 어디가 무조껀 EBP다라고 말하면 안된다. 스택프레임은 RET(리턴주소), 그위에 EBP, 그리고 나머지 기타 변수들이 하나씩 채워져 하나의 스택프레임을 구성하게 된다. 



2. BOF란?

버퍼오버플로우의 약자로 가장 흔한 공격이다. 스택이 꽉차게 되면 RET값을 변조해서 공격하는 방법이 가장 흔하다.



<사진출저: 보안프로젝트>



일단 RET위에 ebp가 삽입되고 그 위에 변수들이 삽입이 되게 된다. 보통 스택프레임은 이런식으로 구성이 되게 되지만 스택프레임이 꽉찼을 때 문제가 발생하게 된다. 만약 100번째 주소지(EBP)까지 전부 내용이 꽉차게 된다면 RET는 100번째까지 삽입된 데이터로 전부 변경이 되기 때문에 함수가 종료될때 엉뚱한 곳으로 복귀 주소를 실행시켜서 사용자가 뜻하지 않게 종료가 되게 된다. 이러한 오버플로우 취약점을 활용해서 블랙해커들이 오버플로우 길이 내용을 전부 변조시켜서 공격하는게 가장 큰 문제점이다. 스택프레임이 꽉차서 RET가 어디로 복귀주소를 보내줘야 하는지 몰라 헤멜때 발생하게 된다.




반응형
LIST

'악성코드분석' 카테고리의 다른 글

리버싱 기초 (1)  (0) 2021.01.10
UPX 자동 언패킹  (0) 2021.01.05
MP3 컨버터를 이용한 Exploit  (0) 2018.01.21
ollydbg와 mona를 이용한 BOF 실습  (0) 2018.01.21
BOF 기초실습  (0) 2018.01.21
블로그 이미지

만년필석사

,