IT 그리고 정보보안/Knowledge base

스택 가드 (Stack Guard)

plummmm 2021. 4. 15. 21:38
반응형

이건 일명 까나리(?) 라고 불리는 스택 쿠키가 사용되는 기법 중 하나다. 원래 명칭은 Canary value임. 

스택 쿠키 중에 여러가지 종류가 있는데 Propolice, Stackguard 등이 있는데 

지금 언급하려는게 스택 가드이고, 다음에 설명할 SSP가 별칭으로 Propolice 라고 하는데..

 

기회가 된다면 다시 한번 정리를 하겠음.

 

일단 스택 가드는 컴파일러 옵션으로 지정할 수 있는 방어기법이다.

스택에 프로그램 실행 시 canary 이놈을 심어두는 거임.

ebp와 지역변수 공간 사이에 이녀석을 놔두는데, 보통 BOF 공격할 때 RET를 변조 시키려면 무조건 SFP와 아래의 공간이

다른 값으로 가득차야 한다는 것을 포인트로 잡고 canary를 두어 이 값이 변조되면 BOF 공격이 일어났다고 탐지하는 것이다.

 

스택가드는 함수 에필로그 과정에서 변조 여부를 확인하고 변조되었으면 프로그램을 종료한다.

 

뭐 일단 저 위치에 dummy 값이 들어가는데.. 일단 canary 값이 변하면 RET도 변조되었다는

그런 가정을 깔고 본다. 그래서 이녀석을 우회하고 싶다면 canary를 변조시키지 않고

RET를 건드려야 된다는 말이다.

 

canary는 두가지 종류가 있다.

 

1. Terminator Canary

NULL(0x00), CR(0x0d), LF(0x0a), EOF(0xFF) 같은 Terminator 문자를 포함시키는 canary다.

종료 문자들 때문에 카나리아 값을 알고 있다고 해도 똑같이 적어 공격이 불가능하다.

 

2. Random Canary

카나리아 값이 랜덤으로 계속해서 바뀌는 것이다.

random xor도 있긴 하던데.. 음 뭔가 중요도가 낮은 듯 하여 일단 다음에 필요할 때 추가하겠음.

 

 

참고 문서 : Smashing the stack - NewHeart

참고 URL 

http://en.wikipedia.org/wiki/Buffer_overflow_protection

http://kaspyx.cafe24.com/tag/%EC%8A%A4%ED%83%9D%EA%B0%80%EB%93%9C/

반응형