15
악성코드 자동 언패킹 기술 분석 Analysis of Automatic Unpacking Techniques for Malware 20131026박사과정 박 성 빈 전남대학교 정보보안협동과정 시스템보안연구센터

악성코드자동언패킹기술분석 - SSRC Laboratoryssrc.jnu.ac.kr/lsrc_web_new/category/publication/slides/ssc/2013/ssc... · 악성코드자동언패킹기술분석 Analysis

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 악성코드자동언패킹기술분석 - SSRC Laboratoryssrc.jnu.ac.kr/lsrc_web_new/category/publication/slides/ssc/2013/ssc... · 악성코드자동언패킹기술분석 Analysis

악성코드 자동 언패킹 기술 분석

Analysis of Automatic Unpacking Techniques for Malware

2013년 10월 26일

박사과정 박 성 빈

전남대학교

정보보안협동과정

시스템보안연구센터

Page 2: 악성코드자동언패킹기술분석 - SSRC Laboratoryssrc.jnu.ac.kr/lsrc_web_new/category/publication/slides/ssc/2013/ssc... · 악성코드자동언패킹기술분석 Analysis

I 목 차

I 코드 패킹 기술II

I 연구 목적 및 필요성I

I 분석 결과 및 한계점IV

I 자동 언패킹 기술 분석III

I 결론 및 향후 연구V

I Q&AVI

Page 3: 악성코드자동언패킹기술분석 - SSRC Laboratoryssrc.jnu.ac.kr/lsrc_web_new/category/publication/slides/ssc/2013/ssc... · 악성코드자동언패킹기술분석 Analysis

/14

연구 목적 및 필요성

연구의 목적 코드 패킹 기술을 이용한 악성코드의 자동 언패킹 수행

기존 자동 언패킹 기술 분석 및 한계점 제시

악성코드 자동 언패킹 기술에 대한 향후 연구 방향 검토

연구의 필요성 지속적인 악성코드에 대한 보안 위협 발생

윈도우 실행 파일의 코드 패킹에 대한 목적 변화

바이너리 크기 축소, AV 탐지 우회, 안티 리버싱, 프로그램 보안강화

패킹된 정상적인 윈도우 시스템 파일의 70%를 악성코드로 오탐[1]

정확한 분석을 위한 악성코드 언패킹 필요

수많은 악성코드 샘플의 수동 분석의 한계 존재

신속한 대응을 위한 자동 분석 기술 필요

2

Page 4: 악성코드자동언패킹기술분석 - SSRC Laboratoryssrc.jnu.ac.kr/lsrc_web_new/category/publication/slides/ssc/2013/ssc... · 악성코드자동언패킹기술분석 Analysis

/14

코드 패킹 기술 (1/3)

압축기(compressor) 형태 패커 일반적인 코드 패킹 방식[2]

실행 파일의 코드를 패킹 코드로 압축

바이너리 내에 언패킹 루틴 포함

실행 시 언패킹 루틴을 통해 원본 코드 복구

• UPX, ASPack, FSG, PECompact, 등…

3

패킹 실행원본 코드

원본 실행파일

언패킹 루틴

패킹 코드

패킹된 실행파일

언패킹 루틴

원본 코드

실행 시 메모리 이미지

Page 5: 악성코드자동언패킹기술분석 - SSRC Laboratoryssrc.jnu.ac.kr/lsrc_web_new/category/publication/slides/ssc/2013/ssc... · 악성코드자동언패킹기술분석 Analysis

/14

코드 패킹 기술 (2/3)

프로텍터(protector) 형태 패커 디코드 프레임 이동 방식[3]

일반적인 코드 패킹을 확장한 방식

실행 시에 암호화된 형태로 코드 크기 변화 없음

메모리 블록이 필요할 때 복호화 수행

• Yoda’s Protector, Armadillo Packer, ASProtect, 등…

4

패킹 실행원본 코드

원본 실행파일

디코드프레임 이동언패킹 루틴

패킹 코드

패킹된 실행파일

언패킹 루틴

패킹 코드

실행 시 메모리 이미지

