더미다(Themida)

실제 프로그램에 대한 암호화를 진행하여도 좋지만, 모든 보안 요소를 직접 구현한다는 것은 무리이다. 따라서 부분적으로 직접 코드를 암호화 하고 그 위에 패커를 통해, 보호하는 방법이 유용한 방법이라 할 수 있다. 그럼 대표적인 상용 패커 더미다(Themida)에 대해 애기해 보도록 하겠다. 더미다는 역분석을 못하게 한다기 보다는 어차피 완전히 막기는 어렵기 때문에 분석을 지치도록 하자는 목적을 가진 패커로써, 상용 패커중 강력하기로 소문난 패커이다. 전문 언패커가 되고자 한다면, 한번쯤 분석을 시도해 보는것도 좋다. 아마 많은 분석가 분들이 이 패커에 대해 언패킹을 시도 하고 있으며, 대다수 분석가들도 혀를 내두를 정도로 많은 데이터를 포함하고 있다.

툴 사용은 쉽게 이용할 수 있다. http://www.oreans.com/ 에서 다운로드 가능하며, 데모버전을 통해 테스트를 진행해 볼 수 있다.


[그림] 안티 디버깅 기능도 함께 내장되어 있다

대부분의 안티 디버깅도 내장하고 있어 자체 개발한 보호 코드와 함께 이용하면 강력한 안티 디버깅을 완성할 수 있다. 개발사에서는 Themida이외에도 WinLicense라는 라이선스 관리 기능을 포함한 제품도 함께 제공하므로 본인 혹은 회사에서 개발한 프로그램을 보호하는데 유용할 것이라 판단된다.

더미다는 여러 가지 기능을 선택하여 패킹을 진행할 수 있다. 대략적인 메뉴들의 기능들에 대해 알아보자.

Protection Options: 보호수준을 정하고, 메모리, 모니터링, EP등 보호할 항목을 활성화 하거나 비활성화 할 수 있다. 안티 디버깅도 여기 포함 되며, 활성화/비활성화 할 수 있다. 기본적으로 Anti-Patching을 제외하고 활성화 된다.

    Anti-Debugger Detection: 안티디버깅 기능을 조절할 수 있다. “Ultra”로 설정하면, 바이러스, 루트킷등이 설치 여부도 감지하게 된다.

    Auti Dumpers: 메모리 덤프를 생성할 수 없도록 막는다.

    Entry Point Obfuscation: Entry point를 제거하고 암호화 한다.

    Resources Encryption: 파일에 들어가는 리소스 파일을 암호화 한다.

    VMWare/Virtual PC: 가상환경에서 실행이 가능하도록 할 지 설정한다. 체크시 실행가능

    Advanced API-Wrapping: API를 호출할 때 분석이 어렵도록 여러 번 포장한다.

    Anti-Patching: 파일에 대해 수정을 막는다.

    Memory Guard: 메모리상에서 패치 하는 것을 막는다.

    Compression: 압축 항목을 지정한다.

    Monitor Blockers: Monitor 프로그램(Filemon, Regmon등)을 감지한다.

Protection Macros: 앞서 진행한 맵파일을 통해 매크로를 찾은후 해당 매크로를 보호해 주는 기능이다.

Virtual Machine: 더미다는 여러 보호 기법중 VM(Virtual Machine) 기반으로 보호를 진행하게 된다.

    Entry Point Virtualization: 프로그램 진입 지점으로부터 몇 개를 명령을 가상화 할 지 지정하게 된다. 기본값은 0이다.

    API Virtualization Level: API 함수에 대해 가상화를 진행할 수 있는데, 그 수준를 지정할 수 있다. 값이 높을수록 분석이 어려워진다. 기본값은 3이다.

    Multi Branch Technology: 분기문에 불필요한 분기 정크 코드를 추가해, 분석을 어렵도록 한다.

Customized Dialogs: 더미다에서 발생한 오류창의 내용을 기본값에서 수정할 수 있는 옵션이다. 기본적으로 보호모드에 해킹툴이나, 디버깅툴을 탐지하였을 때 나타난다. 회사에서 이용한다면 이 메시지 정책에 맞게 변경하는 것이 좋다.

Advanced Options: 그외 옵션으로, PE 파일 구조에 대한 조작이나, 외부 DLL 거부, .NET어셈블리 감지등의 추가 옵션을 설정할 수 있다.

이외 많은 공개 패커들이 있지만, 필자 역시 검증된 패커 이 외에 공개 패커는 거희 사용하지 않는다. 그래서 여기서 그러한 도구들을 소개하는건 여러분에게 많은 도움이 되지는 않을 것같다. (필자 역시 대부분 프로그램 컴파일시 더미다와 함께 몇가지 자체 보호코드를 삽입한다.)

하지만 무조건 더미다만 써야한다는 것은 아니다. 본인이 이용하고자 하는 프로그램에 문제는 없는지 확인후 패커를 선택하기 바라며, 일부 백신에서는 패킹한 프로그램을 바이러스로 진단하는 경우가 종종있다. 이를 피할 수 있는 최소한의 방법으로 패킹시 프로그램의 이름과 버전 정보를 입력해 주도록 하자. 이를 통해 약간의 오탐은 방어 할 수 있고, 그 외의 경우는 백신 업체에게 예외 처리를 부탁해야 한다. J

Facebook Comments

Leave A Reply

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

This site uses Akismet to reduce spam. Learn how your comment data is processed.