windows-0x06
0x06 GS(2)
SafeSEH
SafeSEH는 SEH Overwite를 방어하기 위해 도입된 메모리 보호 기법입니다.
SafeSEH가 하는 일은 아주 간단합니다.
Exception Handler가 실행되기 전에 Handler 주소 값에 대한 검증을 수행합니다.
- 1) 등록된 Handler의 주소가 STACK인지 확인해서 STACK이면 호출하지 않음.
- 2) Handler의 주소가 현재 로드된 모듈의 주소이고, SafeSEH 컴파일이 되어 있다면 적절한 절차로 등록된 것인지 검증.
까다롭죠??
그런데 해법이 상당이 간단합니다.
- 1) Handler의 주소가 STACK이 아니면 된다.
- 2) SafeSEH 컴파일이 되어 있지 않으면 된다.
- 결론 : SafeSEH가 안걸려 있는 모듈에서 Gadget을 찾아오면 된다!!
간단하죠?
Immunity Debugger에서 mona.py를 이용하면 Module들에 어떤 보호기법들이 적용되어 있는지 확인할 수 있습니다.
!mona modules
이 중에 SafeSEH가 적용되어 있지 않은 Module을 골라서 우회 공격을 동일하게 진행하면 됩니다.
이상으로 GS편을 모두 마치겠습니다.