04.07.2014 Views

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

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

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

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

시간 기반 키 생성 방식을 이용한 안티 디버깅 기법<br />

2.1.3 시간 기반 탐지<br />

지시된 명령의 실행 시간과 정상적인 실행 시간과 비교하는 기술이다. 디버거 안에서 프로그램<br />

이 실행되거나 단일 스태핑이 일어날 때, 명령의 실행 사이의 지연시간이 커지게 된다. 그 실행 시<br />

간 사이의 차가 임계점 범위 내에 있는지 검사한다.<br />

2.2 코드 암호화 기법<br />

일반 적인 암호화 방식은 프로그램 전체를 암호화 하여 저장하고 복호화 루틴은 프로그램의 엔<br />

트리 포인트처럼 암호화된 바디와 셋에 보통 추가되어진다. 암호화된 프로그램은 한 비트를 변조<br />

하면 한 비트 이상이 변하게 되므로 정적분석을 통한 취약점을 찾기 어렵다. 하지만 복호화 할 때<br />

코드 전체가 동시에 복호화 되어서 공격자는 디버거를 통해 복호화 되는 순간 기억장치 영역을 내<br />

용만 가져오면 된다. 요구 시(On-demand) 암호화 방식은 프로그램 실행 시 프로그램 전체가 노출<br />

되는 것을 막기 위해서 고안되었다. 일반적인 암호화 방법과 다르게 프로세스 실행 시 필요만 부<br />

분만 복호화 하해서 실행한 후 다시 암호화 된다[10].<br />

요구 시(On-demand) 복호화 방식을 이용한 자가 변조 코드 암호화 기법[5]은 b영역을 암호화<br />

하기 위해서 b의 영역이 아닌 a영역을 해시함수를 통해 키 값을 생성해서 그 키 값으로 암호화 하<br />

는 방식이다. 코드 영역 b를 암호화 할 때 영역 b가 아닌 다른 영역 a에서 해시함수를 통해 키를<br />

생성해서 암호화해서 저장한다. a부분이 변조되면 해시 값이 변하게 되어 무결성이 보장되고 암호<br />

화된 영역은 기밀성이 보장 된다.<br />

[그림 1] 자가 변조 코드 암호화 기법<br />

[Fig. 1] Tamper resistant code encryption<br />

[그림 1]은 자가 변조 코드 암호화 기법의 실행 과정이다. 암호화된 영역 를 복호화 하<br />

기 위해 다른 영역인 a영역의 해시함수 값을 이용해 복호화 키 를 구한다. 복호화 키 <br />

294

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

Saved successfully!

Ooh no, something went wrong!