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 />

시간 값 을 읽어 들이고 시간 값 오차 임계점 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

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

Saved successfully!

Ooh no, something went wrong!