Stack Overflow / Heap Overflow / Heap Spray



 주의 : 본 글은 K-Shield 1차과정(Raon)에서 시스템 취약점 과정입니다.


Stack Overflow(스택 오버 플로우)


"stack_bof.exe"의 소스 분석한다면 첫번째 인수(argument)을 main에서 입력 받아 sum이라는 함수의 변수(parameter)로 전달한다. 

sum 함수(function)에서 첫번째로 받는 파라미터 값(char 4)이 한계를 초과하여 스택에 저장된 return 주소위치까지 정보가 overwrite으로 저장된다. 


OllyDbg로 분석한다면 EIP가 입력한 정보로 변경되었으며 33343233은 hex 값을 dec값으로 변경한다면 3423이며 리틀인디언(little India)방식이므로 3243에서 스택 오버플로우가 발생된 것을 확인 가능하다.




※ 윈도우 오류 발생시 Ollydbg를 바로 작동 하는 방법

[Options] - [Just-in-time debugging] - [MakeOllydug Just-in-time dubugging] 선택





Security Cookie(Stack Canary)


Stack Overflow는 Security cookie를 사용하면 스택에 저장되는 return 주소[EIP]가 overflow시 해당 정보를 00000000으로 변경하여 준다. 



※ Security Cookie 사용과 미사용 비교



※ Ollydbg 사용 시 스택 View가 움직여 분석이 어렵다면 해당 View를 마우스 오른쪽 클릭하여 Unlock stack을 선택하면 View window를 고정가능하다.


Security_check_cookie로 점프하는 함수 확인한다.



Security Cookie에서 저장return 주소 정보와 비교하는 CMP확인한다.





SEH overwrite(Exception Overflow)


Security Cookie를 우회하기 위하여 exception overflow 취약점을 이용한다.


try {

[ 실행 ];

} catch {

[ 예외처리 ];

}


예외처리를 하지 못하지 못하고 발생하는 에러 위치를 취약점으로 이용한다.


예외를 처리하지 못하고 EIP가 변경된 것을 확인가능하다.



SafeSEH/SEHop


 exception overflow 취약점을 보안하여 예외 처리할 주소들도 프로그램 안에 저장한다.






















이미지.zip


1 2 3 

카운터

Total : 93,195 / Today : 19 / Yesterday : 21
get rsstistory!