원본 코드

Page 6: 악성코드자동언패킹기술분석 - SSRC Laboratoryssrc.jnu.ac.kr/lsrc_web_new/category/publication/slides/ssc/2013/ssc... · 악성코드자동언패킹기술분석 Analysis

/14

코드 패킹 기술 (3/3)

프로텍터(protector) 형태 패커 명령어 가상화 및 에뮬레이터 방식[5]

코드 가상화를 이용한 바이너리 패킹 수행

가상화 도구의 인터프리터를 이용하여 패킹된 바이트 코드 해석

다양한 옵션을 통해 복잡한 가상화 방식의 패킹 가능

• Themida, VMProtect, 등…

5

패킹 실행원본 코드

원본 실행파일

인터프리터

바이트 코드(원본 코드)

패킹된 실행파일

바이트 코드(원본 코드)

실행 시 메모리 이미지

인터프리터

Page 7: 악성코드자동언패킹기술분석 - SSRC Laboratoryssrc.jnu.ac.kr/lsrc_web_new/category/publication/slides/ssc/2013/ssc... · 악성코드자동언패킹기술분석 Analysis

/14

자동 언패킹 기술 분석 (1/6)

기존 자동 언패킹 도구 기존에 연구된 자동 언패킹 기술을 이용한 도구 10종

6

년도 도구 사용 기술 세부 기술

2006 PolyUnpack 정적 디스어셈블리 및 동적 트레이싱 single-step debug APIs

2007 Renovo 전체 시스템 에뮬레이션(Full System Emulation) TEMU(BitBlaze)

2007 Saffron 동적 바이너리 계측 (Dynamic Binary Instrumentation) Pin

2007 OmniUnpack 하드웨어 페이징(Paging) OllyBonE

2008 Azure 하드웨어 기반 가상화 확장 KVM (Kernel based VM)

2008 Pandora’s Bochs 전체 시스템 에뮬레이션(Full System Emulation) Bochs Emulator

2008 Hump&Dump 에뮬레이션 실행 명령 추적 Histogram(Emulator)

2009 MmmBop 동적 바이너리 계측 (Dynamic Binary Instrumentation) MmmBop DIB Engine

2012 Maitland 반가상화(Para-Virtualization) 확장 Dirty page tracking

2013 Cuckoo’s unpack Cuckoo Sandbox 기반 동적 분석 API Hooking

Page 8: 악성코드자동언패킹기술분석 - SSRC Laboratoryssrc.jnu.ac.kr/lsrc_web_new/category/publication/slides/ssc/2013/ssc... · 악성코드자동언패킹기술분석 Analysis

/14

자동 언패킹 기술 분석 (2/6)

동적 접근 방식 PolyUnpack

실행 이후에 나타나는 원본 코드의 특징 이용

동적 트레이싱 과정에서 정적 디스어셈블리 코드와 일대일 비교

싱글 스텝 과정의 일대일 비교로 성능 저하 문제 발생

7

Page 9: 악성코드자동언패킹기술분석 - SSRC Laboratoryssrc.jnu.ac.kr/lsrc_web_new/category/publication/slides/ssc/2013/ssc... · 악성코드자동언패킹기술분석 Analysis

/14

자동 언패킹 기술 분석 (3/6)

전체 시스템 에뮬레이션 방식 Renovo

실행 이후에 특정 시점에서 숨겨진 코드가 실행된다는 특징 이용

TEMU를 이용한 완전한 동적 접근 방식

쉐도우 메모리를 이용하여 메모리 쓰기 작업이 수행된 위치 저장

메모리 쓰기 및 실행 명령에 대한 모니터링 수행

8

memory

Page 10: 악성코드자동언패킹기술분석 - SSRC Laboratoryssrc.jnu.ac.kr/lsrc_web_new/category/publication/slides/ssc/2013/ssc... · 악성코드자동언패킹기술분석 Analysis

/14

자동 언패킹 기술 분석 (4/6)

동적 바이너리 계측 방식 MmmBop

제안한 DBI 엔진을 이용한 Call 명령어 계측

