시간 기반 키 생성 방식을 이용한 안티 디버깅 기법 - SERSC

시간 기반 키 생성 방식을 이용한 안티 디버깅 기법 - SERSC 시간 기반 키 생성 방식을 이용한 안티 디버깅 기법 - SERSC

04.07.2014 Views

시간 기반 키 생성 방식을 이용한 안티 디버깅 기법 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

보안공학연구논문지 (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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!