ìê° ê¸°ë° í¤ ìì± ë°©ìì ì´ì©í ìí° ëë²ê¹ ê¸°ë² - SERSC
ìê° ê¸°ë° í¤ ìì± ë°©ìì ì´ì©í ìí° ëë²ê¹ ê¸°ë² - SERSC ìê° ê¸°ë° í¤ ìì± ë°©ìì ì´ì©í ìí° ëë²ê¹ ê¸°ë² - SERSC
시간 기반 키 생성 방식을 이용한 안티 디버깅 기법 3.제안하는 시간 기반 안티 디버깅 기법 사람이 디버깅하면 단일 스태핑 등으로 실행 속도가 현저하게 느려져서, 두 지점 간 실행 시간 이 증가한다. 실행 환경에 따라 프로세스 실행 시간이 다양하기 때문에 실행 시간을 키 값으로 바 로 적용하는 것은 힘들다. 프로세스의 실행 시간의 범위를 정하고 시프트 연산을 통해서 실행 시 간의 범위 내에 시간의 차분 값이 항상 일정한 값이 나오도록 만들었다. 그리고 무결성을 보장하 기 위해 특정 영역을 시간 차분 값과 같이 해시함수의 입력 값으로 사용하였다. 프로세스 실행 시 디버거가 첨부되면 두 지점 간 실행 시간이 증가로 인해 올바르지 못한 키 값이 생성 되고, 올바 르지 못한 키 값으로 복호화로 인해 잘못된 데이터로 인한 오류가 발생한다. 기존 조건 구문 방식 은 점프문을 통해 간단히 우회가 가능하였지만, 제안하는 기법은 키를 생성하지 못하면 잘못된 복 호화로 인해 자가 변조가 일어나서 우회하기 어렵다. 3.1 키 생성 방법 실행 코드의 두 지점의 실행 시간 , 을 각각 측정한다. 측정한 두 값 , 에 임계점에 맞는 시프트 연산을 한다. (그림 3) 각각 시프트 연산 결과 값 ′ , ′ 의 차분 값을 계산한다. ′ 계산된 차분 값 ′ 과 실행 코드의 특정 영역 IB를 더하여 해시 함수(hash function) 취한 ′ 값을 키 값으로 생성한다. ′ [그림 3] 시프트 연산 [Fig. 3] Shift operation 프로세스 실행 시간 지연 범위의 임계점을 설정하는 방법으로 시프트 연산을 사용하였다. 임계 점 범위 내의 실행 시간의 차이에서는 키 값이 동일하게 생성되어 정당한 키 값 을 만들 수 있다. 하지만 프로세스에 디버거가 첨부되면 프로세스 실행 지연 시간이 증가한다. 이 때, ′ 프로세스 실행 시간 임계점을 벗어나서 다른 키 값 ′ 이 형성된다. (∵ ′ ′ ≠ ) 잘못된 키 값으로 코드를 실행하면 제대로 복호화가 일어나지 않아 코드의 오류를 발견할 수 296
보안공학연구논문지 (Journal of Security Engineering), 제 10권 제 3호 2013년 6월 있다. 그리고 실행 코드를 변조하면 해시 값이 달라지게 되어서 오류가 탐지 된다. 즉, 무결성도 보장한다. 따라서 디버거가 첨부되었는지 자동으로 탐지 할 수 있게 된다. 또한 해시 함수의 매개 변수 IB는 설계자가 임의로 정한 실행 코드의 특정 영역이다. 공격자는 특정 영역 IB 값을 알 수 없으므로 키 값을 생성할 수 없게 되고, 디버거를 첨부하는 행위를 방지 할 수 있다. [그림 4] 키 생성 방법 [Fig. 4] Key generation mechanism 3.2 제안하는 기법을 적용한 기존 기법[5,9] 개선 제안하는 키 생성 방식을 통한 안티 디버깅 기법은 디버깅을 통한 동적 분석을 어렵게 한다. 하 지만 정적 분석을 통해 시간 값을 받아 오는 위치를 알면 취약해 질 수 있다. 기존 기법은 정적분 석에 대해 고려하였지만 디버깅을 통한 동전분석에 대해 취약할 수 있다. 기존 기법을 동적 분석 과 정적 분석 모두 어렵게 하기 위해 제안 하는 키 생성 방식을 통해 개선하였다. 3.2.1 코드 암호화 기법 자가 변조 암호화 기법[5]은 코드를 암호화함으로써 정적 분석하기 어렵게 하였다. 하지만 디버 거를 이용한 동적 분석을 막기는 어렵다. 제안하는 시간 기반 키 생성 방식을 적용하여 디버깅을 통한 동적 분석도 어렵게 개선하였다. 3.2.1.1 암호화 과정 ∙프로그램의 환경을 고려하여 임계점을 설정한다. ∙실행 프로세스의 두 지점의 실행 시간을 각각 측정한다. , ∙측정한 실행 시간을 각각 시프트 연산한다. ′ ′ , 297
- Page 1 and 2: 보안공학연구논문지 (Journa
- Page 3 and 4: 보안공학연구논문지 (Journa
- Page 5: 보안공학연구논문지 (Journa
- Page 9 and 10: 보안공학연구논문지 (Journa
- Page 11 and 12: 보안공학연구논문지 (Journa
- Page 13 and 14: 보안공학연구논문지 (Journa
보안공학연구논문지 (Journal of Security Engineering), 제 10권 제 3호 2013년 6월<br />
있다. 그리고 실행 코드를 변조하면 해시 값이 달라지게 되어서 오류가 탐지 된다. 즉, 무결성도<br />
보장한다. 따라서 디버거가 첨부되었는지 자동으로 탐지 할 수 있게 된다. 또한 해시 함수의 매개<br />
변수 IB는 설계자가 임의로 정한 실행 코드의 특정 영역이다. 공격자는 특정 영역 IB 값을 알 수<br />
없으므로 키 값을 생성할 수 없게 되고, 디버거를 첨부하는 행위를 방지 할 수 있다.<br />
[그림 4] 키 생성 방법<br />
[Fig. 4] Key generation mechanism<br />
3.2 제안하는 기법을 적용한 기존 기법[5,9] 개선<br />
제안하는 키 생성 방식을 통한 안티 디버깅 기법은 디버깅을 통한 동적 분석을 어렵게 한다. 하<br />
지만 정적 분석을 통해 시간 값을 받아 오는 위치를 알면 취약해 질 수 있다. 기존 기법은 정적분<br />
석에 대해 고려하였지만 디버깅을 통한 동전분석에 대해 취약할 수 있다. 기존 기법을 동적 분석<br />
과 정적 분석 모두 어렵게 하기 위해 제안 하는 키 생성 방식을 통해 개선하였다.<br />
3.2.1 코드 암호화 기법<br />
자가 변조 암호화 기법[5]은 코드를 암호화함으로써 정적 분석하기 어렵게 하였다. 하지만 디버<br />
거를 이용한 동적 분석을 막기는 어렵다. 제안하는 시간 기반 키 생성 방식을 적용하여 디버깅을<br />
통한 동적 분석도 어렵게 개선하였다.<br />
3.2.1.1 암호화 과정<br />
∙프로그램의 환경을 고려하여 임계점을 설정한다.<br />
∙실행 프로세스의 두 지점의 실행 시간을 각각 측정한다. , <br />
∙측정한 실행 시간을 각각 시프트 연산한다. ′ ′<br />
, <br />
297