특정 메모리 영역의 기본 블록에서의 호출을 OEP로 가정

• 특정 메모리 영역은 패킹된 파일의 첫 번째 섹션 경계

• 대부분의 패커들이 섹션 정보를 제거하지 않음

9

PACKED APPLICATION

OPERATING SYSTEM

MmmBop DBI Engine

Dispatcher

Code Cache

Basic Block Builder

Context Switch

Page 11: 악성코드자동언패킹기술분석 - SSRC Laboratoryssrc.jnu.ac.kr/lsrc_web_new/category/publication/slides/ssc/2013/ssc... · 악성코드자동언패킹기술분석 Analysis

/14

자동 언패킹 기술 분석 (5/6)

하드웨어 페이징 방식 OmniUnpack

하드웨어 기반 페이지 보호 메커니즘 이용

메모리 쓰기 및 실행에 대한 접근 모니터링

페이지 폴트 발생 시 예외 처리를 이용한 실행 흐름 변경 탐지

• 미리 정의한 위험한 시스템 콜 모니터링

10

Page 12: 악성코드자동언패킹기술분석 - SSRC Laboratoryssrc.jnu.ac.kr/lsrc_web_new/category/publication/slides/ssc/2013/ssc... · 악성코드자동언패킹기술분석 Analysis

/14

자동 언패킹 기술 분석 (6/6)

가상화 및 에뮬레이팅 방식 Maitland

Renovo와 같은 더티 페이지(dirty-page) 추적 방법 이용

반가상화(Para-Virtualization) 확장을 이용한 언패킹

• CPU 레벨이 아닌 OS 커널 레벨에서 수행하기 때문에전가상화 방식보다 오버헤드가 적고 높은 성능 유지

11

Page 13: 악성코드자동언패킹기술분석 - SSRC Laboratoryssrc.jnu.ac.kr/lsrc_web_new/category/publication/slides/ssc/2013/ssc... · 악성코드자동언패킹기술분석 Analysis

/14

분석 결과 및 한계점

자동 언패킹 기술 분석 결과 자동 언패킹 기술의 한계

가상화 방식의 패킹을 이용한 실행 파일에 대한 자동 언패킹 한계

12

도구

일반적인코드 패킹 방식

디코드 프레임이동 방식

명령어 가상화 및에뮬레이터 방식

커스텀 패킹 방식

탐지 언패킹 탐지 언패킹 탐지 언패킹 탐지 언패킹

PolyUnpack O O O X X X - -

Renovo O O O O O X - -

MmmBop O O O O - - - -

OmniUnpack O O O X O - - -

Maitland O O - - - - - -

Page 14: 악성코드자동언패킹기술분석 - SSRC Laboratoryssrc.jnu.ac.kr/lsrc_web_new/category/publication/slides/ssc/2013/ssc... · 악성코드자동언패킹기술분석 Analysis

/14

결론 및 향후 연구

결 론 대부분 주요 방법으로 메모리 추적 기법 사용

실행 흐름이 전환되는 순간을 감지하여 OEP 자동 탐지

패킹된 코드는 메모리 쓰기/실행 작업을 수행한다는 특징 이용

향후 연구 가상화 및 에뮬레이터 방식을 이용한 악성코드의 자동 언패킹

가상화 기술과 함께 압축 및 안티 리버싱 기술이 적용 된 악성코드

수동 언패킹은 가능하나 완벽한 자동 언패킹의 한계 존재

에뮬레이팅 방식 자동 언패킹 시스템의 성능 저하 문제 해결

전체 시스템 에뮬레이션 및 동적 바이너리 계측 방식 문제

비교적 높은 정확도를 보이지만 고질적인 성능 저하 문제 발생

기존 연구의 반가상화 이용 방법에 대한 개선 및 확장 가능성 검토

13

Page 15: 악성코드자동언패킹기술분석 - SSRC Laboratoryssrc.jnu.ac.kr/lsrc_web_new/category/publication/slides/ssc/2013/ssc... · 악성코드자동언패킹기술분석 Analysis

/14

Q&A감사합니다.

14