반응형
이 안티 디버깅을 알기 위해서는 다음 Windows의 예외처리 특징에 대해 알아야한다.
※Windows가 프로세스에 대한 예외를 처리할 경우 2가지로 나뉘며 특징은 다음과 같다.
1.일반적인 실행의 경우 : 예외처리를 프로세스에 맡긴다.(프로그래머 정의 : try-except문)
2.디버거에서 실행될 경우 : 예외처리를 디버거에게 맡긴다. 이 경우 프로그래머가 정의한 예외처리문은 거치지 않는다.
두차이를 이용하여 악성코드는 의도된 예외를 발생시키는데 예외에 사용되는 용도로 PAGE_GUARD를 사용한다.
PAGE_GUARD는 메모리 보안속성인데 PAGE_GUARD가 설정된 메모리에 접근할경우 예외가 발생한다.
Win32 API인 VirtualProtect의 3번째 parameter를 사용하여 메모리의 보안속성을 PAGE_GUARD로 설정할 수 있다.
악성코드는 PAGE_GUARD가 걸린 메모리에 접근하여 예외를 발생시킨다. 디버거에서 실행될 경우 Windows는 예외처리를 디버거에게 맡기기 때문에
제작자의 예외처리문은 진행되지 않고 이것을 통하여 디버깅을 탐지하게 된다.
<차단화면>
※참고
[블로그 : http://ezbeat.tistory.com/220 ]
[서적 : 리버싱핵심원리]
반응형
'Security > Reversing' 카테고리의 다른 글
[Anti-VM] - 어셈블리 STR편 (0) | 2018.01.14 |
---|---|
PEB구조체 LDR을 이용한 Kernel32.dll주소 찾기. (0) | 2017.12.07 |
Zw API와 Nt API의 차이 (0) | 2017.05.11 |
[AntiVM 탐지 우회] (0) | 2017.03.27 |
※함수호출규약 (0) | 2017.03.15 |
댓글