본문 바로가기

해킹 공격

[NOOBHACK] 버퍼 오버플로우 BOF(buffer overflow)

이제 생각하다 보니까 Canary 보호 기법을 알려줘놓고 정작 그 전에 알려줘야 했던 버퍼 오버플로우를

안알려줬다 줄여서 BOF라 하겠다

 

BOF(buffer overflow)란 일종의 버그면서 이를 이용한 공격 방법이 된다

프로그램이 실행될 때 입력받는 값이 버퍼를 채우다 못해 다른 버퍼를 침범해 버리는 현상을 말한다

버퍼에 대해 잘 모르는 분을 위해 아래를 먼저 보고 오는 것을 추천한다

https://noobhack.tistory.com/28

 

[NOOBHACK] BOF란

BOF란 우리가 컴퓨터를 사용할때 여러 데이터를 임시적으로저장하는 물리적 공간을 말한다 예시로는 우체통 정도가 있다 우체통은 버퍼고 우체통 안에 있는 우편물(데이터)은 결국 우체국(컴퓨

noobhack.tistory.com

버퍼가 가득찬 상태에서 데이터가 더 들어간다면 버퍼 안의 데이터가 밀려 나가는 것이 아닌 덮어 씌어지게 되는 것이다

아래의 예시를 한번 살펴보자

 

 

 

편의상 ret와 sfp의 크기는 1바이트라 가정한다

버퍼 공간

입력 받을 공간 입력 받을 공간 입력 받을 공간 sfp ret 다른 값 다른 값

밑줄을 친 곳이 사용자가 입력할 공간이다

그리고 "ABCDEF"를 입력해 본다

 

 

 

버퍼 공간

A B C D(sfp공간) E(ret 공간) F 다른 값

이렇게 다른 sfp,ret라는 공간과 더불어 다른 값 까지 덮어 버려 메모리가 오염 되는 현상이 발생했다 이것이

BOF의 원리다

 

이걸 이용한 해킹 예시를 들어보자

그전에 우리는 sfp와 ret라는 레지스터를 알아야 할 필요가 있다

https://noobhack.tistory.com/29

 

[NOOBHACK] sfp,ret의 대한 설명

포너블을 처음 접하신 분이라면 스택의 구조가 buffer+sfp+ret으로 이루어 졌다는 것 쯤은 알 것이다 buffer란 그냥 데이터가 저장되는 공간이라는 것을 생각하면 되고 sfp와 ret를 모르는 분들을 위해

noobhack.tistory.com

 

그리고 sfp는 스택 구조상 ret를 메모리 컬렙션(메모리 변조)를 일으키기 위해선 어쩔 수 없이 변조 시켜야 하는 대상이 되며ret가 주 BOF의 대상이 된다

 

ret가 왜 중요하냐면 어셈블리어의 관점으로 본다면 다시 돌아가서 실행 시켜야할 메모리 주소가 있으니 그 값을 변조 시키면 어셈블리어 코드 내에서 원하는 명령어를 실행 시킬 수 있기 때문이다

 

손수 작성한 이해하기 편한 코드를 작성해 보았다

 

1번 주소.작업
2번 주소.작업
3번 주소.6번 주소로 돌아가기(ret)
4번 주소.비밀 작업
5번 주소.?번 주소로 돌아가기
6번 주소.작업
7번 주소.작업
8번 주소.??번 주소로 돌아가기(ret)

이러한 어셈블리어 코드가 있을 때에 1번에서 부터 아래로 실행되는 코드였을때

위에서 설명한 원리로 BOF가 일어나 

3번의 주소가 변조 되었을 때에는

 

 

 

 

 

 

1번 주소.작업
2번 주소.작업
3번 주소.4번 주소로 돌아가기(ret)
4번 주소.비밀 작업
5번 주소.?번 주소로 돌아가기
6번 주소.작업
7번 주소.작업
8번 주소.??번 주소로 돌아가기(ret)

3번 주소(ret)가 6번으로 돌아 가야 할 것을 4번 주소로 돌아가라 바꿔버려

어셈블리어 코드는 결국 의도치 않은 프로세스를 실행 시킨 것 이다

이것이 BOF의 간단한 해킹 원리이다 이런 방식으로 BOF의 버그를 악용 하는 것이다

이제 다음부터는 dreamhack의 문제를 풀어보며 BOF와 어셈블리어를 더더욱 파헤쳐 볼 것이다

 

그리고 BOF를 방지하기 위해 나온 메모리 보호 기법 Canary가 있다고 한다

https://noobhack.tistory.com/11

 

[NOOBHACK] Canary 메모리 보호 기법

오늘은 시스템 해킹에서 자주 사용 돼는 Canary 보호 기법에 대해 알아볼 것이다 먼저 Canary의 기원 같은건 집어 치우고 대충 새 이름이며, 광부들이 질식사 하지 않기 위해 산소 농도에 민감한 Cana

noobhack.tistory.com