1 Unpacking Unpacking 2 PEB Beingdebugged1 Is Debugger
1. Unpacking이란… Unpacking이란 무엇인가?
2. 디버거 탐지 기술 PEB. Beingdebugged-1 - Is. Debugger. Present함수가 실제로 참조하는 값
2. 디버거 탐지 기술 PEB. Beingdebugged-2 - Is. Debugger. Present함수가 실제로 참조하는 값
2. 디버거 탐지 기술 PEB. NTGlobal. Flag – (2) - Nt. Global. Flag 역시 Being. Debugged와 같이 PEB구조체에 저장되어 있는 값이고 0 x 68 offset 지점에 위치 - FLG_HEAP_ENABLE_TAIL_CHECK(0 x 10) - FLG_HEAP_ENABLE_FREE_CHECK(0 x 20) - FLG_HEAP_VALIDATE_PARAMETERS(0 x 40) => 위의 세가지 값이 플래그에 세팅이되어 0 x 70 값 이 들어가게된다.
2. 디버거 탐지 기술 Heap. Flags, Force. Flags – (2) http: //www. nirsoft. net/kernel_struct/vista/index. html
2. 디버거 탐지 기술 Check. Remote. Debugger. Present -Check. Remote. Debugger. Present()는 Is. Debugger. Present()와 비슷한 개념 - 함수는 내부적으로 Nt. Query. Information. Process()라는 API함수를호출, EPROCESS라는 커널 구조체에서 Debugport값을 검사 - 함수는 디버거가 프로세스에 어태치 하는 것을 확인하는 함수 http: //www. nirsoft. net/kernel_struct/vista/index. html
2. 디버거 탐지 기술 Nt. Query. Information. Process() - 1 - Check. Remote. Debugger. Present가 호출 될 때에 내부적으로 호출되는 Native. API함수 - 함수의 이름 그대로 프로세스의 정보를 요청하는 Native. API - 함수의 원형은 아래와 같으며 두번째 인자 Process. Information Class에 7을 넘겨주게 되면 EPROCESS의 Debug. Port값 로드 http: //www. nirsoft. net/kernel_struct/vista/index. html
2. 디버거 탐지 기술 Nt. Query. Information. Process() - 2 - Debug. Port의 플래그는 디버깅을 당하고 있지 않을 때는 0, 디버깅을 당하고 있을 때에는 0 xffff 값이 들어간다. http: //www. nirsoft. net/kernel_struct/vista/index. html
- Slides: 14