반응형
SEH overwrite Exploit
- SEH Handler를 덮어씌워서 공격하는 방법
SafeSEH 검증 과정
- Handler의 주소값 검증
- 등록된 핸들러인지 확인
- 실행 여부 결정
SafeSEH 검증 과정 (세부)
- Handler의 주소가 스택인지 확인
- 주소가 스택의 범위에 포함되어 있다면 호출
SafeSEH 검증 과정 (세부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 |