ìê° ê¸°ë° í¤ ìì± ë°©ìì ì´ì©í ìí° ëë²ê¹ ê¸°ë² - SERSC
ìê° ê¸°ë° í¤ ìì± ë°©ìì ì´ì©í ìí° ëë²ê¹ ê¸°ë² - SERSC
ìê° ê¸°ë° í¤ ìì± ë°©ìì ì´ì©í ìí° ëë²ê¹ ê¸°ë² - SERSC
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
시간 기반 키 생성 방식을 이용한 안티 디버깅 기법<br />
시간 값 을 읽어 들이고 시간 값 오차 임계점 CT만큼 시프트 연산 ′ 하여 저장한다. 목표 블<br />
록의 실행한 후 다시 시간 값 을 읽어 들이고 시프트 연산 ′ ′<br />
후 차분 값 <br />
′ 을 계산한다. 조<br />
건문 응답 방식을 통한 실행 시간 측정값이 유효 범위에 있을 때만 복원 루틴을 시키는 방식이 아<br />
′<br />
닌 계산된 값 <br />
′ 을 위장된 명령어 셋에 더한다. 디버거가 첨부되면 실행 시간의 증가로 인한<br />
올바르지 않는 키가 생성되고 올바르지 않은 키로 패치된 위장명령어 셋은 복원 루틴 과정 시 원<br />
본 명령어 셋이 복구 되지 않으면서 오류가 발생한다.<br />
4. 개선된 기법의 보안 분석<br />
4.1 코드 암호화 기법<br />
기존 코드 암호화 기법은 코드를 암호화를 통해 정적분석을 어렵게 하지만 디버거를 통한 동적<br />
분석을 통해 복호화 키를 얻을 수 있다. 개선된 기법은 프로세스가 실행 될 때, 프로세스 실행 시<br />
간을 사용하여 특정 영역과 같이 해시 함수를 통해 키 값을 생성한다. 올바른 키 값을 생성하지<br />
못하면 보호된 영역을 실행시키지 못한다. 또한 동적 분석을 위해 디버거를 첨부하면 프로세스의<br />
실행시간 증가로 인한 실행시간의 차가 임계점을 벗어나 올바르지 못한 키 값이 생성된다. 올바르<br />
지 못한 키 값으로 복호화 할 경우 원본 데이터와 다른 데이터가 형성된다. 이 데이터로 실행될<br />
시 잘못된 데이터로 인한 자가 변조가 일어나서 오류를 발생시킨다. 즉 디버깅을 통한 동적 분석<br />
을 어렵게 한다.<br />
4.2 명령어 위장 기법<br />
명령어 위장 기법은 목표 블록의 실행 시간을 측정하여 실행 시간이 유효 시간 범위 내에 있는<br />
지 조건 구문을 통해 복원 루틴을 실행시킨다.<br />
[표 2] 분석<br />
[Fig. 2] Analysis<br />
코드암호화 기법[5]<br />
개선된 코드<br />
암호화 기법<br />
명령어 자가 변조<br />
기법<br />
개선된 명령어<br />
자가 변조 기법<br />
디버깅 탐지 X O O O<br />
우회 O X O X<br />
개선 후<br />
추가 발생<br />
연산<br />
-<br />
복호화 할 때마다<br />
rdtsc 2회<br />
shr 2회<br />
sub 1회<br />
-<br />
명령어를 복원할<br />
때마다<br />
shr 2회<br />
add 1회<br />
300