반응형
DEP 기법
DEP(Data Execution Prevention)란, 실행 권한이 없는 메모리 영역의 코드가 실행되지 못하도록 방지하는 기법
- 스택 영역, 힙 영역의 실행 코드 방지
DEP의 우회
- 초기 기법 : RTL 기법
- 현재 기법 : ROP 기법
- RTL Chaining 기법
-> DEP와 ASLR은 Exploit 방지의 핵심
DEP 종류
- H/W 기반, S/W 기반
- 최근 CPU에서는 대부분 H/W기반 지원
- 옵션에 따라 여러 가지 방식으로 동작
DEP 옵션
옵션 | 설명 |
Optin | 지정된 바이너리만 보호 |
OptOut | 지정된 바이너리를 제외하고 모두 보호 |
AlwaysOn | 모든 프로세스를 항상 보호 |
AlwaysOff | 모든 프로세스를 보호하지 않음 |
- 기본 동작 방식
- windows 7 : OptIn
추가적으로 Permanent DEP 옵션 지원
Permanent DEP : 한번 DEP 정책이 활성화 되면 API를 이용하여 비활성화 할 수 없도록 함.
1.DEP 정책 설정 확인
- 시스템 속성 > 고급 > 성능의 설정(S) > 데이터 실행 방지(DEP) > 두가지 설정 가능
데이터 실행 방지(DEP)를 필수 Windows 프로그램 및 서비스에만 사용(T) > OptIn
데이터 실 방지(DEP)를 사용자가 직접 선택한 항목을 제외한 모든 프로그램 및 서비스에 사용(U) > OptOut
2.명령어로 확인
bcdedit / enum | findstr nx
3.툴로 확인
Process Explorer
4.mona의 modules 명령으로 확인
- NXCompat이 true이면 permanent DEP 플래그 활성화
OptOut 후 공격
- 권한 에러 발생 > DEP로 인한 실패 : 스택에 실행 권한이 없다.
DEP 우회
1.DEP 비활성화
- SetProcessDEPPolicy() 함수를 이용해 현재 실행 중인 프로세스의 DEP 동작 모드를 변경
- 제약 사항
1.DEP 동작모드가 Always On/Off일 때는 동작하지 않음
2.모듈이 NXCOMPAT으로 링크되어 있으면(Permanent) 동작하지 않음
3.프로세스에서 딱 한번 실행이 가능하여, 프로세스 내부에서 함수를 호출할 경우 사용 할 수 없음.
2.실행권한이 존재하는 코드 블록 이용
로드된 모듈이나, 현재 프로세스의 코드 영역에 이미 실행권한이 존재 하므로 이러한 코드 중 원하는 기능을 하는 함수코드를 호출하는 것
- RTL(Return To Library) 기술
- ex) 리턴주소를 스택이 아닌 WinExeC() 함수의 시작 주소로 변경하여 원하는 명령 실행
- 제약 사항
ASLR로 인해 함수 주소가 가변적임
3.ROP(Return Oriented Programming)
ROP는 RTL Chain을 이용하여 몇 가지 유용한 API를 호출하여 DEP를 우회하는 방법.
- RTL와 비슷하게 실행권한이 존재하는 코드를 이용
- 함수뿐만 아니라 Gadget을 이용 하여 Chain만듬.
반응형
'System > Windows' 카테고리의 다른 글
System/Hacking/DEP와 DEP 우회 (0) | 2017.11.30 |
---|---|
System/Hacking/SEH overwrite Exploit (0) | 2017.11.30 |
Windows/메모리보호기법/MSDN (0) | 2017.11.30 |
Windows/SEH보호기법/SafeSEH (0) | 2017.10.30 |
System/Hacking/TEB 부터 함수를 구하는 과정. (0) | 2017.08.09 |