/ POSTS

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
[그림 1-1]

이 중에 SafeSEH가 적용되어 있지 않은 Module을 골라서 우회 공격을 동일하게 진행하면 됩니다.

이상으로 GS편을 모두 마치겠습니다.