본문 바로가기

System/Windows

System/Hacking/SEH overwrite Exploit

반응형




SEH overwrite Exploit
- SEH Handler를 덮어씌워서 공격하는 방법

SafeSEH 검증 과정
  1. Handler의 주소값 검증
  2. 등록된 핸들러인지 확인
  3. 실행 여부 결정

SafeSEH 검증 과정 (세부)
  1. Handler의 주소가 스택인지 확인
  2. 주소가 스택의 범위에 포함되어 있다면 호출

SafeSEH 검증 과정 (세부2)
  1. 가리키는 주소가 현재 로드된 모듈의 주소
  2. 그 모듈이 SafeSEH로 컴파일된 모듈이면 적절한 절차로 등록됬는지 검증
    * 이때 PE헤더의 Load Configuration Directiory가 이용

SafeSEH 특징
  • SEH는 옵션을 주었을 때만 동작
  • 특정조건에 맞는지만 검증

SafeSEH 우회
SafeSEH 활성화는 컴파일러에 /SAFESEH옵션을 준 뒤 컴파일
-> 단 하나의 모듈이라도 컴파일 되어 있지 않다면 해당 모듈로 우회 가능.
  • mona의 modules 명령으로 /SAFESEH 컴파일이 되어있지 않은 모듈 검색
    • 찾은 모듈 지정과 /POP/POP/RET 검색 
      !mona seh -m [모듈 이름]
  • 해당 모듈은 /POP/POP/RET이 내부에 존재함. 따라서 /SAFESEH 옵션을 주지 않고 컴파일 한 모듈은 가젯을 이용해 overwrite 시켜도 safeseh 검사를 하지 않음.
    • /POP/POP/RET 대안 
      jmp [esp+xx], call [esp+xx] 등
    • ESP를 기준으로 여러개의 offset값을 확인
      jmp esp+32, call esp+8등의 코드로 오프셋을 계산하기만 하면, /POP/POP/RET을 대체할 수 있음.


반응형

'System > Windows' 카테고리의 다른 글

System/Hacking/ASLR/ASLR 우회  (0) 2017.11.30
System/Hacking/DEP와 DEP 우회  (0) 2017.11.30
Windows/메모리보호기법/MSDN  (0) 2017.11.30
Windows/DEP보호기법/DEP기법 우회  (0) 2017.10.30
Windows/SEH보호기법/SafeSEH  (0) 2017.10.30