본문 바로가기
파이썬 스터디 과제/파이썬 해킹 프로그래밍

5장-3 공격코드개발-3 윈도우의 DEP우회

by laoching 2015. 1. 26.
728x90
반응형

DEP는 힙과 스택 같은 메모리 영역에 있는 코드가 실행되는 것을 방지하기 위해 마이크로소프트 윈도도우에 구현된 보안 기능이다.

공격 코드가 자신의 셸 코드를 실행시키려는 대부분의 시도를 무력화시킬 수 있다.

왜그럴까 ? :

대부분의 공격 코드는 자신의 셸 코드를 힙이나 스택에 위치시키기 때문이다.

하지만 네이티브 윈도우API를 통해 DEP를 우회할 수 있는 트릭이 존재한다고 한다.

프로세스의 DEP 설정을 비활성화시키는 데 사용되는 윈도우 API는

NtSetInformationProcess() 다.

NtSetInformationProcess() 프토토타입

-----------------------------------------------------------------

NTSTATUS NtSetInformationProcess(

IN HANDLE hProcessHandle,

IN PROCESS_INFORMATION_CLASS ProcessInformationClass,

IN PVOID ProcessInfromation

IN ULONG ProcessInformationLength );

-----------------------------------------------------------------

프로세스의 DEP 설정을 비활성화 시키려면 NtSetInformationProcess() API의 ProcessInformationClass 파라미터에 ProcessExecuteFlags(0x22)를 설정하고, ProcessInfroamtion 파라미터에 MEM_EXECUTE_OPTION_ENABLE(0x2) 값을 설정하고 호출하면 된다.

하지만 함수를 직접 호출하면 문제가 생긴다.

NULL 파라미터가 포함되는 경우에는 말이다!!

따라서 스택에 존재하는 파라미터를 이용하는게 상책이다.

NtSetInformationProcess() 를 호출해라!

ntdll.dll의 디스어셈블된 코드


findantiedep.py 가 필요하다. 이건 immunity디버거에 있다.

공격 코드 문자열을 단순히 복사하기만 하면 JMP ESP 명령을 통해 제어권을 넘길 수 있다.

JMP ESP 입력


이 스크립트를 이용하면 DEP가 설정된다.

728x90
반응형

댓글