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

in conditional method. We also introduce scheme that setting scope of the execution time by shift operation<br />

instead of simply induce the value of the key by specific area of the program’s execution time. It can set<br />

a range of run-time errors can be occurred by system hardware so scheme can be applied flexibly in the<br />

various environments.<br />

Keywords : anti-debugging, dynamic analysis, time-based, hash function, code encryption<br />

1. 서론<br />

프로그램 실행 시 동적 분석을 가능하게 하는 디버깅 도구는 소프트웨어의 개발 과정에서 오류<br />

나 버그를 찾아 보완하는데 필수적인 도구이다. 이러한 디버깅 도구는 프로그램의 취약성을 발견<br />

이나 지적재산권이 포함된 알고리즘과 같은 프로그램 내부의 비밀 정보 추출과 같은 악의적인 역<br />

공학 도구로 악용될 수 있다. 이와 같이 발견된 취약성은 주로 시스템 권한 상승과 같은 공격에<br />

이용될 수 있으며, 프로그램 내부에 포함된 비밀 정보 추출은 소프트웨어 지적 재산권 침해에 악<br />

용될 수 있다.<br />

소프트웨어 보호 방법으로 코드 난독화, 코드 암호화, 코드 변조 방지 기술과 같은 방법들이 제<br />

안되고 있다. 이와 같은 방법들은 코드의 본래 기능성은 유지하면서 코드를 의미 없는 코드로 변<br />

환시키거나 복잡하게 만들어서 정적 분석을 어렵게 할 수 있지만 디버거를 이용해서 실행 시간 동<br />

안의 프로그램의 동작 행위를 분석하는 동적 분석까지는 방어하기 어렵다[3]. 이에 대한 대응책으<br />

로 안티 디버깅 기법이 있다. 안티 디버깅은 디버깅 도구들을 이용해 공격자가 동적 분석을 하려<br />

고 할 때 디버거를 탐지하고, 디버거 발견 시 디버거를 무력화 시킬 수 있는 기술이다[2][3]. 기존<br />

의 안티 디버깅 기법[1][6]들은 디버거 탐지 방법 중심으로 연구되어 왔다. Window에서 제공하는<br />

디버거 탐지 방법은 API 형태로 제공된다[11]. 제공된 라이브러리 Win32에 있는 함수를 호출하여<br />

시스템 정보를 검사해서 돌려받는 리턴 값을 비교하여 디버깅이 첨부되었는지 판단한다. 이렇게<br />

조건문 응답 방식으로 구현되어 있는 방식은 리턴 값을 조작하거나 점프 구문을 통해 우회 공격이<br />

용이하다.<br />

본 논문에서는 시간 기반 키 생성 방식을 통한 우회 공격을 어렵게 하는 안티 디버깅 기법을<br />

제안한다. 프로세스 실행 시간을 키 값으로 사용하면 실행 환경에 따라 변하는 키 값으로 제대로<br />

복호화가 되지 않는다. 다양한 실행 환경에 맞게 실행 시간의 유효 범위를 주기 위해서 시프트 연<br />

산을 사용한다. 시프트 연산을 통하여 실행 지연 시간이 오차 범위 내에서는 실행 시간의 차분 값<br />

이 0이 나오게 하고, 실행 지연 시간이 오차 범위 밖에서는 실행 시간의 차분 값이 다른 값이 되<br />

게 만든다. 그리고 0의 노출을 막기 위해서 특정 영역을 0과 같이 패치하여 해시함수를 취한 값을<br />

키 값으로 생성하였고 키 값으로 쓰인 특정 영역이 변조되면 해시함수의 특성에 따라 무결성을 보<br />

장해준다. 사전에 정해 놓은 영역의 실행 시간차가 오차 범위 내에 있으면 정당한 키가 생성 된다.<br />

하지만 실행 시간차가 오차 범위를 넘어서면(즉, 디버거가 첨부 되었을 때) 다른 키 값이 형성된<br />

다. 올바르지 않은 키 값으로 복호화 하면 자가 변조된 코드영역은 비정상적으로 생성 되어서 그<br />

292

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

Saved successfully!

Ooh no, something went wrong!